ldc-arcadia-api/tests/Unit/Application/Security/Usecases/GetSecurityAuditLogsTest.php

58 lines
2.1 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Unit\Application\Security\Usecases;
use Application\Security\Models\Entities\SecurityAuditLogEntry;
use Application\Security\Models\ValueObjects\Entities\SecurityAuditLogDetails;
use Application\Security\Models\ValueObjects\Entities\SecurityAuditLogEntryId;
use Application\Security\Ports\Directories\ClientAuditLogDirectory;
use Application\Security\Usecases\GetSecurityAuditLogs\GetSecurityAuditLogs;
use Application\Security\Usecases\GetSecurityAuditLogs\Input;
use Mockery;
use Ramsey\Uuid\Uuid;
covers(GetSecurityAuditLogs::class);
describe('GetSecurityAuditLogs UseCase Unit Tests', function (): void {
it('executes and retrieves security audit logs from directory', function (): void {
// GIVEN
$since = new \DateTimeImmutable('2026-08-01 00:00:00');
$to = new \DateTimeImmutable('2026-08-21 23:59:59');
$entries = [
new SecurityAuditLogEntry(
id: new SecurityAuditLogEntryId(Uuid::fromString('01917b2f-7f41-7654-8c88-66280be02222')),
clientId: Uuid::fromString('01917b2f-7f41-7654-8c88-66280be02222'),
clientIdentifier: 'arcadia_id_test1',
eventType: 'client_secret_generated',
details: SecurityAuditLogDetails::empty(),
),
];
/** @var ClientAuditLogDirectory&Mockery\MockInterface $directoryMock */
$directoryMock = Mockery::mock(ClientAuditLogDirectory::class);
$directoryMock->shouldReceive('findLogs')
->once()
->with($since, $to, 'arcadia_id_test1', 'client_secret_generated')
->andReturn($entries);
$usecase = new GetSecurityAuditLogs($directoryMock);
$input = new Input(
since: $since,
to: $to,
client: 'arcadia_id_test1',
eventType: 'client_secret_generated',
);
// WHEN
$output = $usecase->execute($input);
// THEN
expect($output->entries)->toBe($entries)
->and($output->count())->toBe(1)
->and($output->since)->toBe($since)
->and($output->to)->toBe($to);
});
});