TenantAtlas/apps/platform/tests/Unit/Support/TenantConfiguration/Spec426ExchangeTeamsEvidenceHashTest.php
Ahmed Darrazi fb4dc20cb0
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 5m11s
feat: implement Exchange Teams evidence identity readiness
2026-07-03 13:41:08 +02: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));
});