@@ -275,6 +275,65 @@ describe('#unit Bolt', () => {
275275 expect ( receivedMessage . signature ) . toEqual ( expectedMessage . signature )
276276 expect ( receivedMessage . fields ) . toEqual ( expectedMessage . fields )
277277 } )
278+
279+ it ( `it should configure the channel.onmessage to dechunk and notify unpacking issues ${ version } ` , ( ) => {
280+ const params = createBoltCreateParams ( { version } )
281+ let receivedMessage = null
282+ const message = {
283+ signature : 0x10 ,
284+ fields : [ 123 ]
285+ }
286+ const protocol = Bolt . create ( params )
287+ protocol . _responseHandler . handleResponse = msg => {
288+ receivedMessage = msg
289+ }
290+
291+ protocol . packer ( ) . packStruct (
292+ message . signature ,
293+ message . fields . map ( field => protocol . packer ( ) . packable ( field ) )
294+ )
295+
296+ params . chunker . messageBoundary ( )
297+ params . chunker . flush ( )
298+
299+ const expectedError = newError ( 'Something went wrong' )
300+ protocol . unpacker = jest . fn ( ( ) => {
301+ return {
302+ unpack : ( ) => {
303+ throw expectedError
304+ }
305+ }
306+ } )
307+
308+ params . channel . onmessage ( params . channel . toBuffer ( ) )
309+
310+ expect ( receivedMessage ) . toBeNull ( )
311+ expect ( params . observer . errors ) . toEqual ( [ expectedError ] )
312+ } )
313+
314+ it ( `it should configure the channel.onmessage to dechunk and notify response handler issues ${ version } ` , ( ) => {
315+ const params = createBoltCreateParams ( { version } )
316+ let receivedMessage = null
317+ const expectedMessage = {
318+ signature : 0x10 ,
319+ fields : [ 123 ]
320+ }
321+ const protocol = Bolt . create ( params )
322+ const expectedError = newError ( 'Something went wrong' )
323+ protocol . _responseHandler . handleResponse = msg => {
324+ throw expectedError
325+ }
326+
327+ protocol . packer ( ) . packStruct (
328+ expectedMessage . signature ,
329+ expectedMessage . fields . map ( field => protocol . packer ( ) . packable ( field ) )
330+ )
331+ params . chunker . messageBoundary ( )
332+ params . chunker . flush ( )
333+ params . channel . onmessage ( params . channel . toBuffer ( ) )
334+
335+ expect ( params . observer . errors ) . toEqual ( [ expectedError ] )
336+ } )
278337 } )
279338
280339 forEachUnknownProtocolVersion ( version => {
0 commit comments