create(['external_id' => 'tenant-a']); $user = User::factory()->create(); $this->actingAs($user) ->get("/admin/t/{$tenant->external_id}") ->assertNotFound(); }); it('allows members to access the tenant dashboard route', function () { [$user, $tenant] = createUserWithTenant(role: 'readonly'); $this->actingAs($user) ->get("/admin/t/{$tenant->external_id}") ->assertSuccessful(); }); it('enforces panel boundary semantics between workspace routes and tenant routes', function () { [$user, $tenant] = createUserWithTenant(role: 'readonly'); $otherTenant = Tenant::factory()->create([ 'workspace_id' => (int) $tenant->workspace_id, 'external_id' => 'boundary-tenant-b', ]); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]) ->get("/admin/tenants/{$tenant->external_id}") ->assertSuccessful(); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]) ->get("/admin/t/{$otherTenant->external_id}") ->assertNotFound(); }); it('keeps non-member tenant-bound requests as 404 even when another tenant is selected', function () { [$user, $selectedTenant] = createUserWithTenant(role: 'readonly'); $otherTenant = Tenant::factory()->active()->create([ 'workspace_id' => (int) $selectedTenant->workspace_id, 'external_id' => 'hidden-tenant-b', ]); Filament::setTenant($selectedTenant, true); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $selectedTenant->workspace_id]) ->get("/admin/t/{$otherTenant->external_id}") ->assertNotFound(); }); it('keeps non-member onboarding tenant admin routes as 404 even when another tenant is selected', function (): void { [$user, $selectedTenant] = createUserWithTenant(role: 'owner'); $otherTenant = Tenant::factory()->onboarding()->create([ 'workspace_id' => (int) $selectedTenant->workspace_id, 'external_id' => 'hidden-onboarding-tenant-b', ]); Filament::setTenant($selectedTenant, true); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $selectedTenant->workspace_id]) ->get("/admin/tenants/{$otherTenant->external_id}") ->assertNotFound(); });