diff --git a/app/Http/ValidationRules/Account/EmailBlackListRule.php b/app/Http/ValidationRules/Account/EmailBlackListRule.php index 43e3451d1b6c..9054eef63150 100644 --- a/app/Http/ValidationRules/Account/EmailBlackListRule.php +++ b/app/Http/ValidationRules/Account/EmailBlackListRule.php @@ -11,32 +11,26 @@ namespace App\Http\ValidationRules\Account; -use Illuminate\Contracts\Validation\Rule; +use Closure; +use Illuminate\Contracts\Validation\ValidationRule; /** * Class EmailBlackListRule. */ -class EmailBlackListRule implements Rule +class EmailBlackListRule implements ValidationRule { public array $blacklist = [ - + 'noddy@invoiceninja.com', ]; - /** - * @param string $attribute - * @param mixed $value - * @return bool - */ - public function passes($attribute, $value) + + public function validate(string $attribute, mixed $value, Closure $fail): void { - return ! in_array($value, $this->blacklist); + + if (in_array($value, $this->blacklist)) { + $fail('This email address is blacklisted, if you think this is in error, please email contact@invoiceninja.com'); + } + } - /** - * @return string - */ - public function message() - { - return 'This email address 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 806f16232fc3..cc2f76cffea6 100644 --- a/tests/Unit/ValidationRules/BlacklistValidationTest.php +++ b/tests/Unit/ValidationRules/BlacklistValidationTest.php @@ -11,8 +11,9 @@ namespace Tests\Unit\ValidationRules; -use App\Http\ValidationRules\Account\BlackListRule; use Tests\TestCase; +use App\Http\ValidationRules\Account\BlackListRule; +use App\Http\ValidationRules\Account\EmailBlackListRule; /** * @test @@ -25,6 +26,35 @@ class BlacklistValidationTest extends TestCase parent::setUp(); } + public function testValidEmailRule3() + { + $rules = [ + 'email' => [new EmailBlackListRule], + ]; + + $data = [ + 'email' => 'contact@invoiceninja.com', + ]; + + $v = $this->app['validator']->make($data, $rules); + $this->assertTrue($v->passes()); + } + + + public function testValidEmailRule2() + { + $rules = [ + 'email' => [new EmailBlackListRule], + ]; + + $data = [ + 'email' => 'noddy@invoiceninja.com', + ]; + + $v = $this->app['validator']->make($data, $rules); + $this->assertFalse($v->passes()); + } + public function testValidEmailRule() { $rules = [