@@ -709,7 +709,7 @@ describe('Receiver', () => {
709
709
) ;
710
710
} ) ;
711
711
712
- it ( 'emits an error if a text frame contains invalid UTF-8 data' , ( done ) => {
712
+ it ( 'emits an error if a text frame contains invalid UTF-8 data (1/2) ' , ( done ) => {
713
713
const receiver = new Receiver ( ) ;
714
714
715
715
receiver . on ( 'error' , ( err ) => {
@@ -725,6 +725,33 @@ describe('Receiver', () => {
725
725
receiver . write ( Buffer . from ( [ 0x81 , 0x04 , 0xce , 0xba , 0xe1 , 0xbd ] ) ) ;
726
726
} ) ;
727
727
728
+ it ( 'emits an error if a text frame contains invalid UTF-8 data (2/2)' , ( done ) => {
729
+ const perMessageDeflate = new PerMessageDeflate ( ) ;
730
+ perMessageDeflate . accept ( [ { } ] ) ;
731
+
732
+ const receiver = new Receiver ( undefined , {
733
+ 'permessage-deflate' : perMessageDeflate
734
+ } ) ;
735
+ const buf = Buffer . from ( [ 0xce , 0xba , 0xe1 , 0xbd ] ) ;
736
+
737
+ receiver . on ( 'error' , ( err ) => {
738
+ assert . ok ( err instanceof Error ) ;
739
+ assert . strictEqual (
740
+ err . message ,
741
+ 'Invalid WebSocket frame: invalid UTF-8 sequence'
742
+ ) ;
743
+ assert . strictEqual ( err [ kStatusCode ] , 1007 ) ;
744
+ done ( ) ;
745
+ } ) ;
746
+
747
+ perMessageDeflate . compress ( buf , true , ( err , data ) => {
748
+ if ( err ) return done ( err ) ;
749
+
750
+ receiver . write ( Buffer . from ( [ 0xc1 , data . length ] ) ) ;
751
+ receiver . write ( data ) ;
752
+ } ) ;
753
+ } ) ;
754
+
728
755
it ( 'emits an error if a close frame has a payload of 1 B' , ( done ) => {
729
756
const receiver = new Receiver ( ) ;
730
757
0 commit comments