From b51c49598dc0f4991be76a2a5c526248353753ea Mon Sep 17 00:00:00 2001 From: Jose Andres Tejerina Date: Wed, 18 Feb 2026 19:13:48 -0300 Subject: [PATCH] fix: add id for summit entity --- app/Audit/AuditLogOtlpStrategy.php | 9 +++- tests/OpenTelemetry/AuditOtlpStrategyTest.php | 43 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/app/Audit/AuditLogOtlpStrategy.php b/app/Audit/AuditLogOtlpStrategy.php index 92c3848c1..e5881b6e4 100644 --- a/app/Audit/AuditLogOtlpStrategy.php +++ b/app/Audit/AuditLogOtlpStrategy.php @@ -150,7 +150,14 @@ private function buildAuditLogData($entity, $subject, array $change_set, string $data['client.ip'] = $ctx->clientIp ?? null; $data['user_agent']= $ctx->userAgent ?? null; - if (method_exists($entity, 'getSummitId')) { + if ($entity instanceof \models\summit\Summit) { + if (method_exists($entity, 'getId')) { + $summitId = $entity->getId(); + if ($summitId !== null) { + $data['audit.summit_id'] = (string) $summitId; + } + } + } elseif (method_exists($entity, 'getSummitId')) { $summitId = $entity->getSummitId(); if ($summitId !== null) { $data['audit.summit_id'] = (string) $summitId; diff --git a/tests/OpenTelemetry/AuditOtlpStrategyTest.php b/tests/OpenTelemetry/AuditOtlpStrategyTest.php index 9d6d98041..a80d245cb 100644 --- a/tests/OpenTelemetry/AuditOtlpStrategyTest.php +++ b/tests/OpenTelemetry/AuditOtlpStrategyTest.php @@ -12,11 +12,14 @@ namespace Tests\OpenTelemetry; use App\Audit\AuditLogOtlpStrategy; +use App\Audit\AuditContext; +use App\Jobs\EmitAuditLogJob; use App\Models\Foundation\Main\IGroup; use Tests\InsertMemberTestData; use Tests\InsertSummitTestData; use OpenTelemetry\API\Trace\StatusCode; use OpenTelemetry\API\Trace\TracerInterface; +use Illuminate\Support\Facades\Queue; class AuditOtlpStrategyTest extends OpenTelemetryTestCase { @@ -178,4 +181,44 @@ private function isOpenTelemetryEnabled(): bool { return getenv('OTEL_SERVICE_ENABLED') === 'true'; } + + + public function testAuditSummitEntityPopulatesSummitIdCorrectly(): void + { + $this->skipIfOpenTelemetryDisabled(); + + Queue::fake(); + + $ctx = new AuditContext(); + $ctx->userId = self::$member->getId(); + $ctx->userEmail = self::$member->getEmail(); + $ctx->userFirstName = self::$member->getFirstName(); + $ctx->userLastName = self::$member->getLastName(); + $ctx->uiApp = 'test-app'; + $ctx->uiFlow = 'test-flow'; + $ctx->route = 'api.summits.update'; + $ctx->httpMethod = 'PUT'; + $ctx->clientIp = '127.0.0.1'; + $ctx->userAgent = 'Test-Agent/1.0'; + + $simulatedChangeSet = [ + 'name' => [self::$summit->getName(), self::$summit->getName() . ' [UPDATED]'] + ]; + + $this->auditStrategy->audit( + self::$summit, + $simulatedChangeSet, + AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE, + $ctx + ); + + Queue::assertPushed(EmitAuditLogJob::class, function ($job) { + $this->assertArrayHasKey('audit.summit_id', $job->auditData); + $this->assertEquals((string)self::$summit->getId(), $job->auditData['audit.summit_id']); + + $this->assertEquals('Summit', $job->auditData['audit.entity']); + + return true; + }); + } }