@@ -447,3 +447,53 @@ func TestUpdateMetadata(t *testing.T) {
447
447
require .NoError (err )
448
448
assert .Equal (expectedMetaData , newMessage .Metadata )
449
449
}
450
+
451
+ func TestUpdateMetadataWithNil (t * testing.T ) {
452
+ assert := assert .New (t )
453
+ require := require .New (t )
454
+ msg := wrp.Message {
455
+ Type : wrp .SimpleEventMessageType ,
456
+ Source : "external.com" ,
457
+ Destination : "mac:FFEEAADD44443333" ,
458
+ TransactionUUID : "DEADBEEF" ,
459
+ Headers : []string {"Header1" , "Header2" },
460
+ Spans : [][]string {{"1" , "2" }, {"3" }},
461
+ Payload : []byte {1 , 2 , 3 , 4 , 0xff , 0xce },
462
+ PartnerIDs : []string {"foo" },
463
+ }
464
+ originalContents := []byte {}
465
+ err := wrp .NewEncoderBytes (& originalContents , wrp .Msgpack ).Encode (& msg )
466
+ require .NoError (err )
467
+ device := newDevice (deviceOptions {
468
+ ID : "mac:FFEEAADD44443333" ,
469
+ C : nil ,
470
+ Compliance : 0 ,
471
+ PartnerIDs : nil ,
472
+ SatClientID : "" ,
473
+ Trust : "" ,
474
+ QueueSize : 0 ,
475
+ ConnectedAt : time.Time {},
476
+ Logger : nil ,
477
+ })
478
+ originalEvent := Event {
479
+ Type : MessageReceived ,
480
+ Device : device ,
481
+ Message : & msg ,
482
+ Format : wrp .Msgpack ,
483
+ Contents : originalContents ,
484
+ }
485
+
486
+ event := updateEventMetadata (originalEvent )
487
+
488
+ assert .Equal (originalEvent .Device , event .Device )
489
+ assert .Equal (originalEvent .Message , event .Message )
490
+ assert .NotEqual (originalEvent .Contents , event .Contents )
491
+ assert .Equal (originalEvent .Format , event .Format )
492
+
493
+ expectedMetaData := map [string ]string {"session-id" : device .SessionID (), "partner-ids" : strings .Join (device .PartnerIDs (), "," )}
494
+
495
+ newMessage := new (wrp.Message )
496
+ err = wrp .NewDecoderBytes (event .Contents , event .Format ).Decode (newMessage )
497
+ require .NoError (err )
498
+ assert .Equal (expectedMetaData , newMessage .Metadata )
499
+ }
0 commit comments