@@ -590,9 +590,27 @@ describe('PerMessageDeflate', () => {
590590 } ) ;
591591 } ) ;
592592
593- it ( "doesn't call the callback twice when `maxPayload` is exceeded" , ( done ) => {
593+ it ( 'calls the callback when `maxPayload` is exceeded (1/2)' , ( done ) => {
594594 const perMessageDeflate = new PerMessageDeflate ( { } , false , 25 ) ;
595- const buf = Buffer . from ( 'A' . repeat ( 50 ) ) ;
595+ const buf = Buffer . alloc ( 50 , 'A' ) ;
596+
597+ perMessageDeflate . accept ( [ { } ] ) ;
598+ perMessageDeflate . compress ( buf , true , ( err , data ) => {
599+ if ( err ) return done ( err ) ;
600+
601+ perMessageDeflate . decompress ( data , true , ( err ) => {
602+ assert . ok ( err instanceof RangeError ) ;
603+ assert . strictEqual ( err . message , 'Max payload size exceeded' ) ;
604+ done ( ) ;
605+ } ) ;
606+ } ) ;
607+ } ) ;
608+
609+ it ( 'calls the callback when `maxPayload` is exceeded (2/2)' , ( done ) => {
610+ // A copy of the previous test but with a larger input. See
611+ // https://github.com/websockets/ws/pull/2285.
612+ const perMessageDeflate = new PerMessageDeflate ( { } , false , 25 ) ;
613+ const buf = Buffer . alloc ( 1024 * 1024 , 'A' ) ;
596614
597615 perMessageDeflate . accept ( [ { } ] ) ;
598616 perMessageDeflate . compress ( buf , true , ( err , data ) => {
0 commit comments