TenantAtlas/apps/platform/tests/Feature/TenantConfiguration/TenantConfigurationSupportedScopeTest.php
ahmido dfda397eb6 feat: migrate tcm first coverage core cutover (#481)
Automated PR provided by Codex via Gitea API.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #481
2026-06-25 12:54:56 +00:00

68 lines
2.7 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\TenantConfigurationSupportedScope;
use App\Services\TenantConfiguration\ResourceTypeRegistry;
use App\Services\TenantConfiguration\SupportedScopeResolver;
use App\Support\TenantConfiguration\CoverageLevel;
it('Spec414 persists supported-scope denominators and minimum levels', function () {
$resolver = new SupportedScopeResolver;
$scope = $resolver->findActive('intune_tcm_core');
expect($scope)->not->toBeNull()
->and($scope?->minimum_coverage_level)->toBe(CoverageLevel::ContentBacked)
->and($scope?->included_resource_types)->toBe([
'deviceAndAppManagementAssignmentFilter',
'deviceEnrollmentLimitRestriction',
'deviceEnrollmentPlatformRestriction',
'deviceEnrollmentStatusPageWindows10',
'appProtectionPolicyAndroid',
'appProtectionPolicyiOS',
])
->and($scope?->allow_beta)->toBeFalse()
->and($scope?->allow_graph_fallback)->toBeFalse();
});
it('Spec414 resolves persisted scopes against persisted active resource types', function () {
$resolver = new SupportedScopeResolver;
$scope = $resolver->findActive('intune_tcm_core_with_graph_fallback');
$resourceTypes = (new ResourceTypeRegistry)->active();
expect($scope)->not->toBeNull();
$resolved = $resolver->resolveDefinition($scope, $resourceTypes);
expect($resolved['included_resource_types'])->toContain('notificationMessageTemplate')
->and($resolved['included_resource_types'])->not->toContain('roleScopeTag')
->and($resolved['allow_graph_fallback'])->toBeTrue();
});
it('Spec414 fails closed for persisted supported scopes with unknown denominator entries', function () {
$scope = TenantConfigurationSupportedScope::factory()->create([
'scope_key' => 'invalid_persisted_scope',
'minimum_coverage_level' => CoverageLevel::ContentBacked->value,
'included_resource_types' => [
'deviceAndAppManagementAssignmentFilter',
'unknownResourceType',
],
'customer_claims_allowed' => true,
]);
expect(fn () => (new SupportedScopeResolver)->resolveDefinition($scope, (new ResourceTypeRegistry)->active()))
->toThrow(UnexpectedValueException::class, 'unknownResourceType');
});
it('Spec414 keeps default supported-scope setup upsert-safe', function () {
$resolver = new SupportedScopeResolver;
$resolver->syncDefaults();
$resolver->syncDefaults();
expect(TenantConfigurationSupportedScope::query()->count())->toBe(2)
->and(TenantConfigurationSupportedScope::query()
->where('scope_key', 'intune_tcm_core')
->count())->toBe(1);
});