WARN  Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"! FAIL Tests\Feature\RegistrationTest ✓ register start generates otp successfully 2.98s ✓ register start with invalid phone 0.61s ✓ register start with existing email 0.89s ✓ register verify creates user successfully 1.05s ⨯ register verify with invalid otp 0.66s ✓ register verify with expired otp 0.72s ✓ register start rate limiting 0.77s ✓ register verify with duplicate username 0.67s ✓ user can access protected endpoint with token 0.79s PASS Tests\Unit\OtpServiceTest ✓ generate and send otp creates token 0.26s ✓ generate otp with invalid phone 0.14s ✓ verify otp with correct code 0.25s ✓ verify otp with incorrect code 0.25s ✓ verify otp with expired token 0.23s ✓ verify otp rate limit exceeded 0.26s ✓ otp code format 0.26s ✓ phone number formatting 0.43s ✓ phone masking 0.19s ✓ cleanup expired tokens 0.28s FAIL Tests\Unit\RecaptchaV3ServiceTest ⨯ verify returns array structure ⨯ is valid with high score ⨯ is valid with custom threshold ⨯ invalid threshold throws exception ⨯ get and set threshold ⨯ verify with different actions FAIL Tests\Unit\PasswordResetServiceTest ✓ email exists 0.22s ✓ username exists 0.24s ✓ phone exists 0.23s ⨯ send reset link for existing email 0.79s ✓ send reset link for nonexistent email 0.16s ──────────────────────────────────────────────────────────────────────────── FAILED Tests\Feature\RegistrationTest > register verify with invalid otp Unable to find JSON: [{ "success": false, "is_valid": false }] within response JSON: [{ "message": "OTP code must be exactly 6 digits (and 1 more error)", "errors": { "otp_code": [ "OTP code must be exactly 6 digits", "OTP code must contain only numbers" ] } }]. Failed asserting that an array has the subset Array &0 [ 'success' => false, 'is_valid' => false, ]. --- Expected +++ Actual @@ @@ 1 => 'OTP code must contain only numbers', ), ), - 'success' => false, - 'is_valid' => false, ) at tests\Feature\RegistrationTest.php:184 180▕ 'password_confirmation' => 'SecurePassword123', 181▕ ]); 182▕ 183▕ $response->assertStatus(422) ➜ 184▕ ->assertJson([ 185▕ 'success' => false, 186▕ 'is_valid' => false, 187▕ ]); 188▕ } ──────────────────────────────────────────────────────────────────────────── FAILED Tests\Unit\RecaptchaV3ServiceTest > verify returns arr… Exception reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env at app\Services\RecaptchaV3Service.php:22 18▕ { 19▕ $secretKey = config('services.recaptcha.secret_key') ?? env('RECAPTCHA_SECRET_KEY'); 20▕ 21▕ if (!$secretKey) { ➜ 22▕ throw new \Exception('reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env'); 23▕ } 24▕ 25▕ $this->recaptcha = new ReCaptcha($secretKey); 26▕ $this->threshold = (float) (config('services.recaptcha.threshold') ?? env('RECAPTCHA_THRESHOLD', 0.5)); 1 app\Services\RecaptchaV3Service.php:22 2 tests\Unit\RecaptchaV3ServiceTest.php:35 ──────────────────────────────────────────────────────────────────────────── FAILED Tests\Unit\RecaptchaV3ServiceTest > is valid with high… Exception reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env at app\Services\RecaptchaV3Service.php:22 18▕ { 19▕ $secretKey = config('services.recaptcha.secret_key') ?? env('RECAPTCHA_SECRET_KEY'); 20▕ 21▕ if (!$secretKey) { ➜ 22▕ throw new \Exception('reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env'); 23▕ } 24▕ 25▕ $this->recaptcha = new ReCaptcha($secretKey); 26▕ $this->threshold = (float) (config('services.recaptcha.threshold') ?? env('RECAPTCHA_THRESHOLD', 0.5)); 1 app\Services\RecaptchaV3Service.php:22 2 tests\Unit\RecaptchaV3ServiceTest.php:35 ──────────────────────────────────────────────────────────────────────────── FAILED Tests\Unit\RecaptchaV3ServiceTest > is valid with cust… Exception reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env at app\Services\RecaptchaV3Service.php:22 18▕ { 19▕ $secretKey = config('services.recaptcha.secret_key') ?? env('RECAPTCHA_SECRET_KEY'); 20▕ 21▕ if (!$secretKey) { ➜ 22▕ throw new \Exception('reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env'); 23▕ } 24▕ 25▕ $this->recaptcha = new ReCaptcha($secretKey); 26▕ $this->threshold = (float) (config('services.recaptcha.threshold') ?? env('RECAPTCHA_THRESHOLD', 0.5)); 1 app\Services\RecaptchaV3Service.php:22 2 tests\Unit\RecaptchaV3ServiceTest.php:35 ──────────────────────────────────────────────────────────────────────────── FAILED Tests\Unit\RecaptchaV3ServiceTest > invalid threshold… Exception reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env at app\Services\RecaptchaV3Service.php:22 18▕ { 19▕ $secretKey = config('services.recaptcha.secret_key') ?? env('RECAPTCHA_SECRET_KEY'); 20▕ 21▕ if (!$secretKey) { ➜ 22▕ throw new \Exception('reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env'); 23▕ } 24▕ 25▕ $this->recaptcha = new ReCaptcha($secretKey); 26▕ $this->threshold = (float) (config('services.recaptcha.threshold') ?? env('RECAPTCHA_THRESHOLD', 0.5)); 1 app\Services\RecaptchaV3Service.php:22 2 tests\Unit\RecaptchaV3ServiceTest.php:35 ──────────────────────────────────────────────────────────────────────────── FAILED Tests\Unit\RecaptchaV3ServiceTest > get and set thresh… Exception reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env at app\Services\RecaptchaV3Service.php:22 18▕ { 19▕ $secretKey = config('services.recaptcha.secret_key') ?? env('RECAPTCHA_SECRET_KEY'); 20▕ 21▕ if (!$secretKey) { ➜ 22▕ throw new \Exception('reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env'); 23▕ } 24▕ 25▕ $this->recaptcha = new ReCaptcha($secretKey); 26▕ $this->threshold = (float) (config('services.recaptcha.threshold') ?? env('RECAPTCHA_THRESHOLD', 0.5)); 1 app\Services\RecaptchaV3Service.php:22 2 tests\Unit\RecaptchaV3ServiceTest.php:35 ──────────────────────────────────────────────────────────────────────────── FAILED Tests\Unit\RecaptchaV3ServiceTest > verify with differ… Exception reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env at app\Services\RecaptchaV3Service.php:22 18▕ { 19▕ $secretKey = config('services.recaptcha.secret_key') ?? env('RECAPTCHA_SECRET_KEY'); 20▕ 21▕ if (!$secretKey) { ➜ 22▕ throw new \Exception('reCAPTCHA secret key is not configured. Please set RECAPTCHA_SECRET_KEY in .env'); 23▕ } 24▕ 25▕ $this->recaptcha = new ReCaptcha($secretKey); 26▕ $this->threshold = (float) (config('services.recaptcha.threshold') ?? env('RECAPTCHA_THRESHOLD', 0.5)); 1 app\Services\RecaptchaV3Service.php:22 2 tests\Unit\RecaptchaV3ServiceTest.php:35 ──────────────────────────────────────────────────────────────────────────── FAILED Tests\Unit\PasswordResetServiceTest > send reset link for existin… Failed asserting that false is true. at tests\Unit\PasswordResetServiceTest.php:106 102▕ ]); 103▕ 104▕ $result = $this->service->sendResetLink('test@example.com'); 105▕ ➜ 106▕ $this->assertTrue($result['success']); 107▕ $this->assertStringContainsString('password reset', strtolower($result['message'])); 108▕ } 109▕ 110▕ /** 1 tests\Unit\PasswordResetServiceTest.php:106 Tests: 8 failed, 22 passed (79 assertions) Duration: 13.72s