TenantAtlas/apps/platform/tests/Unit/Support/TenantConfiguration/Spec426ExchangeTeamsEvidenceHashTest.php
ahmido f7d06621a0 feat: implement Exchange Teams evidence identity readiness (#493)
Automated PR for spec 426 exchange teams core evidence identity readiness. Includes service changes and coverage/requirement/spec updates from commit fb4dc20c.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #493
2026-07-03 11:43:11 +00:00

40 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
use App\Services\TenantConfiguration\ExchangeTeamsComparablePayloadNormalizer;
use App\Services\TenantConfiguration\GenericPayloadNormalizer;
it('Spec426 hashes typed Exchange and Teams evidence deterministically after volatile fields are removed', function (): void {
$typed = app(ExchangeTeamsComparablePayloadNormalizer::class);
$hashes = app(GenericPayloadNormalizer::class);
$first = $typed->normalize('meetingPolicy', [
'policyId' => 'meeting-policy-global',
'DisplayName' => 'Global meeting policy',
'AllowCloudRecording' => false,
'modifiedDateTime' => '2026-07-01T10:00:00Z',
]);
$second = $typed->normalize('meetingPolicy', [
'policyId' => 'meeting-policy-global',
'DisplayName' => 'Global meeting policy',
'AllowCloudRecording' => false,
'modifiedDateTime' => '2026-07-02T10:00:00Z',
]);
$withoutVolatile = $typed->normalize('meetingPolicy', [
'policyId' => 'meeting-policy-global',
'DisplayName' => 'Global meeting policy',
'AllowCloudRecording' => false,
]);
$changed = $typed->normalize('meetingPolicy', [
'policyId' => 'meeting-policy-global',
'DisplayName' => 'Global meeting policy',
'AllowCloudRecording' => true,
'modifiedDateTime' => '2026-07-02T10:00:00Z',
]);
expect($hashes->payloadHash($first))->toBe($hashes->payloadHash($second))
->and($hashes->payloadHash($first))->toBe($hashes->payloadHash($withoutVolatile))
->and($hashes->payloadHash($first))->not->toBe($hashes->payloadHash($changed));
});