create(); $response = $this->actingAs($user) ->withSession(['auth.password_confirmed_at' => time()]) ->get(route('security.edit')); $response->assertOk(); } public function test_security_settings_page_requires_password_confirmation_when_enabled(): void { $user = User::factory()->create(); $response = $this->actingAs($user) ->get(route('security.edit')); $response->assertRedirect(route('password.confirm')); } public function test_security_settings_page_renders_without_two_factor_when_feature_is_disabled(): void { config(['fortify.features' => []]); $user = User::factory()->create(); $this->actingAs($user) ->withSession(['auth.password_confirmed_at' => time()]) ->get(route('security.edit')) ->assertOk() ->assertSee('Update password') ->assertDontSee('Manage your passkeys for passwordless sign-in') ->assertDontSee('Add a passkey to sign in without a password') ->assertDontSee('Two-factor authentication'); } public function test_two_factor_authentication_disabled_when_confirmation_abandoned_between_requests(): void {} public function test_password_can_be_updated(): void { $user = User::factory()->create([ 'password' => Hash::make('password'), ]); $this->actingAs($user); $response = Livewire::test('pages::settings.security') ->set('current_password', 'password') ->set('password', 'new-password') ->set('password_confirmation', 'new-password') ->call('updatePassword'); $response->assertHasNoErrors(); $this->assertTrue(Hash::check('new-password', $user->refresh()->password)); } public function test_correct_password_must_be_provided_to_update_password(): void { $user = User::factory()->create([ 'password' => Hash::make('password'), ]); $this->actingAs($user); $response = Livewire::test('pages::settings.security') ->set('current_password', 'wrong-password') ->set('password', 'new-password') ->set('password_confirmation', 'new-password') ->call('updatePassword'); $response->assertHasErrors(['current_password']); } }