admin()->create(); $member = User::factory()->create([ 'name' => 'Regular User', 'email' => 'member@example.com', ]); $this->actingAs($admin) ->get(route('admin.users.index')) ->assertOk() ->assertInertia(fn (Assert $page) => $page ->component('admin/users/Index') ->where('users.0.email', $admin->email) ->where('users.1.email', $member->email) ->where('users.0.is_admin', true) ->where('users.1.is_admin', false), ); } /** * Ensure non-admin users cannot view the user management page. */ public function test_non_admin_cannot_view_the_user_management_page(): void { $member = User::factory()->create(); $this->actingAs($member) ->get(route('admin.users.index')) ->assertForbidden(); } /** * Ensure admins can update another user's admin access. */ public function test_admin_can_update_a_users_admin_access(): void { $admin = User::factory()->admin()->create(); $member = User::factory()->create([ 'name' => 'Regular User', ]); $this->actingAs($admin) ->patch(route('admin.users.update', $member), [ 'is_admin' => true, ]) ->assertRedirect(route('admin.users.index')) ->assertSessionHas('status', 'Regular User now has admin access.'); $this->assertTrue($member->refresh()->is_admin); } /** * Ensure non-admin users cannot update admin access. */ public function test_non_admin_cannot_update_a_users_admin_access(): void { $member = User::factory()->create(); $otherUser = User::factory()->create([ 'is_admin' => false, ]); $this->actingAs($member) ->patch(route('admin.users.update', $otherUser), [ 'is_admin' => true, ]) ->assertForbidden(); $this->assertFalse($otherUser->refresh()->is_admin); } }