@@ -28,6 +28,7 @@ describe("EventEnvelope schema validation", () => {
2828 recordedtime : "2025-10-01T10:15:30.250Z" ,
2929 severitynumber : 2 ,
3030 severitytext : "INFO" ,
31+ plane : "data" ,
3132 } ;
3233
3334 describe ( "basic validation" , ( ) => {
@@ -44,6 +45,7 @@ describe("EventEnvelope schema validation", () => {
4445 ...baseValidEnvelope ,
4546 severitytext : "TRACE" ,
4647 severitynumber : 0 ,
48+ plane : "data" ,
4749 } ;
4850
4951 const result = $Envelope . safeParse ( envelope ) ;
@@ -55,6 +57,7 @@ describe("EventEnvelope schema validation", () => {
5557 ...baseValidEnvelope ,
5658 severitytext : "DEBUG" ,
5759 severitynumber : 1 ,
60+ plane : "data" ,
5861 } ;
5962
6063 const result = $Envelope . safeParse ( envelope ) ;
@@ -66,6 +69,7 @@ describe("EventEnvelope schema validation", () => {
6669 ...baseValidEnvelope ,
6770 severitytext : "INFO" ,
6871 severitynumber : 2 ,
72+ plane : "data" ,
6973 } ;
7074
7175 const result = $Envelope . safeParse ( envelope ) ;
@@ -77,6 +81,7 @@ describe("EventEnvelope schema validation", () => {
7781 ...baseValidEnvelope ,
7882 severitytext : "WARN" ,
7983 severitynumber : 3 ,
84+ plane : "data" ,
8085 } ;
8186
8287 const result = $Envelope . safeParse ( envelope ) ;
@@ -88,6 +93,7 @@ describe("EventEnvelope schema validation", () => {
8893 ...baseValidEnvelope ,
8994 severitytext : "ERROR" ,
9095 severitynumber : 4 ,
96+ plane : "data" ,
9197 } ;
9298
9399 const result = $Envelope . safeParse ( envelope ) ;
@@ -99,6 +105,7 @@ describe("EventEnvelope schema validation", () => {
99105 ...baseValidEnvelope ,
100106 severitytext : "FATAL" ,
101107 severitynumber : 5 ,
108+ plane : "data" ,
102109 } ;
103110
104111 const result = $Envelope . safeParse ( envelope ) ;
@@ -110,6 +117,7 @@ describe("EventEnvelope schema validation", () => {
110117 ...baseValidEnvelope ,
111118 severitytext : "TRACE" ,
112119 severitynumber : 1 ,
120+ plane : "data" ,
113121 } ;
114122
115123 const result = $Envelope . safeParse ( envelope ) ;
@@ -121,6 +129,7 @@ describe("EventEnvelope schema validation", () => {
121129 ...baseValidEnvelope ,
122130 severitytext : "DEBUG" ,
123131 severitynumber : 2 ,
132+ plane : "data" ,
124133 } ;
125134
126135 const result = $Envelope . safeParse ( envelope ) ;
@@ -132,6 +141,7 @@ describe("EventEnvelope schema validation", () => {
132141 ...baseValidEnvelope ,
133142 severitytext : "INFO" ,
134143 severitynumber : 1 ,
144+ plane : "data" ,
135145 } ;
136146
137147 const result = $Envelope . safeParse ( envelope ) ;
@@ -143,6 +153,7 @@ describe("EventEnvelope schema validation", () => {
143153 ...baseValidEnvelope ,
144154 severitytext : "WARN" ,
145155 severitynumber : 2 ,
156+ plane : "data" ,
146157 } ;
147158
148159 const result = $Envelope . safeParse ( envelope ) ;
@@ -154,6 +165,7 @@ describe("EventEnvelope schema validation", () => {
154165 ...baseValidEnvelope ,
155166 severitytext : "ERROR" ,
156167 severitynumber : 3 ,
168+ plane : "data" ,
157169 } ;
158170
159171 const result = $Envelope . safeParse ( envelope ) ;
@@ -165,6 +177,7 @@ describe("EventEnvelope schema validation", () => {
165177 ...baseValidEnvelope ,
166178 severitytext : "FATAL" ,
167179 severitynumber : 4 ,
180+ plane : "data" ,
168181 } ;
169182
170183 const result = $Envelope . safeParse ( envelope ) ;
@@ -176,6 +189,7 @@ describe("EventEnvelope schema validation", () => {
176189 ...baseValidEnvelope ,
177190 severitytext : undefined ,
178191 severitynumber : 2 ,
192+ plane : "data" ,
179193 } ;
180194
181195 const result = $Envelope . safeParse ( envelope ) ;
@@ -187,6 +201,7 @@ describe("EventEnvelope schema validation", () => {
187201 ...baseValidEnvelope ,
188202 severitytext : "INFO" ,
189203 severitynumber : 2 ,
204+ plane : "data" ,
190205 } ;
191206
192207 const result = $Envelope . safeParse ( envelope ) ;
@@ -208,6 +223,7 @@ describe("EventEnvelope schema validation", () => {
208223 dataclassification : "restricted" ,
209224 dataregulation : "GDPR" ,
210225 datacategory : "sensitive" ,
226+ plane : "data" ,
211227 } ;
212228
213229 const result = $Envelope . safeParse ( envelope ) ;
@@ -216,65 +232,12 @@ describe("EventEnvelope schema validation", () => {
216232 } ) ;
217233 } ) ;
218234
219- describe ( "source validation" , ( ) => {
220- it ( "should accept source with letter-rendering plane" , ( ) => {
221- const envelope = {
222- ...baseValidEnvelope ,
223- source : "/data-plane/letter-rendering/ordering" ,
224- } ;
225-
226- const result = $Envelope . safeParse ( envelope ) ;
227- expect ( result . error ) . toBeUndefined ( ) ;
228- expect ( result . success ) . toBe ( true ) ;
229- } ) ;
230-
231- it ( "should accept source with digital-letters domain" , ( ) => {
232- const envelope = {
233- ...baseValidEnvelope ,
234- source : "/data-plane/digital-letters/ordering" ,
235- } ;
236-
237- const result = $Envelope . safeParse ( envelope ) ;
238- expect ( result . error ) . toBeUndefined ( ) ;
239- expect ( result . success ) . toBe ( true ) ;
240- } ) ;
241-
242- it ( "should accept source with digital-letters domain and additional path" , ( ) => {
243- const envelope = {
244- ...baseValidEnvelope ,
245- source : "/data-plane/digital-letters/ordering/sub-path" ,
246- } ;
247-
248- const result = $Envelope . safeParse ( envelope ) ;
249- expect ( result . error ) . toBeUndefined ( ) ;
250- expect ( result . success ) . toBe ( true ) ;
251- } ) ;
252-
253- it ( "should accept source with letter-rendering plane and additional path" , ( ) => {
254- const envelope = {
255- ...baseValidEnvelope ,
256- source : "/data-plane/letter-rendering/ordering/sub-path/more" ,
257- } ;
258-
259- const result = $Envelope . safeParse ( envelope ) ;
260- expect ( result . error ) . toBeUndefined ( ) ;
261- expect ( result . success ) . toBe ( true ) ;
262- } ) ;
263-
235+ describe ( "edge cases" , ( ) => {
264236 it ( "should reject invalid source pattern" , ( ) => {
265237 const envelope = {
266238 ...baseValidEnvelope ,
267239 source : "/invalid-plane/test" ,
268- } ;
269-
270- const result = $Envelope . safeParse ( envelope ) ;
271- expect ( result . success ) . toBe ( false ) ;
272- } ) ;
273-
274- it ( "should reject source without data-plane prefix" , ( ) => {
275- const envelope = {
276- ...baseValidEnvelope ,
277- source : "/digital-letters/ordering" ,
240+ plane : "data" ,
278241 } ;
279242
280243 const result = $Envelope . safeParse ( envelope ) ;
@@ -304,13 +267,15 @@ describe("EventEnvelope schema validation", () => {
304267 recordedtime : "2025-10-01T10:15:30.250Z" ,
305268 severitynumber : 2 ,
306269 severitytext : "INFO" as const ,
270+ plane : "data" ,
307271 } ;
308272
309273 it ( "should accept subject with valid prefix when prefix is required" , ( ) => {
310274 const envelope = {
311275 ...baseLetterEnvelope ,
312276 subject :
313277 "letter-origin/letter-rendering/letter/f47ac10b-58cc-4372-a567-0e02b2c3d479" ,
278+ plane : "data" ,
314279 } ;
315280
316281 const result = $EnvelopeWithPrefix . safeParse ( envelope ) ;
@@ -322,6 +287,7 @@ describe("EventEnvelope schema validation", () => {
322287 const envelope = {
323288 ...baseLetterEnvelope ,
324289 subject : "letter/f47ac10b-58cc-4372-a567-0e02b2c3d479" ,
290+ plane : "data" ,
325291 } ;
326292
327293 const result = $EnvelopeWithPrefix . safeParse ( envelope ) ;
@@ -334,6 +300,7 @@ describe("EventEnvelope schema validation", () => {
334300 const envelope = {
335301 ...baseLetterEnvelope ,
336302 subject : "letter-origin/letter/f47ac10b-58cc-4372-a567-0e02b2c3d479" ,
303+ plane : "data" ,
337304 } ;
338305
339306 const result = $EnvelopeWithPrefix . safeParse ( envelope ) ;
@@ -359,6 +326,7 @@ describe("EventEnvelope schema validation", () => {
359326 recordedtime : "2025-10-01T10:15:30.250Z" ,
360327 severitynumber : 2 ,
361328 severitytext : "INFO" as const ,
329+ plane : "data" ,
362330 } ;
363331
364332 const result = $EnvelopeNoPrefix . safeParse ( envelope ) ;
@@ -378,6 +346,7 @@ describe("EventEnvelope schema validation", () => {
378346 const envelope = {
379347 ...baseLetterEnvelope ,
380348 subject : "a/b/c/letter/test-id-123" ,
349+ plane : "data" ,
381350 } ;
382351
383352 const result = $EnvelopeMultiSegmentPrefix . safeParse ( envelope ) ;
@@ -404,10 +373,57 @@ describe("EventEnvelope schema validation", () => {
404373 recordedtime : "2025-10-01T10:15:30.250Z" ,
405374 severitynumber : 2 ,
406375 severitytext : "INFO" as const ,
376+ plane : "data" ,
407377 } ;
408378
409379 const result = $EnvelopeNoPrefix . safeParse ( envelope ) ;
410380 expect ( result . success ) . toBe ( false ) ;
411381 } ) ;
412382 } ) ;
383+
384+ // Additional tests for digital-letters source and optional request ID fields
385+ describe ( "source validation" , ( ) => {
386+ it ( "should accept source with digital-letters domain" , ( ) => {
387+ const envelope = {
388+ ...baseValidEnvelope ,
389+ source : "/data-plane/digital-letters/ordering" ,
390+ plane : "data" ,
391+ } ;
392+ const result = $Envelope . safeParse ( envelope ) ;
393+ expect ( result . error ) . toBeUndefined ( ) ;
394+ expect ( result . success ) . toBe ( true ) ;
395+ } ) ;
396+ it ( "should accept source with digital-letters domain and additional path" , ( ) => {
397+ const envelope = {
398+ ...baseValidEnvelope ,
399+ source : "/data-plane/digital-letters/ordering/sub-path" ,
400+ plane : "data" ,
401+ } ;
402+ const result = $Envelope . safeParse ( envelope ) ;
403+ expect ( result . error ) . toBeUndefined ( ) ;
404+ expect ( result . success ) . toBe ( true ) ;
405+ } ) ;
406+ it ( "should accept source with letter-rendering plane and additional path" , ( ) => {
407+ const envelope = {
408+ ...baseValidEnvelope ,
409+ source : "/data-plane/letter-rendering/ordering/sub-path/more" ,
410+ plane : "data" ,
411+ } ;
412+ const result = $Envelope . safeParse ( envelope ) ;
413+ expect ( result . error ) . toBeUndefined ( ) ;
414+ expect ( result . success ) . toBe ( true ) ;
415+ } ) ;
416+ } ) ;
417+ describe ( "optional request ID fields" , ( ) => {
418+ it ( "should accept envelope with optional requestId fields" , ( ) => {
419+ const envelope = {
420+ ...baseValidEnvelope ,
421+ requestId : "req-12345" ,
422+ correlationId : "corr-67890" ,
423+ plane : "data" ,
424+ } ;
425+ const result = $Envelope . safeParse ( envelope ) ;
426+ expect ( result . success ) . toBe ( true ) ;
427+ } ) ;
428+ } ) ;
413429} ) ;
0 commit comments