59 lines
2.1 KiB
PHP
59 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);
|
||
|
|
});
|
||
|
|
});
|