seed(RolePermissionSeeder::class); } public function test_guests_are_redirected_to_the_login_page() { $response = $this->get(route('dashboard')); $response->assertRedirect(route('login')); } public function test_authenticated_users_can_visit_the_dashboard() { $user = User::factory()->create(); $this->actingAs($user); $response = $this->get(route('dashboard')); $response->assertOk(); } public function test_master_admin_receives_platform_dashboard(): void { $admin = User::factory()->create(['is_platform_admin' => true]); $this->actingAs($admin)->get(route('dashboard')) ->assertInertia(fn (Assert $page) => $page ->component('dashboard') ->where('role', 'MASTER ADMIN') ->where('tenant', null) ->has('stats.tenants') ->has('stats.activeLicenses')); } public function test_tenant_admin_receives_tenant_admin_dashboard(): void { [$tenant, $admin] = $this->tenantWithAdmin(); $this->actingAs($admin)->get(route('dashboard')) ->assertInertia(fn (Assert $page) => $page ->where('role', 'TENANT ADMIN') ->where('tenant.id', $tenant->id) ->where('stats.users', 1)); } public function test_tenant_user_receives_tenant_user_dashboard(): void { [$tenant, $admin] = $this->tenantWithAdmin(); setPermissionsTeamId($tenant->id); $user = User::factory()->for($tenant)->create(); $user->assignRole('TENANT USER'); $this->actingAs($user)->get(route('dashboard')) ->assertInertia(fn (Assert $page) => $page ->where('role', 'TENANT USER') ->where('tenant.id', $tenant->id) ->where('stats.canAddDevice', true)); } private function tenantWithAdmin(): array { $tenant = app(TenantProvisioningService::class)->createWithOwner([ 'name' => 'Tenant A', 'slug' => 'tenant-a', 'owner_name' => 'Admin Tenant', 'owner_email' => 'admin@tenant.test', 'owner_password' => 'Strong!Password123', ]); return [$tenant, User::withoutGlobalScope('tenant')->where('tenant_id', $tenant->id)->firstOrFail()]; } }