@@ -215,48 +215,69 @@ def test_invalid_response_headers(self, sock):
215
215
sock .reset_mock ()
216
216
217
217
class ThreadedClientTest (unittest .TestCase ):
218
+
218
219
@patch ('ws4py.client.socket' )
219
- def test_thread_is_started_once_connected (self , sock ):
220
- s = MagicMock (spec = socket .socket )
221
- sock .socket .return_value = s
220
+ def setUp (self , sock ):
221
+ self . sock = MagicMock (spec = socket .socket )
222
+ sock .socket .return_value = self . sock
222
223
sock .getaddrinfo .return_value = [(socket .AF_INET , socket .SOCK_STREAM , 0 , "" ,
223
224
("127.0.0.1" , 80 , 0 , 0 ))]
224
-
225
- c = WebSocketClient (url = "ws://127.0.0.1/" )
226
225
227
- def exchange1 (* args , ** kwargs ):
228
- yield b"\r \n " .join ([
229
- b"HTTP/1.1 101 Switching Protocols" ,
230
- b"Connection: Upgrade" ,
231
- b"Sec-Websocket-Version: 13" ,
232
- b"Content-Type: text/plain;charset=utf-8" ,
233
- b"Sec-Websocket-Accept: " + b64encode (sha1 (c .key + WS_KEY ).digest ()),
234
- b"Upgrade: websocket" ,
235
- b"Date: Sun, 26 Jul 2015 12:32:55 GMT" ,
236
- b"Server: ws4py/test" ,
237
- b"\r \n "
238
- ])
226
+ self .client = WebSocketClient (url = "ws://127.0.0.1/" )
239
227
240
- for i in range (100 ):
241
- time .sleep (0.1 )
242
- yield Frame (opcode = OPCODE_TEXT , body = b'hello' ,
243
- fin = 1 ).build ()
228
+ def _exchange1 (self , * args , ** kwargs ):
229
+ yield b"\r \n " .join ([
230
+ b"HTTP/1.1 101 Switching Protocols" ,
231
+ b"Connection: Upgrade" ,
232
+ b"Sec-Websocket-Version: 13" ,
233
+ b"Content-Type: text/plain;charset=utf-8" ,
234
+ b"Sec-Websocket-Accept: " + b64encode (sha1 (self .client .key + WS_KEY ).digest ()),
235
+ b"Upgrade: websocket" ,
236
+ b"Date: Sun, 26 Jul 2015 12:32:55 GMT" ,
237
+ b"Server: ws4py/test" ,
238
+ b"\r \n "
239
+ ])
244
240
245
- s .recv .side_effect = exchange1 ()
246
- self .assertFalse (c ._th .is_alive ())
247
-
248
- c .connect ()
241
+ for i in range (100 ):
242
+ time .sleep (0.1 )
243
+ yield Frame (opcode = OPCODE_TEXT , body = b'hello' ,
244
+ fin = 1 ).build ()
245
+
246
+ def _exchange2 (self , * args , ** kwargs ):
247
+ yield Frame (opcode = OPCODE_CLOSE , body = b'' ,
248
+ fin = 1 ).build ()
249
+
250
+ def test_thread_is_started_once_connected (self ):
251
+ self .sock .recv .side_effect = self ._exchange1 ()
252
+ self .assertFalse (self .client ._th .is_alive ())
253
+
254
+ self .client .connect ()
249
255
time .sleep (0.5 )
250
- self .assertTrue (c ._th .is_alive ())
256
+ self .assertTrue (self . client ._th .is_alive ())
251
257
252
- def exchange2 (* args , ** kwargs ):
253
- yield Frame (opcode = OPCODE_CLOSE , body = b'' ,
254
- fin = 1 ).build ()
255
- s .recv .side_effect = exchange2 ()
258
+ self .sock .recv .side_effect = self ._exchange2 ()
256
259
time .sleep (0.5 )
257
- self .assertFalse (c ._th .is_alive ())
258
-
259
-
260
+ self .assertFalse (self .client ._th .is_alive ())
261
+
262
+ def test_thread_is_started_once_connected_secure (self ):
263
+ """ Same as the above test, but with SSL socket """
264
+ # pretend the socket is an SSL socket
265
+ self .sock .pending = lambda : False
266
+ self .client ._is_secure = True
267
+
268
+ self .sock .recv .side_effect = self ._exchange1 ()
269
+ self .assertFalse (self .client ._th .is_alive ())
270
+
271
+ self .client .connect ()
272
+ time .sleep (0.5 )
273
+ self .assertTrue (self .client ._th .is_alive ())
274
+
275
+ self .sock .recv .side_effect = self ._exchange2 ()
276
+ time .sleep (0.5 )
277
+ self .assertFalse (self .client ._th .is_alive ())
278
+
279
+
280
+
260
281
if __name__ == '__main__' :
261
282
suite = unittest .TestSuite ()
262
283
loader = unittest .TestLoader ()
0 commit comments