active()->create(['name' => 'ManagedEnvironment Panel Entry']); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); session()->forget(WorkspaceContext::SESSION_KEY); $this->actingAs($user) ->get(TenantDashboard::getUrl(tenant: $tenant)) ->assertOk() ->assertSee($tenant->workspace()->firstOrFail()->name) ->assertSee('ManagedEnvironment Panel Entry') ->assertSee(__('localization.shell.switch_environment')) ->assertSee(__('localization.shell.clear_environment_scope')) ->assertDontSee(__('localization.shell.search_environments')) ->assertDontSee('admin/select-tenant'); }); it('keeps workspace-scoped routes tenantless when a cross-workspace tenant hint is rejected', function (): void { $workspaceTenant = ManagedEnvironment::factory()->active()->create(['name' => 'Workspace ManagedEnvironment']); [$user, $workspaceTenant] = createUserWithTenant(tenant: $workspaceTenant, role: 'owner'); $foreignTenant = ManagedEnvironment::factory()->active()->create(['name' => 'Rejected Foreign ManagedEnvironment']); createUserWithTenant(tenant: $foreignTenant, user: User::factory()->create(), role: 'owner'); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $workspaceTenant->workspace_id]) ->get(route('admin.operations.index', ['workspace' => $workspaceTenant->workspace, 'tenant' => $foreignTenant->external_id])) ->assertOk() ->assertSee(__('localization.shell.no_environment_selected')) ->assertDontSee(__('localization.shell.environment_scope').': Rejected Foreign ManagedEnvironment'); });