assertNull($job->discoverWebmentionEndpoint(config('app.url'))); $this->assertNull($job->discoverWebmentionEndpoint('/notes/tagged/test')); } /** @test */ public function discoverWebmentionEndpointFromHeaderLinks(): void { $url = 'https://example.org/webmention'; $mock = new MockHandler([ new Response(200, ['Link' => '<' . $url . '>; rel="webmention"']), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $job = new SendWebMentions(new Note()); $this->assertEquals($url, $job->discoverWebmentionEndpoint('https://example.org')); } /** @test */ public function discoverWebmentionEndpointFromHtmlLinkTags(): void { $html = ''; $mock = new MockHandler([ new Response(200, [], $html), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $job = new SendWebMentions(new Note()); $this->assertEquals( 'https://example.org/webmention', $job->discoverWebmentionEndpoint('https://example.org') ); } /** @test */ public function discoverWebmentionEndpointFromLegacyHtmlMarkup(): void { $html = ''; $mock = new MockHandler([ new Response(200, [], $html), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $job = new SendWebMentions(new Note()); $this->assertEquals( 'https://example.org/webmention', $job->discoverWebmentionEndpoint('https://example.org') ); } /** @test */ public function ensureEmptyNoteDoesNotTriggerAnyActions(): void { $job = new SendWebMentions(new Note()); $this->assertNull($job->handle()); } /** @test */ public function weResolveRelativeUris(): void { $uri = '/blog/post'; $base = 'https://example.org/'; $job = new SendWebMentions(new Note()); $this->assertEquals('https://example.org/blog/post', $job->resolveUri($uri, $base)); } /** @test */ public function weSendAWebmentionForANote(): void { $html = ''; $mock = new MockHandler([ new Response(200, [], $html), new Response(202), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $note = new Note(); $note->note = 'Hi [Aaron](https://aaronparecki.com)'; $note->save(); $job = new SendWebMentions($note); $job->handle(); $this->assertTrue(true); } /** @test */ public function linksInNotesCanNotSupportWebmentions(): void { $mock = new MockHandler([ new Response(200), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); $this->app->instance(Client::class, $client); $job = new SendWebMentions(new Note()); $this->assertNull($job->discoverWebmentionEndpoint('https://example.org')); } }