Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 1m9s
Added ProviderResourceBinding model, migrations, policies, and supporting framework for canonical resource identity mapping as defined in Spec 381.
48 lines
2.2 KiB
PHP
48 lines
2.2 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);
|
|
});
|