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
40 lines
1.6 KiB
PHP
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));
|
|
});
|