43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
<?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();
|
|
});
|