73 lines
2.4 KiB
PHP
73 lines
2.4 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use Symfony\Contracts\HttpClient\ResponseInterface;
|
|
use Lewisdale\Webmentions\EndpointParser;
|
|
|
|
|
|
class EndpointParserTest extends TestCase {
|
|
public function testParsesRelativeEndpointFromResponseHeaders() {
|
|
$response = $this->createStub(ResponseInterface::class);
|
|
|
|
$response->method('getHeaders')
|
|
->willReturn([
|
|
"link" => ["</test/1/webmention>; rel=webmention"],
|
|
]);
|
|
|
|
$response->method('getInfo')
|
|
->willReturn('https://webmention.rocks/test/1');
|
|
|
|
$this->assertSame("https://webmention.rocks/test/1/webmention", EndpointParser::parse($response));
|
|
}
|
|
|
|
public function testParsesRelativeEndpointWithQuotedRelInResponseHeader() {
|
|
$response = $this->createStub(ResponseInterface::class);
|
|
|
|
$response->method('getHeaders')
|
|
->willReturn([
|
|
"link" => ['</test/5/webmention>; rel="webmention"'],
|
|
]);
|
|
|
|
|
|
$response->method('getInfo')
|
|
->willReturn('https://webmention.rocks/test/5');
|
|
|
|
$this->assertSame("https://webmention.rocks/test/5/webmention", EndpointParser::parse($response));
|
|
}
|
|
|
|
public function testParsesAbsoluteEndpointFromHeader() {
|
|
$response = $this->createStub(ResponseInterface::class);
|
|
|
|
$response->method('getHeaders')
|
|
->willReturn([
|
|
"link" => ['<https://webmention.rocks/test/2/webmention>; rel="webmention"'],
|
|
]);
|
|
|
|
|
|
$response->method('getInfo')
|
|
->willReturn('https://webmention.rocks/test/2');
|
|
|
|
$this->assertSame("https://webmention.rocks/test/2/webmention", EndpointParser::parse($response));
|
|
}
|
|
|
|
public function testParsesRelativeEndpointFromLink() {
|
|
$content = <<<XML
|
|
<html>
|
|
<head>
|
|
<link rel="webmention" href="/test/4/webmention" />
|
|
</head>
|
|
<body>
|
|
<h1>Some content</h1>
|
|
</html>
|
|
XML;
|
|
|
|
$response = $this->createStub(ResponseInterface::class);
|
|
$response->method('getHeaders')->willReturn([]);
|
|
$response->method('getContent')->willReturn($content);
|
|
$response->method('getInfo')
|
|
->willReturn('https://webmention.rocks/test/4');
|
|
|
|
$this->assertSame("https://webmention.rocks/test/4/webmention", EndpointParser::parse($response));
|
|
|
|
}
|
|
} |