@@ -85,6 +85,46 @@ describe.each([[true], [false]])('Consumer', (isAutoCommit) => {
8585 expect ( messagesConsumed . map ( m => m . message . offset ) ) . toEqual ( messages . map ( ( _ , i ) => `${ i } ` ) )
8686 } ) ;
8787
88+ it ( 'consume messages with headers' , async ( ) => {
89+ await consumer . connect ( ) ;
90+ await producer . connect ( ) ;
91+ await consumer . subscribe ( { topic : topicName } )
92+
93+ const messagesConsumed = [ ] ;
94+ consumer . run ( { eachMessage : async event => messagesConsumed . push ( event ) } ) ;
95+
96+ const messages = [ {
97+ value : `value-${ secureRandom } ` ,
98+ headers : {
99+ 'header-1' : 'value-1' ,
100+ 'header-2' : 'value-2' ,
101+ 'header-3' : [ 'value-3-1' , 'value-3-2' , Buffer . from ( [ 1 , 0 , 1 , 0 , 1 ] ) ] ,
102+ 'header-4' : Buffer . from ( [ 1 , 0 , 1 , 0 , 1 ] ) ,
103+ }
104+ } ]
105+
106+ await producer . send ( { topic : topicName , messages } )
107+ await waitForMessages ( messagesConsumed , { number : messages . length } )
108+
109+ expect ( messagesConsumed [ 0 ] ) . toEqual (
110+ expect . objectContaining ( {
111+ topic : topicName ,
112+ partition : 0 ,
113+ message : expect . objectContaining ( {
114+ value : Buffer . from ( messages [ 0 ] . value ) ,
115+ offset : '0' ,
116+ headers : {
117+ // Headers are always returned as Buffers from the broker.
118+ 'header-1' : Buffer . from ( 'value-1' ) ,
119+ 'header-2' : Buffer . from ( 'value-2' ) ,
120+ 'header-3' : [ Buffer . from ( 'value-3-1' ) , Buffer . from ( 'value-3-2' ) , Buffer . from ( [ 1 , 0 , 1 , 0 , 1 ] ) ] ,
121+ 'header-4' : Buffer . from ( [ 1 , 0 , 1 , 0 , 1 ] ) ,
122+ }
123+ } ) ,
124+ } )
125+ )
126+ } ) ;
127+
88128 it . each ( [ [ true ] , [ false ] ] ) ( 'consumes messages using eachBatch' , async ( isAutoResolve ) => {
89129 await consumer . connect ( ) ;
90130 await producer . connect ( ) ;
0 commit comments