From f16f149e83c2ee477904e8f21c9809ce7264c34c Mon Sep 17 00:00:00 2001 From: Mateusz Charytoniuk <mateusz.charytoniuk@protonmail.com> Date: Tue, 6 Feb 2024 22:06:21 +0100 Subject: [PATCH] chore: validate mail --- src/Constraint/StringConstraint.php | 26 +++++++++++++------------ src/Constraint/StringConstraintTest.php | 8 ++++++++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/Constraint/StringConstraint.php b/src/Constraint/StringConstraint.php index 4572046f..c66a46f4 100644 --- a/src/Constraint/StringConstraint.php +++ b/src/Constraint/StringConstraint.php @@ -86,24 +86,26 @@ final readonly class StringConstraint extends Constraint ); } - if (ConstraintStringFormat::Uuid === $this->format) { - if (uuid_is_valid($notValidatedData)) { - return new ConstraintResult( - castedData: $notValidatedData, - path: $path, - reason: ConstraintReason::Ok, - status: ConstraintResultStatus::Valid, - ); - } + $isFormatValid = match ($this->format) { + ConstraintStringFormat::Mail => false !== filter_var($notValidatedData, FILTER_VALIDATE_EMAIL), + ConstraintStringFormat::Uuid => uuid_is_valid($notValidatedData), + default => throw new RuntimeException('Unknown string format'), + }; + if ($isFormatValid) { return new ConstraintResult( castedData: $notValidatedData, path: $path, - reason: ConstraintReason::InvalidFormat, - status: ConstraintResultStatus::Invalid, + reason: ConstraintReason::Ok, + status: ConstraintResultStatus::Valid, ); } - throw new RuntimeException('Unknown string format'); + return new ConstraintResult( + castedData: $notValidatedData, + path: $path, + reason: ConstraintReason::InvalidFormat, + status: ConstraintResultStatus::Invalid, + ); } } diff --git a/src/Constraint/StringConstraintTest.php b/src/Constraint/StringConstraintTest.php index 9d6908a8..d5094e14 100644 --- a/src/Constraint/StringConstraintTest.php +++ b/src/Constraint/StringConstraintTest.php @@ -52,6 +52,14 @@ final class StringConstraintTest extends TestCase self::assertTrue($constraint->validate('hi')->status->isValid()); } + public function test_validates_mail(): void + { + $constraint = new StringConstraint(format: ConstraintStringFormat::Mail); + + self::assertFalse($constraint->validate('hi')->status->isValid()); + self::assertTrue($constraint->validate('test@example.com')->status->isValid()); + } + public function test_validates_uuid(): void { $constraint = new StringConstraint(format: ConstraintStringFormat::Uuid); -- GitLab