seed(RoleSeeder::class); Route::middleware(['auth:sanctum', 'role:admin']) ->get('/api/v1/_test/admin-only', fn () => response()->json(['ok' => true])); } public function test_admin_can_access_role_protected_route(): void { $admin = User::factory()->create([ 'role' => User::ROLE_ADMIN, 'status' => User::STATUS_ACTIVE, ]); Sanctum::actingAs($admin); $this->getJson('/api/v1/_test/admin-only')->assertOk(); } public function test_resident_blocked_from_admin_route(): void { $resident = User::factory()->create([ 'role' => User::ROLE_RESIDENT, 'status' => User::STATUS_ACTIVE, ]); Sanctum::actingAs($resident); $this->getJson('/api/v1/_test/admin-only')->assertStatus(403); } public function test_unauthed_blocked_from_admin_route(): void { $this->getJson('/api/v1/_test/admin-only')->assertStatus(401); } }