Added `ProviderResourceBinding` model, migrations, policies, and supporting framework for canonical resource identity mapping as defined in Spec 381. This provides the structural capability to resolve baseline and posture discrepancies by binding logical entities across source providers to canonical identities. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #452
34 lines
1.4 KiB
PHP
34 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Support\Resources\ResourceIdentity;
|
|
|
|
it('represents provider resource identity forms without display labels', function (): void {
|
|
$identities = [
|
|
ResourceIdentity::providerResource('fake-provider', 'policy', 'resource-1'),
|
|
ResourceIdentity::canonicalBuiltin('fake-provider', 'assignment-target', 'all-principals'),
|
|
ResourceIdentity::canonicalDefault('fake-provider', 'scope-tag', 'default-tag'),
|
|
ResourceIdentity::virtualTarget('fake-provider', 'assignment-target', 'all-devices-dynamic'),
|
|
ResourceIdentity::unsupported('fake-provider', 'foundation-resource', 'not-covered'),
|
|
ResourceIdentity::unknown('fake-provider', 'policy', 'unknown-policy'),
|
|
];
|
|
|
|
expect($identities)->toHaveCount(6);
|
|
|
|
foreach ($identities as $identity) {
|
|
expect($identity->providerKey)->toBe('fake-provider')
|
|
->and($identity->stableIdentityValue())->not->toBeNull()
|
|
->and($identity->toArray())->not->toHaveKey('display_label')
|
|
->and($identity->fingerprint())->toBeString()->toHaveLength(64);
|
|
}
|
|
});
|
|
|
|
it('restores serialized provider-neutral identities', function (): void {
|
|
$identity = ResourceIdentity::canonicalBuiltin('fake-provider', 'built-in-group', 'all-workers');
|
|
|
|
$restored = ResourceIdentity::fromArray($identity->toArray());
|
|
|
|
expect($restored->toArray())->toBe($identity->toArray());
|
|
});
|