ldc-arcadia-api/tests/Unit/Infra/Adapters/Services/TimestampValidatorImplTest.php

52 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Unit\Infra\Adapters\Services;
use DateTimeImmutable;
use DateTimeZone;
use Infra\Adapters\Services\TimestampValidatorImpl;
covers(TimestampValidatorImpl::class);
describe('TimestampValidatorImpl Unit Tests', function (): void {
it('accepts timestamps within the 300 seconds skew window', function (string $modifier): void {
// GIVEN
$timezone = new DateTimeZone('UTC');
$validator = new TimestampValidatorImpl($timezone);
$timestamp = new DateTimeImmutable($modifier, $timezone);
// WHEN
$isValid = $validator->validate($timestamp);
// THEN
expect($isValid)->toBeTrue();
})->with([
'now',
'-2 minutes',
'+2 minutes',
'-299 seconds',
'+299 seconds',
]);
it('rejects timestamps outside the 300 seconds skew window', function (string $modifier): void {
// GIVEN
$timezone = new DateTimeZone('UTC');
$validator = new TimestampValidatorImpl($timezone);
$timestamp = new DateTimeImmutable($modifier, $timezone);
// WHEN
$isValid = $validator->validate($timestamp);
// THEN
expect($isValid)->toBeFalse();
})->with([
'-6 minutes',
'+6 minutes',
'-301 seconds',
'+301 seconds',
'-1 day',
'+1 day',
]);
});