From e052e51bf1c71a79efd3867f90581c4e964f1237 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 11 Dec 2023 09:51:42 -0800 Subject: [PATCH] Prevent creating key with empty string --- src/Database/Validator/Key.php | 4 ++++ tests/unit/Validator/KeyTest.php | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/src/Database/Validator/Key.php b/src/Database/Validator/Key.php index d1cdf8793..ad1c5df4e 100644 --- a/src/Database/Validator/Key.php +++ b/src/Database/Validator/Key.php @@ -48,6 +48,10 @@ public function isValid($value): bool return false; } + if ($value === '') { + return false; + } + // no leading special characters $leading = \mb_substr($value, 0, 1); if ($leading === '_' || $leading === '.' || $leading === '-') { diff --git a/tests/unit/Validator/KeyTest.php b/tests/unit/Validator/KeyTest.php index f9dbc9b01..ca85ae56b 100644 --- a/tests/unit/Validator/KeyTest.php +++ b/tests/unit/Validator/KeyTest.php @@ -32,6 +32,11 @@ public function testValues(): void $this->assertEquals(true, $this->object->isValid('asdas7as9as')); $this->assertEquals(true, $this->object->isValid('5f058a8925807')); + // Don't allow empty string + $this->assertEquals(false, $this->object->isValid('')); + $this->assertEquals(true, $this->object->isValid('0')); + $this->assertEquals(true, $this->object->isValid('null')); + // No leading special chars $this->assertEquals(false, $this->object->isValid('_asdasdasdas')); $this->assertEquals(false, $this->object->isValid('.as5dasdasdas')); @@ -72,6 +77,7 @@ public function testValues(): void $this->assertEquals(true, $validator->isValid('appwrite')); $this->assertEquals(true, $validator->isValid('appwrite_')); $this->assertEquals(false, $validator->isValid('_appwrite')); + $this->assertEquals(false, $validator->isValid('_')); $this->assertEquals(true, $validator->isValid('$id')); $this->assertEquals(true, $validator->isValid('$createdAt')); @@ -79,5 +85,6 @@ public function testValues(): void $this->assertEquals(false, $validator->isValid('$appwrite')); $this->assertEquals(false, $validator->isValid('$permissions')); + $this->assertEquals(false, $validator->isValid('$')); } }