## Summary - remove the dead legacy drift-computation path from `CompareBaselineToTenantJob` so the strategy-driven compare engine is the only execution path left in the orchestration file - tighten compare guard and regression coverage around strategy selection, strategy execution context, findings, gaps, and no-drift outcomes - fix the repo-wide suite blockers uncovered during validation by making the governance taxonomy registry test-double compatible and aligning the capture capability guard test with current unsupported-scope behavior - add the Spec 205 planning artifacts and mark the implementation tasks complete ## Verification - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests --stop-on-failure` - result: `3659 passed, 8 skipped (21016 assertions)` - browser smoke test passed on the Baseline Compare landing surface via the local smoke-login flow ## Notes - no Filament resource, panel, global search, destructive action, or asset registration behavior was changed - provider registration remains unchanged in `apps/platform/bootstrap/providers.php` - the compare path remains strategy-driven and Livewire v4 / Filament v5 assumptions are unchanged Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #235
57 lines
1.9 KiB
PHP
57 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
it('prevents legacy fingerprinting/compare helpers from re-entering baseline orchestration (Spec 118)', function (): void {
|
|
$compareForbiddenTokens = [
|
|
'PolicyNormalizer',
|
|
'VersionDiff',
|
|
'flattenForDiff',
|
|
'computeDrift(',
|
|
'effectiveBaselineHash(',
|
|
'resolveBaselinePolicyVersionId(',
|
|
'selectSummaryKind(',
|
|
'buildDriftEvidenceContract(',
|
|
'buildRoleDefinitionEvidencePayload(',
|
|
'resolveRoleDefinitionVersion(',
|
|
'fallbackRoleDefinitionNormalized(',
|
|
'roleDefinitionChangedKeys(',
|
|
'roleDefinitionPermissionKeys(',
|
|
'resolveRoleDefinitionDiff(',
|
|
'severityForRoleDefinitionDiff(',
|
|
'BaselinePolicyVersionResolver',
|
|
'DriftHasher',
|
|
'SettingsNormalizer',
|
|
'AssignmentsNormalizer',
|
|
'ScopeTagsNormalizer',
|
|
'IntuneRoleDefinitionNormalizer',
|
|
];
|
|
|
|
$captureForbiddenTokens = [
|
|
...$compareForbiddenTokens,
|
|
'SettingsNormalizer',
|
|
'ScopeTagsNormalizer',
|
|
'->hashNormalized(',
|
|
'::hashNormalized(',
|
|
];
|
|
|
|
$compareJob = file_get_contents(base_path('app/Jobs/CompareBaselineToTenantJob.php'));
|
|
expect($compareJob)->toBeString();
|
|
expect($compareJob)->toContain('CurrentStateHashResolver');
|
|
expect($compareJob)->toContain('compareStrategyRegistry->select(');
|
|
expect($compareJob)->toContain('compareStrategyRegistry->resolve(');
|
|
expect($compareJob)->toContain('$strategy->compare(');
|
|
|
|
foreach ($compareForbiddenTokens as $token) {
|
|
expect($compareJob)->not->toContain($token);
|
|
}
|
|
|
|
$captureJob = file_get_contents(base_path('app/Jobs/CaptureBaselineSnapshotJob.php'));
|
|
expect($captureJob)->toBeString();
|
|
expect($captureJob)->toContain('CurrentStateHashResolver');
|
|
|
|
foreach ($captureForbiddenTokens as $token) {
|
|
expect($captureJob)->not->toContain($token);
|
|
}
|
|
});
|