From 18a66bae4ec9e63035ec0d97b15848932df9a7ef Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Sun, 19 Oct 2025 21:55:52 +0100 Subject: [PATCH] chore: update Utopia Emails dependency to version 0.5 and remove deprecated email validator - Updated the Utopia Emails dependency version from 0.4.* to 0.5.* in composer.json and composer.lock. - Removed the custom Email validator class and its associated tests as it is no longer needed with the new Utopia Emails library. --- composer.json | 2 +- composer.lock | 14 ++--- src/Appwrite/Network/Validator/Email.php | 40 ------------ tests/unit/Network/Validators/EmailTest.php | 69 --------------------- 4 files changed, 8 insertions(+), 117 deletions(-) delete mode 100644 src/Appwrite/Network/Validator/Email.php delete mode 100755 tests/unit/Network/Validators/EmailTest.php diff --git a/composer.json b/composer.json index 9c6186d8dc..66425323c2 100644 --- a/composer.json +++ b/composer.json @@ -57,7 +57,7 @@ "utopia-php/domains": "0.8.*", "utopia-php/dns": "0.3.*", "utopia-php/dsn": "0.2.1", - "utopia-php/emails": "0.4.*", + "utopia-php/emails": "0.5.*", "utopia-php/framework": "0.33.*", "utopia-php/fetch": "0.4.*", "utopia-php/image": "0.8.*", diff --git a/composer.lock b/composer.lock index 3f9da4f993..8715283e08 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2fbd76a832756d8b21adf27e5b0a7cc7", + "content-hash": "16bb025bc719fc989a11800ec450fd5b", "packages": [ { "name": "adhocore/jwt", @@ -3900,16 +3900,16 @@ }, { "name": "utopia-php/emails", - "version": "0.4.0", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/utopia-php/emails.git", - "reference": "48d772c854a176f063e495d0179a1369087fd4f0" + "reference": "aebfd79cd8c39f230fb9a238ca12a4f7a1f7e0cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/emails/zipball/48d772c854a176f063e495d0179a1369087fd4f0", - "reference": "48d772c854a176f063e495d0179a1369087fd4f0", + "url": "https://api.github.com/repos/utopia-php/emails/zipball/aebfd79cd8c39f230fb9a238ca12a4f7a1f7e0cd", + "reference": "aebfd79cd8c39f230fb9a238ca12a4f7a1f7e0cd", "shasum": "" }, "require": { @@ -3954,9 +3954,9 @@ ], "support": { "issues": "https://github.com/utopia-php/emails/issues", - "source": "https://github.com/utopia-php/emails/tree/0.4.0" + "source": "https://github.com/utopia-php/emails/tree/0.5.0" }, - "time": "2025-10-19T20:31:42+00:00" + "time": "2025-10-19T20:51:56+00:00" }, { "name": "utopia-php/fetch", diff --git a/src/Appwrite/Network/Validator/Email.php b/src/Appwrite/Network/Validator/Email.php deleted file mode 100644 index 8052e2bdd0..0000000000 --- a/src/Appwrite/Network/Validator/Email.php +++ /dev/null @@ -1,40 +0,0 @@ -allowEmpty = $allowEmpty; - } - - /** - * Is valid - * - * Validation will pass when $value is valid email address. - * - * @param mixed $value - * @return bool - */ - public function isValid($value): bool - { - if ($this->allowEmpty && \strlen($value) === 0) { - return true; - } - - return parent::isValid($value); - } -} \ No newline at end of file diff --git a/tests/unit/Network/Validators/EmailTest.php b/tests/unit/Network/Validators/EmailTest.php deleted file mode 100755 index f629ed6ddc..0000000000 --- a/tests/unit/Network/Validators/EmailTest.php +++ /dev/null @@ -1,69 +0,0 @@ - - * @version 1.0 RC4 - * @license The MIT License (MIT) - */ - -namespace Tests\Unit\Network\Validators; - -use Appwrite\Network\Validator\Email; -use PHPUnit\Framework\TestCase; - -class EmailTest extends TestCase -{ - protected ?Email $email = null; - - public function setUp(): void - { - $this->email = new Email(); - } - - public function tearDown(): void - { - $this->email = null; - } - - public function testIsValid(): void - { - $this->assertEquals(true, $this->email->isValid('email@domain.com')); - $this->assertEquals(true, $this->email->isValid('firstname.lastname@domain.com')); - $this->assertEquals(true, $this->email->isValid('email@subdomain.domain.com')); - $this->assertEquals(true, $this->email->isValid('firstname+lastname@domain.com')); - $this->assertEquals(true, $this->email->isValid('email@[123.123.123.123]')); - $this->assertEquals(true, $this->email->isValid('"email"@domain.com')); - $this->assertEquals(true, $this->email->isValid('1234567890@domain.com')); - $this->assertEquals(true, $this->email->isValid('email@domain-one.com')); - $this->assertEquals(true, $this->email->isValid('_______@domain.com')); - $this->assertEquals(true, $this->email->isValid('email@domain.name')); - $this->assertEquals(true, $this->email->isValid('email@domain.co.jp')); - $this->assertEquals(true, $this->email->isValid('firstname-lastname@domain.com')); - $this->assertEquals(false, $this->email->isValid(false)); - $this->assertEquals(false, $this->email->isValid(['string', 'string'])); - $this->assertEquals(false, $this->email->isValid(1)); - $this->assertEquals(false, $this->email->isValid(1.2)); - $this->assertEquals(false, $this->email->isValid('plainaddress')); // Missing @ sign and domain - $this->assertEquals(false, $this->email->isValid('@domain.com')); // Missing username - $this->assertEquals(false, $this->email->isValid('#@%^%#$@#$@#.com')); // Garbage - $this->assertEquals(false, $this->email->isValid('Joe Smith ')); // Encoded html within email is invalid - $this->assertEquals(false, $this->email->isValid('email.domain.com')); // Missing @ - $this->assertEquals(false, $this->email->isValid('email@domain@domain.com')); // Two @ sign - $this->assertEquals(false, $this->email->isValid('.email@domain.com')); // Leading dot in address is not allowed - $this->assertEquals(false, $this->email->isValid('email.@domain.com')); // Trailing dot in address is not allowed - $this->assertEquals(false, $this->email->isValid('email..email@domain.com')); // Multiple dots - $this->assertEquals(false, $this->email->isValid('あいうえお@domain.com')); // Unicode char as address - $this->assertEquals(false, $this->email->isValid('email@domain.com (Joe Smith)')); // Text followed email is not allowed - $this->assertEquals(false, $this->email->isValid('email@domain')); // Missing top level domain (.com/.net/.org/etc) - $this->assertEquals(false, $this->email->isValid('email@-domain.com')); // Leading dash in front of domain is invalid - $this->assertEquals(false, $this->email->isValid('email@111.222.333.44444')); // Invalid IP format - $this->assertEquals(false, $this->email->isValid('email@domain..com')); // Multiple dot in the domain portion is invalid - $this->assertEquals($this->email->getType(), 'string'); - } -}