From 0360c57c79eb1d19880172ed5e68086907aa0fd6 Mon Sep 17 00:00:00 2001 From: Slade Date: Wed, 5 Feb 2020 19:46:13 -0700 Subject: [PATCH] Update regex to detect external links with attachments Fixes #4359 --- app/ExternalLink/AttachmentLinkProvider.php | 2 +- tests/units/ExternalLink/AttachmentLinkProviderTest.php | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/ExternalLink/AttachmentLinkProvider.php b/app/ExternalLink/AttachmentLinkProvider.php index 706ac1dd4..60416459b 100644 --- a/app/ExternalLink/AttachmentLinkProvider.php +++ b/app/ExternalLink/AttachmentLinkProvider.php @@ -74,7 +74,7 @@ class AttachmentLinkProvider extends BaseLinkProvider implements ExternalLinkPro */ public function match() { - if (preg_match('/^https?:\/\/.*\.([^\/]+)$/', $this->userInput, $matches)) { + if (preg_match('/^https?:\/\/.*\/.*\.([^\/]+)$/', $this->userInput, $matches)) { return $this->isValidExtension($matches[1]); } diff --git a/tests/units/ExternalLink/AttachmentLinkProviderTest.php b/tests/units/ExternalLink/AttachmentLinkProviderTest.php index 531907d78..917174d8a 100644 --- a/tests/units/ExternalLink/AttachmentLinkProviderTest.php +++ b/tests/units/ExternalLink/AttachmentLinkProviderTest.php @@ -40,6 +40,9 @@ class AttachmentLinkProviderTest extends Base $attachmentLinkProvider->setUserTextInput(' https://kanboard.org/folder/archive.tar '); $this->assertTrue($attachmentLinkProvider->match()); + $attachmentLinkProvider->setUserTextInput('https://www.github.io/folder/archive.zip'); + $this->assertTrue($attachmentLinkProvider->match()); + $attachmentLinkProvider->setUserTextInput('http:// invalid url'); $this->assertFalse($attachmentLinkProvider->match()); @@ -54,6 +57,12 @@ class AttachmentLinkProviderTest extends Base $attachmentLinkProvider->setUserTextInput('https://kanboard.org/folder/document.do'); $this->assertFalse($attachmentLinkProvider->match()); + + $attachmentLinkProvider->setUserTextInput('https://www.github.io/folder/document.html'); + $this->assertFalse($attachmentLinkProvider->match()); + + $attachmentLinkProvider->setUserTextInput('https://www.github.io'); + $this->assertFalse($attachmentLinkProvider->match()); } public function testGetLink()