get('/login')->assertOk(); } public function test_guest_dashboard_request_redirects_to_login(): void { $this->get('/dashboard')->assertRedirect('/login'); } public function test_admin_can_login_access_dashboard_and_logout(): void { $admin = User::factory()->create([ 'email' => 'admin@example.com', 'password' => Hash::make('password'), 'role' => 'admin', ]); $this->post('/login', [ 'email' => $admin->email, 'password' => 'password', ])->assertRedirect('/dashboard'); $this->assertAuthenticatedAs($admin); $this->get('/dashboard')->assertOk(); $this->post('/logout')->assertRedirect('/login'); $this->assertGuest(); } public function test_wrong_login_credentials_return_to_login_with_error(): void { User::factory()->create([ 'email' => 'admin@example.com', 'password' => Hash::make('password'), 'role' => 'admin', ]); $this->from('/login')->post('/login', [ 'email' => 'admin@example.com', 'password' => 'wrong-password', ])->assertRedirect('/login')->assertSessionHasErrors('email'); $this->assertGuest(); } }