TenantAtlas/apps/platform/tests/Unit/Support/TenantConfiguration/ClaimGuardTest.php
Ahmed Darrazi 611b19910e
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 4m27s
feat: migrate tcm first coverage core cutover
2026-06-25 14:54:31 +02:00

74 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
use App\Services\TenantConfiguration\ClaimGuard;
use App\Support\TenantConfiguration\ClaimState;
use App\Support\TenantConfiguration\CoverageLevel;
use App\Support\TenantConfiguration\RestoreTier;
use App\Support\TenantConfiguration\SourceClass;
it('Spec414 blocks unscoped 100 percent claims', function () {
$guard = new ClaimGuard;
expect($guard->evaluate(
scopeKey: null,
requestedLevel: CoverageLevel::ContentBacked,
actualLevel: CoverageLevel::ContentBacked,
scopeComplete: true,
unscoped: true,
percentage: 100,
))->toBe(ClaimState::ClaimBlocked);
});
it('Spec414 blocks certified claims for beta experimental resource types by default', function () {
$guard = new ClaimGuard;
expect($guard->evaluate(
scopeKey: 'intune_tcm_core',
requestedLevel: CoverageLevel::Certified,
actualLevel: CoverageLevel::Certified,
scopeComplete: true,
sourceClass: SourceClass::GraphBetaExperimental,
allowsBetaClaims: false,
allowsCertifiedClaims: false,
))->toBe(ClaimState::ClaimBlocked);
});
it('Spec414 blocks restore claims when the resource type is not restorable', function () {
$guard = new ClaimGuard;
expect($guard->evaluate(
scopeKey: 'intune_tcm_core',
requestedLevel: CoverageLevel::Restorable,
actualLevel: CoverageLevel::Restorable,
scopeComplete: true,
restoreTier: RestoreTier::PreviewOnly,
restoreClaim: true,
))->toBe(ClaimState::ClaimBlocked);
});
it('Spec414 blocks customer-facing claims for incomplete supported scopes', function () {
$guard = new ClaimGuard;
expect($guard->evaluate(
scopeKey: 'intune_tcm_core',
requestedLevel: CoverageLevel::ContentBacked,
actualLevel: CoverageLevel::ContentBacked,
scopeComplete: false,
customerFacing: true,
))->toBe(ClaimState::ClaimBlocked);
});
it('Spec414 allows exact scope and level claims', function () {
$guard = new ClaimGuard;
expect($guard->evaluate(
scopeKey: 'intune_tcm_core',
requestedLevel: CoverageLevel::ContentBacked,
actualLevel: CoverageLevel::Comparable,
scopeComplete: true,
customerFacing: true,
))->toBe(ClaimState::ClaimAllowed);
});