@@ -590,9 +590,27 @@ describe('PerMessageDeflate', () => {
590
590
} ) ;
591
591
} ) ;
592
592
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 ) => {
594
594
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' ) ;
596
614
597
615
perMessageDeflate . accept ( [ { } ] ) ;
598
616
perMessageDeflate . compress ( buf , true , ( err , data ) => {
0 commit comments