first commit
This commit is contained in:
42
tests/Feature/Security/PasswordPolicyTest.php
Normal file
42
tests/Feature/Security/PasswordPolicyTest.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
use App\Models\User;
|
||||
use App\Rules\PasswordNotReused;
|
||||
use App\Services\Auth\PasswordManager;
|
||||
use App\Support\PasswordPolicy;
|
||||
|
||||
it('запрещает повторное использование последних паролей (ИАФ.3)', function () {
|
||||
$user = User::factory()->create();
|
||||
$manager = app(PasswordManager::class);
|
||||
|
||||
$manager->change($user, 'FirstPass123!@#');
|
||||
$manager->change($user, 'SecondPass123!@#');
|
||||
|
||||
$rule = new PasswordNotReused($user->fresh());
|
||||
|
||||
$failed = false;
|
||||
$rule->validate('password', 'FirstPass123!@#', function () use (&$failed) {
|
||||
$failed = true;
|
||||
});
|
||||
|
||||
expect($failed)->toBeTrue();
|
||||
});
|
||||
|
||||
it('определяет истёкший срок действия пароля (ИАФ.3)', function () {
|
||||
$expired = User::factory()->passwordExpired()->create();
|
||||
$fresh = User::factory()->create();
|
||||
|
||||
expect($expired->passwordExpired())->toBeTrue()
|
||||
->and($fresh->passwordExpired())->toBeFalse();
|
||||
});
|
||||
|
||||
it('применяет минимальную длину пароля из политики (ИАФ.3)', function () {
|
||||
$rule = PasswordPolicy::rule();
|
||||
|
||||
$validator = validator(
|
||||
['password' => 'Short1!'],
|
||||
['password' => $rule],
|
||||
);
|
||||
|
||||
expect($validator->fails())->toBeTrue();
|
||||
});
|
||||
Reference in New Issue
Block a user