From f37ba14a8fbd78a85e2ac39f873b495758f7338f Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 10 Nov 2023 11:53:33 +0000 Subject: [PATCH 1/3] feat: domain validator check scheme --- src/Validator/Domain.php | 4 ++++ tests/Validator/DomainTest.php | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/Validator/Domain.php b/src/Validator/Domain.php index aea0a21c..3c15d294 100644 --- a/src/Validator/Domain.php +++ b/src/Validator/Domain.php @@ -45,6 +45,10 @@ public function isValid($value): bool return false; } + if (strpos($value, '://') !== false) { + return false; + } + if (\filter_var($value, FILTER_VALIDATE_DOMAIN) === false) { return false; } diff --git a/tests/Validator/DomainTest.php b/tests/Validator/DomainTest.php index ca14a20e..eb5ccda6 100644 --- a/tests/Validator/DomainTest.php +++ b/tests/Validator/DomainTest.php @@ -1,4 +1,5 @@ assertEquals(true, $this->domain->isValid('example.io')); $this->assertEquals(true, $this->domain->isValid('example.org')); $this->assertEquals(true, $this->domain->isValid('example.org')); + $this->assertEquals(false, $this->domain->isValid('http://example.com')); + $this->assertEquals(false, $this->domain->isValid('https://example.com')); + $this->assertEquals(false, $this->domain->isValid('ftp://example.com')); $this->assertEquals(false, $this->domain->isValid(false)); $this->assertEquals(false, $this->domain->isValid('.')); $this->assertEquals(false, $this->domain->isValid('..')); From 641a7a04fbe3523cbe04a4ed0f7159601dc07480 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:03:03 +0000 Subject: [PATCH 2/3] chore: use FILTER_FLAG_HOSTNAME, more test cases --- src/Validator/Domain.php | 6 +----- tests/Validator/DomainTest.php | 5 +++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Validator/Domain.php b/src/Validator/Domain.php index 3c15d294..00570d65 100644 --- a/src/Validator/Domain.php +++ b/src/Validator/Domain.php @@ -49,11 +49,7 @@ public function isValid($value): bool return false; } - if (\filter_var($value, FILTER_VALIDATE_DOMAIN) === false) { - return false; - } - - return true; + return \filter_var($value, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) !== false; } /** diff --git a/tests/Validator/DomainTest.php b/tests/Validator/DomainTest.php index eb5ccda6..2ed7c594 100644 --- a/tests/Validator/DomainTest.php +++ b/tests/Validator/DomainTest.php @@ -31,13 +31,14 @@ public function testIsValid() $this->assertEquals(true, $this->domain->isValid('example.com')); $this->assertEquals(true, $this->domain->isValid('subdomain.example.com')); $this->assertEquals(true, $this->domain->isValid('subdomain.example-app.com')); - $this->assertEquals(true, $this->domain->isValid('subdomain.example_app.com')); $this->assertEquals(true, $this->domain->isValid('subdomain-new.example.com')); - $this->assertEquals(true, $this->domain->isValid('subdomain_new.example.com')); $this->assertEquals(true, $this->domain->isValid('localhost')); $this->assertEquals(true, $this->domain->isValid('example.io')); $this->assertEquals(true, $this->domain->isValid('example.org')); $this->assertEquals(true, $this->domain->isValid('example.org')); + $this->assertEquals(false, $this->domain->isValid('example.com/path')); + $this->assertEquals(false, $this->domain->isValid('subdomain_new.example.com')); + $this->assertEquals(false, $this->domain->isValid('subdomain.example_app.com')); $this->assertEquals(false, $this->domain->isValid('http://example.com')); $this->assertEquals(false, $this->domain->isValid('https://example.com')); $this->assertEquals(false, $this->domain->isValid('ftp://example.com')); From a2b688861af5bac3c1ccde62413779eaa397bdb4 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:05:04 +0000 Subject: [PATCH 3/3] chore: remove strpos check --- src/Validator/Domain.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Validator/Domain.php b/src/Validator/Domain.php index 00570d65..54c2eb50 100644 --- a/src/Validator/Domain.php +++ b/src/Validator/Domain.php @@ -45,10 +45,6 @@ public function isValid($value): bool return false; } - if (strpos($value, '://') !== false) { - return false; - } - return \filter_var($value, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) !== false; }