toContain( 'workspace_home', 'workspace_overview', 'operations', 'provider_connections', 'finding_exceptions_queue', 'evidence_overview', 'review_register', 'customer_review_workspace', 'governance_inbox', 'decision_register', 'audit_log', 'alerts', 'alert_deliveries', 'alert_rules', 'alert_destinations', 'workspace_settings', 'manage_workspaces', 'managed_environments_landing', ) ->and(array_keys(WorkspaceHubRegistry::exclusions())) ->toContain( 'environment_dashboard', 'stored_reports_environment_routes', 'support_request_action_surface', ); }); it('Spec314 classifies workspace hubs without classifying environment-owned pages', function (): void { expect(WorkspaceHubRegistry::isWorkspaceHubPath('/admin'))->toBeTrue() ->and(WorkspaceHubRegistry::isWorkspaceHubPath('/admin/workspaces/1/overview'))->toBeTrue() ->and(WorkspaceHubRegistry::isWorkspaceHubPath('/admin/workspaces/1/operations'))->toBeTrue() ->and(WorkspaceHubRegistry::isWorkspaceHubPath('/admin/workspaces/1/environments'))->toBeTrue() ->and(WorkspaceHubRegistry::isWorkspaceHubPath('/admin/workspaces/1/environments/2'))->toBeFalse() ->and(WorkspaceHubRegistry::isExplicitlyExcludedPath('/admin/workspaces/1/environments/2'))->toBeTrue() ->and(WorkspaceHubRegistry::isWorkspaceHubPath('/admin/workspaces/1/environments/2/baseline-compare'))->toBeFalse() ->and(WorkspaceHubRegistry::isExplicitlyExcludedPath('/admin/workspaces/1/environments/2/baseline-compare'))->toBeTrue() ->and(WorkspaceHubRegistry::isWorkspaceHubPath('/admin/baseline-compare-landing'))->toBeFalse() ->and(WorkspaceHubRegistry::isWorkspaceHubPath('/admin/workspaces/1/environments/2/stored-reports'))->toBeFalse() ->and(WorkspaceHubRegistry::isExplicitlyExcludedPath('/admin/workspaces/1/environments/2/stored-reports'))->toBeTrue(); }); it('Spec314 owns forbidden query keys and environment-like filter keys', function (): void { expect(WorkspaceHubRegistry::forbiddenQueryKeys()) ->toBe(['tenant', 'tenant_id', 'managed_environment_id', 'environment_id', 'environment', 'tenant_scope', 'tableFilters']) ->and(WorkspaceHubRegistry::environmentLikeFilterKeys()) ->toBe(['tenant', 'tenant_id', 'managed_environment_id', 'environment_id', 'environment', 'tenant_scope']); }); it('Spec314 strips forbidden workspace hub query keys without touching unrelated navigation state', function (): void { $url = WorkspaceHubRegistry::cleanUrl('/admin/provider-connections?tenant=a&tenant_id=1&managed_environment_id=2&environment_id=3&tenant_scope=all&tableFilters%5Btenant%5D=x&activeTab=failed&family=alerts'); expect($url)->toBe('/admin/provider-connections?activeTab=failed&family=alerts') ->and(WorkspaceHubRegistry::hasForbiddenQuery($url))->toBeFalse(); });