From 3e4cf6f2616e05300af42be450e3a7a3a7d874b1 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 26 Dec 2023 13:51:37 +1100 Subject: [PATCH] Convest rule to validationrule --- .../ValidationRules/Account/BlackListRule.php | 25 ++++------------- .../BlacklistValidationTest.php | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/app/Http/ValidationRules/Account/BlackListRule.php b/app/Http/ValidationRules/Account/BlackListRule.php index 3845f7f9ce05..e2e13aa8a931 100644 --- a/app/Http/ValidationRules/Account/BlackListRule.php +++ b/app/Http/ValidationRules/Account/BlackListRule.php @@ -11,12 +11,13 @@ namespace App\Http\ValidationRules\Account; -use Illuminate\Contracts\Validation\Rule; +use Closure; +use Illuminate\Contracts\Validation\ValidationRule; /** * Class BlackListRule. */ -class BlackListRule implements Rule +class BlackListRule implements ValidationRule { private array $blacklist = [ 'secure-coinspot.com', @@ -3497,27 +3498,13 @@ class BlackListRule implements Rule 'zzz.com', ]; - /** - * @param string $attribute - * @param mixed $value - * @return bool - */ - public function passes($attribute, $value): bool + public function validate(string $attribute, mixed $value, Closure $fail): void { $parts = explode("@", $value); - if (is_array($parts)) { - return ! in_array($parts[1], $this->blacklist); - } else { - return true; + if (is_array($parts) && in_array($parts[1], $this->blacklist)) { + $fail('This domain is blacklisted, if you think this is in error, please email contact@invoiceninja.com'); } } - /** - * @return string - */ - public function message(): string - { - return 'This domain is blacklisted, if you think this is in error, please email contact@invoiceninja.com'; - } } diff --git a/tests/Unit/ValidationRules/BlacklistValidationTest.php b/tests/Unit/ValidationRules/BlacklistValidationTest.php index 1a6b54a41435..806f16232fc3 100644 --- a/tests/Unit/ValidationRules/BlacklistValidationTest.php +++ b/tests/Unit/ValidationRules/BlacklistValidationTest.php @@ -52,4 +52,32 @@ class BlacklistValidationTest extends TestCase $v = $this->app['validator']->make($data, $rules); $this->assertFalse($v->passes()); } + + public function testInValidEmailRule2() + { + $rules = [ + 'email' => [new BlackListRule], + ]; + + $data = [ + 'email' => 'jimmy@zzz.com', + ]; + + $v = $this->app['validator']->make($data, $rules); + $this->assertFalse($v->passes()); + } + + public function testInValidEmailRule3() + { + $rules = [ + 'email' => [new BlackListRule], + ]; + + $data = [ + 'email' => 'jimmy@gmail.com', + ]; + + $v = $this->app['validator']->make($data, $rules); + $this->assertTrue($v->passes()); + } }