@@ -14,7 +14,7 @@ static char *const SERIALIZED_ENVELOPE_STR
14
14
"\"production\",\"sampled\":\"false\"}}\n"
15
15
"{\"type\":\"event\",\"length\":71}\n"
16
16
"{\"event_id\":\"c993afb6-b4ac-48a6-b61b-2558e601d65d\",\"some-"
17
- "context\":null }\n"
17
+ "context\":1234 }\n"
18
18
"{\"type\":\"minidump\",\"length\":4}\n"
19
19
"MDMP\n"
20
20
"{\"type\":\"attachment\",\"length\":12}\n"
@@ -263,7 +263,8 @@ create_test_envelope()
263
263
sentry_value_t event = sentry_value_new_object ();
264
264
sentry_value_set_by_key (
265
265
event , "event_id" , sentry__value_new_uuid (& event_id ));
266
- sentry_value_set_by_key (event , "some-context" , sentry_value_new_null ());
266
+ sentry_value_set_by_key (
267
+ event , "some-context" , sentry_value_new_int32 (1234 ));
267
268
sentry__envelope_add_event (envelope , event );
268
269
269
270
char dmp [] = "MDMP" ;
@@ -319,6 +320,7 @@ SENTRY_TEST(write_envelope_to_file_null)
319
320
{
320
321
sentry_envelope_t * empty_envelope = sentry__envelope_new ();
321
322
323
+ TEST_CHECK (!sentry_envelope_read_from_file (NULL ));
322
324
TEST_CHECK_INT_EQUAL (
323
325
sentry_envelope_write_to_file (NULL , "irrelevant/path" ), 1 );
324
326
TEST_CHECK_INT_EQUAL (
@@ -336,6 +338,7 @@ SENTRY_TEST(write_envelope_to_invalid_path)
336
338
sentry_envelope_t * envelope = create_test_envelope ();
337
339
const char * test_file_str = SENTRY_TEST_PATH_PREFIX
338
340
"./directory_that_does_not_exist/sentry_test_envelope" ;
341
+ TEST_CHECK (!sentry_envelope_read_from_file (test_file_str ));
339
342
sentry_path_t * test_file_path = sentry__path_from_str (test_file_str );
340
343
int rv = sentry_envelope_write_to_file (envelope , test_file_str );
341
344
TEST_CHECK_INT_EQUAL (rv , 1 );
@@ -372,3 +375,76 @@ SENTRY_TEST(write_raw_envelope_to_file)
372
375
sentry_envelope_free (raw_envelope );
373
376
sentry_close ();
374
377
}
378
+
379
+ SENTRY_TEST (parse_envelope )
380
+ {
381
+ sentry_envelope_t * test_envelope = create_test_envelope ();
382
+ const char * test_file_str = SENTRY_TEST_PATH_PREFIX "sentry_test_envelope" ;
383
+ sentry_path_t * test_file_path = sentry__path_from_str (test_file_str );
384
+ TEST_CHECK_INT_EQUAL (
385
+ sentry_envelope_write_to_file (test_envelope , test_file_str ), 0 );
386
+
387
+ sentry_envelope_t * file_envelope
388
+ = sentry_envelope_read_from_file (test_file_str );
389
+
390
+ TEST_CHECK_STRING_EQUAL (sentry_value_as_string (sentry_envelope_get_header (
391
+ file_envelope , "dsn" )),
392
+
393
+ TEST_CHECK_STRING_EQUAL (sentry_value_as_string (sentry_envelope_get_header (
394
+ file_envelope , "event_id" )),
395
+ "c993afb6-b4ac-48a6-b61b-2558e601d65d" );
396
+
397
+ sentry_uuid_t event_id = sentry__envelope_get_event_id (file_envelope );
398
+ char event_id_str [37 ];
399
+ sentry_uuid_as_string (& event_id , event_id_str );
400
+ TEST_CHECK_STRING_EQUAL (
401
+ event_id_str , "c993afb6-b4ac-48a6-b61b-2558e601d65d" );
402
+
403
+ TEST_CHECK_INT_EQUAL (sentry__envelope_get_item_count (file_envelope ), 3 );
404
+
405
+ sentry_value_t event = sentry_envelope_get_event (file_envelope );
406
+ TEST_CHECK (!sentry_value_is_null (event ));
407
+ TEST_CHECK_INT_EQUAL (
408
+ sentry_value_as_int32 (sentry_value_get_by_key (event , "some-context" )),
409
+ 1234 );
410
+
411
+ const sentry_envelope_item_t * ev
412
+ = sentry__envelope_get_item (file_envelope , 0 );
413
+ TEST_CHECK (!!ev );
414
+ TEST_CHECK_STRING_EQUAL (
415
+ sentry_value_as_string (sentry__envelope_item_get_header (ev , "type" )),
416
+ "event" );
417
+ size_t ev_len = 0 ;
418
+ TEST_CHECK_STRING_EQUAL (sentry__envelope_item_get_payload (ev , & ev_len ),
419
+ "{\"event_id\":\"c993afb6-b4ac-48a6-b61b-2558e601d65d\","
420
+ "\"some-context\":1234}" );
421
+
422
+ const sentry_envelope_item_t * dmp
423
+ = sentry__envelope_get_item (file_envelope , 1 );
424
+ TEST_CHECK (!!dmp );
425
+ TEST_CHECK_STRING_EQUAL (
426
+ sentry_value_as_string (sentry__envelope_item_get_header (dmp , "type" )),
427
+ "minidump" );
428
+ size_t dmp_len = 0 ;
429
+ TEST_CHECK_STRING_EQUAL (
430
+ sentry__envelope_item_get_payload (dmp , & dmp_len ), "MDMP" );
431
+ TEST_CHECK_INT_EQUAL (dmp_len , 4 );
432
+
433
+ const sentry_envelope_item_t * attachment
434
+ = sentry__envelope_get_item (file_envelope , 2 );
435
+ TEST_CHECK (!!attachment );
436
+ TEST_CHECK_STRING_EQUAL (
437
+ sentry_value_as_string (
438
+ sentry__envelope_item_get_header (attachment , "type" )),
439
+ "attachment" );
440
+ size_t attachment_len = 0 ;
441
+ TEST_CHECK_STRING_EQUAL (
442
+ sentry__envelope_item_get_payload (attachment , & attachment_len ),
443
+ "Hello World!" );
444
+ TEST_CHECK_INT_EQUAL (attachment_len , 12 );
445
+
446
+ sentry__path_free (test_file_path );
447
+ sentry_envelope_free (test_envelope );
448
+ sentry_envelope_free (file_envelope );
449
+ sentry_close ();
450
+ }
0 commit comments