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