diff --git a/src/app/Markdown/MediaUrlResolver.php b/src/app/Markdown/MediaUrlResolver.php new file mode 100644 index 0000000..1fd476d --- /dev/null +++ b/src/app/Markdown/MediaUrlResolver.php @@ -0,0 +1,14 @@ +resolver = new MediaUrlResolver(); + } + + #[DataProvider('nonMediaUrls')] + public function test_returns_null_for_non_media_urls(string $url): void + { + $this->assertNull($this->resolver->resolve($url)); + } + + public static function nonMediaUrls(): array + { + return [ + 'normal image' => ['/photo.jpg'], + 'svg' => ['/icon.svg'], + 'png' => ['/avatar.png'], + 'no extension' => ['/foo'], + 'empty string' => [''], + 'javascript scheme' => ['javascript:alert(1)'], + 'host-only' => ['http://'], + 'youtu.be lookalike host' => ['https://example.com/youtu.be-fake/abc'], + ]; + } +}