first commit

This commit is contained in:
brusnitsyn
2026-06-24 17:20:43 +09:00
commit 43499acf1c
165 changed files with 25929 additions and 0 deletions

View 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();
});