From 3ecec8350d4f65e5ddb8df7ecd95e9340b8f8ff8 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:37:37 +0530 Subject: [PATCH] fix: added space validation --- .../Validator/AppwriteNetworkDomain.php | 3 ++ .../Validators/AppwriteNetworkDomainTest.php | 36 +++++++++++-------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/Appwrite/Network/Validator/AppwriteNetworkDomain.php b/src/Appwrite/Network/Validator/AppwriteNetworkDomain.php index d981e54d21..b73486b004 100644 --- a/src/Appwrite/Network/Validator/AppwriteNetworkDomain.php +++ b/src/Appwrite/Network/Validator/AppwriteNetworkDomain.php @@ -19,6 +19,9 @@ class AppwriteNetworkDomain extends Validator if (!is_string($value) || empty($value)) { return true; } + if (\preg_match('/\s/', $value)) { + return false; + } if (\str_starts_with($value, '.')) { return false; } diff --git a/tests/unit/Network/Validators/AppwriteNetworkDomainTest.php b/tests/unit/Network/Validators/AppwriteNetworkDomainTest.php index f3308bc3f2..4c5611c827 100644 --- a/tests/unit/Network/Validators/AppwriteNetworkDomainTest.php +++ b/tests/unit/Network/Validators/AppwriteNetworkDomainTest.php @@ -77,22 +77,30 @@ class AppwriteNetworkDomainTest extends TestCase $this->assertEquals(true, $this->validator->isValid('foo.bar.baz.example.com')); } - public function testEdgeCases(): void - { - // Empty and invalid values should pass (let other validators handle them) - $this->assertEquals(true, $this->validator->isValid('')); - $this->assertEquals(true, $this->validator->isValid(null)); - $this->assertEquals(true, $this->validator->isValid(false)); - $this->assertEquals(true, $this->validator->isValid(123)); - $this->assertEquals(true, $this->validator->isValid([])); + public function testEdgeCases(): void + { + // Empty and invalid values should pass (let other validators handle them) + $this->assertEquals(true, $this->validator->isValid('')); + $this->assertEquals(true, $this->validator->isValid(null)); + $this->assertEquals(true, $this->validator->isValid(false)); + $this->assertEquals(true, $this->validator->isValid(123)); + $this->assertEquals(true, $this->validator->isValid([])); - // Just the root domain (unlikely but should be valid) - $this->assertEquals(true, $this->validator->isValid('appwrite.network')); + // Just the root domain (unlikely but should be valid) + $this->assertEquals(true, $this->validator->isValid('appwrite.network')); - // Domain with trailing/leading dots - $this->assertEquals(false, $this->validator->isValid('api.test.appwrite.network.')); - $this->assertEquals(false, $this->validator->isValid('.api.test.appwrite.network')); - } + // Domain with trailing/leading dots + $this->assertEquals(false, $this->validator->isValid('api.test.appwrite.network.')); + $this->assertEquals(false, $this->validator->isValid('.api.test.appwrite.network')); + + // Domains with spaces should be invalid + $this->assertEquals(false, $this->validator->isValid('my app.appwrite.network')); + $this->assertEquals(false, $this->validator->isValid('api .appwrite.network')); + $this->assertEquals(false, $this->validator->isValid(' api.appwrite.network')); + $this->assertEquals(false, $this->validator->isValid('api.appwrite.network ')); + $this->assertEquals(false, $this->validator->isValid('api.app write.network')); + $this->assertEquals(false, $this->validator->isValid("api\tapp.appwrite.network")); + } public function testValidatorProperties(): void {