@@ -447,3 +447,67 @@ func TestPublishWithHeaders(t *testing.T) {
447447 // assert.Contains(t, msg.Header, "custom_header1")
448448 // assert.Contains(t, msg.Header, "custom_header2")
449449}
450+
451+ func TestPublishMetadataProperties (t * testing.T ) {
452+ rabbitmqHost := getTestRabbitMQHost ()
453+ require .NotEmpty (t , rabbitmqHost , fmt .Sprintf ("RabbitMQ host configuration must be set in environment variable '%s'" , testRabbitMQHostEnvKey ))
454+
455+ queueName := uuid .New ().String ()
456+ durable := true
457+ exclusive := false
458+
459+ metadata := bindings.Metadata {
460+ Base : contribMetadata.Base {
461+ Name : "testQueue" ,
462+ Properties : map [string ]string {
463+ "queueName" : queueName ,
464+ "host" : rabbitmqHost ,
465+ "deleteWhenUnused" : strconv .FormatBool (exclusive ),
466+ "durable" : strconv .FormatBool (durable ),
467+ },
468+ },
469+ }
470+
471+ logger := logger .NewLogger ("test" )
472+ r := NewRabbitMQ (logger ).(* RabbitMQ )
473+ err := r .Init (t .Context (), metadata )
474+ require .NoError (t , err )
475+
476+ conn , err := amqp .Dial (rabbitmqHost )
477+ require .NoError (t , err )
478+ defer conn .Close ()
479+
480+ ch , err := conn .Channel ()
481+ require .NoError (t , err )
482+ defer ch .Close ()
483+
484+ const messageData = "test message"
485+ const msgID = "msg-123"
486+ const corrID = "corr-456"
487+ const msgType = "testType"
488+ const contentType = "application/json"
489+
490+ writeRequest := bindings.InvokeRequest {
491+ Data : []byte (messageData ),
492+ Metadata : map [string ]string {
493+ "messageID" : msgID ,
494+ "correlationID" : corrID ,
495+ "type" : msgType ,
496+ "contentType" : contentType ,
497+ },
498+ }
499+ _ , err = r .Invoke (t .Context (), & writeRequest )
500+ require .NoError (t , err )
501+
502+ // Retrieve the message.
503+ msg , ok , err := getMessageWithRetries (ch , queueName , 2 * time .Second )
504+ require .NoError (t , err )
505+ assert .True (t , ok )
506+ assert .Equal (t , messageData , string (msg .Body ))
507+ assert .Equal (t , msgID , msg .MessageId )
508+ assert .Equal (t , corrID , msg .CorrelationId )
509+ assert .Equal (t , msgType , msg .Type )
510+ assert .Equal (t , contentType , msg .ContentType )
511+
512+ require .NoError (t , r .Close ())
513+ }
0 commit comments