@@ -23,6 +23,7 @@ describe('ParseWebSocketServer', function () {
23
23
ws . readyState = 0 ;
24
24
ws . OPEN = 0 ;
25
25
ws . ping = jasmine . createSpy ( 'ping' ) ;
26
+ ws . terminate = ( ) => { } ;
26
27
27
28
parseWebSocketServer . onConnection ( ws ) ;
28
29
@@ -75,6 +76,30 @@ describe('ParseWebSocketServer', function () {
75
76
expect ( wssError ) . toBe ( 'Invalid Packet' ) ;
76
77
} ) ;
77
78
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
+
78
103
afterEach ( function ( ) {
79
104
jasmine . restoreLibrary ( 'ws' , 'Server' ) ;
80
105
} ) ;
0 commit comments