TenantAtlas/apps/platform/tests/Unit/Support/Baselines/BaselineSubjectKeyCanonicalIdentityTest.php
ahmido 788efee1c2 feat(baselines): implement baseline matching canonicalization (#453)
Replaced legacy tenant and environment bindings in the BaselineDriftEngine with the new ProviderResourceIdentity framework as defined in Spec 382. This ensures cross-environment compatibility and deterministic baseline matching.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #453
2026-06-15 22:48:48 +00:00

62 lines
3.1 KiB
PHP

<?php
declare(strict_types=1);
use App\Support\Baselines\BaselineSubjectKey;
use App\Support\Baselines\SubjectClass;
use App\Support\Resources\ResourceIdentity;
it('does not collapse same-label provider resources with different stable IDs', function (): void {
$left = BaselineSubjectKey::forProviderResourceIdentity(
subjectDomain: 'baseline',
subjectClass: SubjectClass::PolicyBacked,
subjectTypeKey: 'deviceConfiguration',
identity: ResourceIdentity::providerResource('fake-provider', 'policy', 'provider-resource-1'),
);
$right = BaselineSubjectKey::forProviderResourceIdentity(
subjectDomain: 'baseline',
subjectClass: SubjectClass::PolicyBacked,
subjectTypeKey: 'deviceConfiguration',
identity: ResourceIdentity::providerResource('fake-provider', 'policy', 'provider-resource-2'),
);
expect($left)->toStartWith('provider-resource:v1:baseline:policy_backed:deviceconfiguration:fake-provider:policy:provider_resource:')
->and($right)->toStartWith('provider-resource:v1:baseline:policy_backed:deviceconfiguration:fake-provider:policy:provider_resource:')
->and($left)->not->toBe($right);
});
it('creates canonical keys for built-in and virtual targets without provider object IDs', function (): void {
$builtin = BaselineSubjectKey::forProviderResourceIdentity(
subjectDomain: 'baseline',
subjectClass: SubjectClass::FoundationBacked,
subjectTypeKey: 'assignmentTarget',
identity: ResourceIdentity::canonicalBuiltin('fake-provider', 'target', 'all-principals'),
);
$virtual = BaselineSubjectKey::forProviderResourceIdentity(
subjectDomain: 'baseline',
subjectClass: SubjectClass::FoundationBacked,
subjectTypeKey: 'assignmentTarget',
identity: ResourceIdentity::virtualTarget('fake-provider', 'target', 'dynamic-group-all-devices'),
);
expect($builtin)->toStartWith('provider-resource:v1:baseline:foundation_backed:assignmenttarget:fake-provider:target:canonical_builtin:')
->and($virtual)->toStartWith('provider-resource:v1:baseline:foundation_backed:assignmenttarget:fake-provider:target:canonical_virtual_target:')
->and($builtin)->not->toBe($virtual);
});
it('validates only provider-resource canonical keys as canonical provider subject keys', function (): void {
$key = BaselineSubjectKey::forProviderResourceIdentity(
subjectDomain: 'baseline',
subjectClass: SubjectClass::PolicyBacked,
subjectTypeKey: 'deviceConfiguration',
identity: ResourceIdentity::providerResource('fake-provider', 'policy', 'provider-resource-1'),
);
expect(BaselineSubjectKey::isProviderResourceCanonicalKey($key))->toBeTrue()
->and(BaselineSubjectKey::isProviderResourceCanonicalKey('duplicate policy'))->toBeFalse()
->and(BaselineSubjectKey::isProviderResourceCanonicalKey('provider-resource:v1:baseline:policy_backed:deviceconfiguration:fake-provider:policy:provider_resource:not-a-sha'))->toBeFalse()
->and(BaselineSubjectKey::isProviderResourceCanonicalKey(null))->toBeFalse();
});