@@ -26,6 +26,23 @@ class AuditOtlpStrategyTest extends OpenTelemetryTestCase
2626 use InsertSummitTestData;
2727 use InsertMemberTestData;
2828
29+ private const TEST_APP = 'test-app ' ;
30+ private const TEST_FLOW = 'test-flow ' ;
31+ private const TEST_ROUTE = 'api.summits.update ' ;
32+ private const TEST_HTTP_METHOD = 'PUT ' ;
33+ private const TEST_CLIENT_IP = '127.0.0.1 ' ;
34+ private const TEST_USER_AGENT = 'Test-Agent/1.0 ' ;
35+ private const SPAN_SUMMIT_CHANGE = 'test.audit.summit_change ' ;
36+ private const SPAN_SUMMIT_EVENT_CHANGE = 'test.audit.summit_event_change ' ;
37+ private const SPAN_NO_ACTIVE_SPAN = 'test.audit.no_span ' ;
38+ private const SPAN_EMPTY_CHANGESET = 'test.audit.empty_changeset ' ;
39+ private const SUFFIX_TEST = '[TEST] ' ;
40+ private const SUFFIX_UPDATED = '[UPDATED] ' ;
41+ private const SPAN_EVENT_STARTED = 'test.started ' ;
42+ private const EVENT_COMPLETED = 'Summit audit completed ' ;
43+ private const EVENT_CHANGE_COMPLETED = 'SummitEvent audit completed ' ;
44+ private const EVENT_EMPTY_COMPLETED = 'Empty changeset audit completed ' ;
45+
2946 private AuditLogOtlpStrategy $ auditStrategy ;
3047
3148 protected function setUp (): void
@@ -51,24 +68,26 @@ public function testAuditSummitChangeWithOtlp(): void
5168 $ this ->skipIfOpenTelemetryDisabled ();
5269
5370 $ tracer = $ this ->app ->make (TracerInterface::class);
54- $ span = $ tracer ->spanBuilder (' test.audit.summit_change ' )->startSpan ();
71+ $ span = $ tracer ->spanBuilder (self :: SPAN_SUMMIT_CHANGE )->startSpan ();
5572 $ spanScope = $ span ->activate ();
5673
5774 try {
58- $ span ->addEvent (' test.started ' , [
75+ $ span ->addEvent (self :: SPAN_EVENT_STARTED , [
5976 'summit_id ' => self ::$ summit ->getId (),
6077 'summit_name ' => self ::$ summit ->getName ()
6178 ]);
6279
6380 $ simulatedChangeSet = $ this ->createSummitChangeSet ();
81+ $ ctx = $ this ->createAuditContext ();
6482
6583 $ this ->auditStrategy ->audit (
6684 self ::$ summit ,
6785 $ simulatedChangeSet ,
68- AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE
86+ AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE ,
87+ $ ctx
6988 );
7089
71- $ span ->setStatus (StatusCode::STATUS_OK , ' Summit audit completed ' );
90+ $ span ->setStatus (StatusCode::STATUS_OK , self :: EVENT_COMPLETED );
7291 $ this ->assertTrue (true );
7392
7493 } catch (\Exception $ e ) {
@@ -86,20 +105,22 @@ public function testAuditSummitEventChangeWithOtlp(): void
86105 $ this ->skipIfOpenTelemetryDisabled ();
87106
88107 $ tracer = $ this ->app ->make (TracerInterface::class);
89- $ span = $ tracer ->spanBuilder (' test.audit.summit_event_change ' )->startSpan ();
108+ $ span = $ tracer ->spanBuilder (self :: SPAN_SUMMIT_EVENT_CHANGE )->startSpan ();
90109 $ spanScope = $ span ->activate ();
91110
92111 try {
93112 $ summitEvent = self ::$ summit ->getEvents ()[0 ];
94113 $ simulatedChangeSet = $ this ->createSummitEventChangeSet ($ summitEvent );
114+ $ ctx = $ this ->createAuditContext ();
95115
96116 $ this ->auditStrategy ->audit (
97117 $ summitEvent ,
98118 $ simulatedChangeSet ,
99- AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE
119+ AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE ,
120+ $ ctx
100121 );
101122
102- $ span ->setStatus (StatusCode::STATUS_OK , ' SummitEvent audit completed ' );
123+ $ span ->setStatus (StatusCode::STATUS_OK , self :: EVENT_CHANGE_COMPLETED );
103124 $ this ->assertTrue (true );
104125
105126 } catch (\Exception $ e ) {
@@ -117,11 +138,13 @@ public function testAuditStrategyWithoutActiveSpan(): void
117138 $ this ->skipIfOpenTelemetryDisabled ();
118139
119140 $ simulatedChangeSet = ['name ' => ['Old Name ' , 'New Name ' ]];
141+ $ ctx = $ this ->createAuditContext ();
120142
121143 $ this ->auditStrategy ->audit (
122144 self ::$ summit ,
123145 $ simulatedChangeSet ,
124- AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE
146+ AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE ,
147+ $ ctx
125148 );
126149
127150 $ this ->assertTrue (true );
@@ -132,17 +155,19 @@ public function testAuditStrategyWithEmptyChangeSet(): void
132155 $ this ->skipIfOpenTelemetryDisabled ();
133156
134157 $ tracer = $ this ->app ->make (TracerInterface::class);
135- $ span = $ tracer ->spanBuilder (' test.audit.empty_changeset ' )->startSpan ();
158+ $ span = $ tracer ->spanBuilder (self :: SPAN_EMPTY_CHANGESET )->startSpan ();
136159 $ spanScope = $ span ->activate ();
137160
138161 try {
162+ $ ctx = $ this ->createAuditContext ();
139163 $ this ->auditStrategy ->audit (
140164 self ::$ summit ,
141165 [],
142- AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE
166+ AuditLogOtlpStrategy::EVENT_ENTITY_UPDATE ,
167+ $ ctx
143168 );
144169
145- $ span ->setStatus (StatusCode::STATUS_OK , ' Empty changeset audit completed ' );
170+ $ span ->setStatus (StatusCode::STATUS_OK , self :: EVENT_EMPTY_COMPLETED );
146171 $ this ->assertTrue (true );
147172
148173 } catch (\Exception $ e ) {
@@ -165,15 +190,15 @@ private function skipIfOpenTelemetryDisabled(): void
165190 private function createSummitChangeSet (): array
166191 {
167192 return [
168- 'name ' => [self ::$ summit ->getName (), self ::$ summit ->getName () . ' [TEST] ' ],
193+ 'name ' => [self ::$ summit ->getName (), self ::$ summit ->getName () . self :: SUFFIX_TEST ],
169194 'description ' => ['Original ' , 'Updated for test ' ]
170195 ];
171196 }
172197
173198 private function createSummitEventChangeSet (object $ summitEvent ): array
174199 {
175200 return [
176- 'title ' => [$ summitEvent ->getTitle (), $ summitEvent ->getTitle () . ' [TEST] ' ]
201+ 'title ' => [$ summitEvent ->getTitle (), $ summitEvent ->getTitle () . self :: SUFFIX_TEST ]
177202 ];
178203 }
179204
@@ -182,27 +207,33 @@ private function isOpenTelemetryEnabled(): bool
182207 return getenv ('OTEL_SERVICE_ENABLED ' ) === 'true ' ;
183208 }
184209
210+ private function createAuditContext (): AuditContext
211+ {
212+ return new AuditContext (
213+ userId: self ::$ member ->getId (),
214+ userEmail: self ::$ member ->getEmail (),
215+ userFirstName: self ::$ member ->getFirstName (),
216+ userLastName: self ::$ member ->getLastName (),
217+ uiApp: self ::TEST_APP ,
218+ uiFlow: self ::TEST_FLOW ,
219+ route: self ::TEST_ROUTE ,
220+ rawRoute: self ::TEST_ROUTE ,
221+ httpMethod: self ::TEST_HTTP_METHOD ,
222+ clientIp: self ::TEST_CLIENT_IP ,
223+ userAgent: self ::TEST_USER_AGENT ,
224+ );
225+ }
226+
185227
186228 public function testAuditSummitEntityPopulatesSummitIdCorrectly (): void
187229 {
188230 $ this ->skipIfOpenTelemetryDisabled ();
189231
190232 Queue::fake ();
191233
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-
234+ $ ctx = $ this ->createAuditContext ();
204235 $ simulatedChangeSet = [
205- 'name ' => [self ::$ summit ->getName (), self ::$ summit ->getName () . ' [UPDATED] ' ]
236+ 'name ' => [self ::$ summit ->getName (), self ::$ summit ->getName () . self :: SUFFIX_UPDATED ]
206237 ];
207238
208239 $ this ->auditStrategy ->audit (
@@ -215,9 +246,7 @@ public function testAuditSummitEntityPopulatesSummitIdCorrectly(): void
215246 Queue::assertPushed (EmitAuditLogJob::class, function ($ job ) {
216247 $ this ->assertArrayHasKey ('audit.summit_id ' , $ job ->auditData );
217248 $ this ->assertEquals ((string )self ::$ summit ->getId (), $ job ->auditData ['audit.summit_id ' ]);
218-
219249 $ this ->assertEquals ('Summit ' , $ job ->auditData ['audit.entity ' ]);
220-
221250 return true ;
222251 });
223252 }
0 commit comments