Skip to content

Commit cf7d3f3

Browse files
fix: add id for summit entity
1 parent 27c0e84 commit cf7d3f3

2 files changed

Lines changed: 51 additions & 1 deletion

File tree

app/Audit/AuditLogOtlpStrategy.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,14 @@ private function buildAuditLogData($entity, $subject, array $change_set, string
150150
$data['client.ip'] = $ctx->clientIp ?? null;
151151
$data['user_agent']= $ctx->userAgent ?? null;
152152

153-
if (method_exists($entity, 'getSummitId')) {
153+
if ($entity instanceof \models\summit\Summit) {
154+
if (method_exists($entity, 'getId')) {
155+
$summitId = $entity->getId();
156+
if ($summitId !== null) {
157+
$data['audit.summit_id'] = (string) $summitId;
158+
}
159+
}
160+
} elseif (method_exists($entity, 'getSummitId')) {
154161
$summitId = $entity->getSummitId();
155162
if ($summitId !== null) {
156163
$data['audit.summit_id'] = (string) $summitId;

tests/OpenTelemetry/AuditOtlpStrategyTest.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@
1212
namespace Tests\OpenTelemetry;
1313

1414
use App\Audit\AuditLogOtlpStrategy;
15+
use App\Audit\AuditContext;
16+
use App\Jobs\EmitAuditLogJob;
1517
use App\Models\Foundation\Main\IGroup;
1618
use Tests\InsertMemberTestData;
1719
use Tests\InsertSummitTestData;
1820
use OpenTelemetry\API\Trace\StatusCode;
1921
use OpenTelemetry\API\Trace\TracerInterface;
22+
use Illuminate\Support\Facades\Queue;
2023

2124
class AuditOtlpStrategyTest extends OpenTelemetryTestCase
2225
{
@@ -178,4 +181,44 @@ private function isOpenTelemetryEnabled(): bool
178181
{
179182
return getenv('OTEL_SERVICE_ENABLED') === 'true';
180183
}
184+
185+
186+
public function testAuditSummitEntityPopulatesSummitIdCorrectly(): void
187+
{
188+
$this->skipIfOpenTelemetryDisabled();
189+
190+
Queue::fake();
191+
192+
$ctx = new AuditContext();
193+
$ctx->userId = self::$member->getId();
194+
$ctx->userEmail = self::$member->getEmail();
195+
$ctx->userFirstName = self::$member->getFirstName();
196+
$ctx->userLastName = self::$member->getLastName();
197+
$ctx->uiApp = 'test-app';
198+
$ctx->uiFlow = 'test-flow';
199+
$ctx->route = 'api.summits.update';
200+
$ctx->httpMethod = 'PUT';
201+
$ctx->clientIp = '127.0.0.1';
202+
$ctx->userAgent = 'Test-Agent/1.0';
203+
204+
$simulatedChangeSet = [
205+
'name' => [self::$summit->getName(), self::$summit->getName() . ' [UPDATED]']
206+
];
207+
208+
$this->auditStrategy->audit(
209+
self::$summit,
210+
$simulatedChangeSet,
211+
AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE,
212+
$ctx
213+
);
214+
215+
Queue::assertPushed(EmitAuditLogJob::class, function ($job) {
216+
$this->assertArrayHasKey('audit.summit_id', $job->auditData);
217+
$this->assertEquals((string)self::$summit->getId(), $job->auditData['audit.summit_id']);
218+
219+
$this->assertEquals('Summit', $job->auditData['audit.entity']);
220+
221+
return true;
222+
});
223+
}
181224
}

0 commit comments

Comments
 (0)