@@ -23,6 +23,7 @@ describe('ParseWebSocketServer', function () {
2323 ws . readyState = 0 ;
2424 ws . OPEN = 0 ;
2525 ws . ping = jasmine . createSpy ( 'ping' ) ;
26+ ws . terminate = ( ) => { } ;
2627
2728 parseWebSocketServer . onConnection ( ws ) ;
2829
@@ -75,6 +76,30 @@ describe('ParseWebSocketServer', function () {
7576 expect ( wssError ) . toBe ( 'Invalid Packet' ) ;
7677 } ) ;
7778
79+ it ( 'closes interrupted connection' , async ( ) => {
80+ const onConnectCallback = jasmine . createSpy ( 'onConnectCallback' ) ;
81+ const http = require ( 'http' ) ;
82+ const server = http . createServer ( ) ;
83+ const parseWebSocketServer = new ParseWebSocketServer ( server , onConnectCallback , {
84+ websocketTimeout : 5 ,
85+ } ) . server ;
86+ const ws = new EventEmitter ( ) ;
87+ ws . readyState = 0 ;
88+ ws . OPEN = 0 ;
89+ ws . ping = jasmine . createSpy ( 'ping' ) ;
90+ ws . terminate = jasmine . createSpy ( 'terminate' ) ;
91+
92+ parseWebSocketServer . onConnection ( ws ) ;
93+
94+ // Make sure callback is called
95+ expect ( onConnectCallback ) . toHaveBeenCalled ( ) ;
96+ await new Promise ( resolve => setTimeout ( resolve , 10 ) ) ;
97+ expect ( ws . ping ) . toHaveBeenCalled ( ) ;
98+ await new Promise ( resolve => setTimeout ( resolve , 10 ) ) ;
99+ expect ( ws . terminate ) . toHaveBeenCalled ( ) ;
100+ server . close ( ) ;
101+ } ) ;
102+
78103 afterEach ( function ( ) {
79104 jasmine . restoreLibrary ( 'ws' , 'Server' ) ;
80105 } ) ;
0 commit comments