markTestSkipped('Two-factor authentication is not enabled.'); } Features::twoFactorAuthentication([ 'confirm' => true, 'confirmPassword' => true, ]); }); test('two factor settings page can be rendered', function () { $user = User::factory()->withoutTwoFactor()->create(); $this->actingAs($user) ->withSession(['auth.password_confirmed_at' => time()]) ->get(route('two-factor.show')) ->assertOk() ->assertSee('Two Factor Authentication') ->assertSee('Disabled'); }); test('two factor settings page requires password confirmation when enabled', function () { $user = User::factory()->create(); $response = $this->actingAs($user) ->get(route('two-factor.show')); $response->assertRedirect(route('password.confirm')); }); test('two factor settings page returns forbidden response when two factor is disabled', function () { config(['fortify.features' => []]); $user = User::factory()->create(); $response = $this->actingAs($user) ->withSession(['auth.password_confirmed_at' => time()]) ->get(route('two-factor.show')); $response->assertForbidden(); }); test('two factor authentication disabled when confirmation abandoned between requests', function () { $user = User::factory()->create(); $user->forceFill([ 'two_factor_secret' => encrypt('test-secret'), 'two_factor_recovery_codes' => encrypt(json_encode(['code1', 'code2'])), 'two_factor_confirmed_at' => null, ])->save(); $this->actingAs($user); $component = Livewire::test('settings.two-factor'); $component->assertSet('twoFactorEnabled', false); $this->assertDatabaseHas('users', [ 'id' => $user->id, 'two_factor_secret' => null, 'two_factor_recovery_codes' => null, ]); });