active()->create([ 'name' => 'Spec322 CTA Environment', ]); [$user, $environment] = createUserWithTenant(tenant: $environment, role: 'owner', workspaceRole: 'owner'); $workspace = $environment->workspace()->firstOrFail(); $this->actingAs($user); setAdminPanelContext($environment); $workspaceHubUrls = [ OperationRunLinks::index($environment), ManagedEnvironmentLinks::operationsUrl($environment), ManagedEnvironmentLinks::providerConnectionsUrl($environment), ProviderConnectionResource::getUrl('index', ['environment_id' => (int) $environment->getKey()], panel: 'admin'), CustomerReviewWorkspace::environmentFilterUrl($environment), GovernanceInbox::getUrl(panel: 'admin', parameters: ['environment_id' => (int) $environment->getKey()]), DecisionRegister::getUrl(panel: 'admin', parameters: ['environment_id' => (int) $environment->getKey()]), FindingExceptionsQueue::getUrl(panel: 'admin', parameters: ['environment_id' => (int) $environment->getKey()]), route('admin.evidence.overview', ['environment_id' => (int) $environment->getKey()]), ReviewRegister::getUrl(panel: 'admin', parameters: ['environment_id' => (int) $environment->getKey()]), route('admin.monitoring.audit-log', ['environment_id' => (int) $environment->getKey()]), AlertDeliveryResource::getUrl('index', ['environment_id' => (int) $environment->getKey()], panel: 'admin'), ]; foreach ($workspaceHubUrls as $url) { $query = spec322Query($url); expect($query)->toHaveKey('environment_id', (string) $environment->getKey()) ->and($query)->not->toHaveKey('tenant') ->and($query)->not->toHaveKey('tenant_id') ->and($query)->not->toHaveKey('managed_environment_id') ->and($query)->not->toHaveKey('environment') ->and($query)->not->toHaveKey('tenant_scope') ->and($query)->not->toHaveKey('tableFilters'); } $environmentOwnedUrls = [ ManagedEnvironmentLinks::viewUrl($environment), ManagedEnvironmentLinks::baselineCompareUrl($environment), BaselineCompareLanding::getUrl(panel: 'admin', tenant: $environment), ManagedEnvironmentLinks::requiredPermissionsUrl($environment), ManagedEnvironmentLinks::diagnosticsUrl($environment), route('filament.admin.workspaces.{workspace}.environments.{environment}.inventory', [ 'workspace' => ManagedEnvironmentLinks::workspaceRouteKey($workspace), 'environment' => ManagedEnvironmentLinks::environmentRouteKey($environment), ]), route('filament.admin.workspaces.{workspace}.environments.{environment}.inventory.pages.inventory-coverage', [ 'workspace' => ManagedEnvironmentLinks::workspaceRouteKey($workspace), 'environment' => ManagedEnvironmentLinks::environmentRouteKey($environment), ]), ]; foreach ($environmentOwnedUrls as $url) { expect((string) parse_url($url, PHP_URL_PATH)) ->toContain('/admin/workspaces/'.ManagedEnvironmentLinks::workspaceRouteKey($workspace).'/environments/'.ManagedEnvironmentLinks::environmentRouteKey($environment)) ->and(spec322Query($url))->not->toHaveKey('environment_id') ->and(spec322Query($url))->not->toHaveKey('managed_environment_id') ->and(spec322Query($url))->not->toHaveKey('tenant') ->and(spec322Query($url))->not->toHaveKey('tableFilters'); } $workspaceConfigurationUrls = [ AlertRuleResource::getUrl('index', panel: 'admin'), AlertDestinationResource::getUrl('index', panel: 'admin'), WorkspaceSettings::getUrl(panel: 'admin'), ]; foreach ($workspaceConfigurationUrls as $url) { expect(spec322Query($url))->not->toHaveKey('environment_id') ->and(spec322Query($url))->not->toHaveKey('managed_environment_id') ->and(spec322Query($url))->not->toHaveKey('tenant') ->and(spec322Query($url))->not->toHaveKey('tableFilters'); } }); /** * @return array */ function spec322Query(string $url): array { $query = []; parse_str((string) parse_url($url, PHP_URL_QUERY), $query); return $query; }