admin()->create([ 'email' => 'admin@example.com', ]); Livewire::test(Login::class) ->set('data.email', $admin->email) ->set('data.password', 'password') ->call('authenticate') ->assertHasNoFormErrors() ->assertRedirect(route('filament.admin.pages.dashboard')); $this->assertAuthenticatedAs($admin); } public function test_active_assistant_can_log_in_to_filament_panel(): void { $assistant = User::factory()->assistant()->create([ 'email' => 'assistant@example.com', ]); Livewire::test(Login::class) ->set('data.email', $assistant->email) ->set('data.password', 'password') ->call('authenticate') ->assertHasNoFormErrors() ->assertRedirect(route('filament.admin.pages.dashboard')); $this->assertAuthenticatedAs($assistant); } public function test_inactive_user_is_denied_panel_access(): void { $inactiveUser = User::factory()->admin()->inactive()->create([ 'email' => 'inactive@example.com', ]); Livewire::test(Login::class) ->set('data.email', $inactiveUser->email) ->set('data.password', 'password') ->call('authenticate') ->assertHasFormErrors(['email']); $this->assertGuest(); } public function test_assistant_cannot_access_user_management(): void { $assistant = User::factory()->assistant()->create(); $this->actingAs($assistant); Livewire::test(ListUsers::class) ->assertForbidden(); } public function test_admin_can_access_user_management(): void { $admin = User::factory()->admin()->create(); $this->actingAs($admin); Livewire::test(ListUsers::class) ->assertSuccessful(); } public function test_user_role_is_limited_to_admin_and_assistant(): void { $this->assertSame(['admin', 'assistant'], array_column(UserRole::cases(), 'value')); } }