syncDefaults(); $rows = TenantConfigurationResourceType::query() ->whereIn('canonical_type', ['transportRule', 'acceptedDomain', 'appPermissionPolicy', 'meetingPolicy']) ->get(); expect($rows)->toHaveCount(4); foreach ($rows as $row) { expect($row->default_claim_state)->toBe(ClaimState::InternalOnly) ->and($row->restore_tier)->not->toBe(RestoreTier::Restorable) ->and((bool) data_get($row->metadata, 'customer_claims_allowed'))->toBeFalse() ->and(app(ClaimGuard::class)->evaluate( scopeKey: 'spec427_exchange_teams_internal', requestedLevel: CoverageLevel::Renderable, actualLevel: CoverageLevel::Detected, scopeComplete: true, customerFacing: true, customerClaimsAllowed: false, sourceClass: $row->source_class, restoreTier: $row->restore_tier, identityState: IdentityState::Stable, ))->toBe(ClaimState::ClaimBlocked) ->and(app(ClaimGuard::class)->evaluate( scopeKey: 'spec427_exchange_teams_internal', requestedLevel: CoverageLevel::Renderable, actualLevel: CoverageLevel::Detected, scopeComplete: true, sourceClass: $row->source_class, restoreTier: $row->restore_tier, identityState: IdentityState::Stable, restoreClaim: true, ))->toBe(ClaimState::ClaimBlocked); } expect(app(ClaimGuard::class)->evaluateStatement('Microsoft 365 customer-ready Exchange Teams evidence', internalOperatorOnly: true)) ->toBe(ClaimState::ClaimBlocked); });