Skip to content

Commit e27124d

Browse files
authored
Merge pull request #213 from awelkie/master
Change threaded client test to test ssl socket
2 parents b31bcda + 784f415 commit e27124d

File tree

1 file changed

+54
-33
lines changed

1 file changed

+54
-33
lines changed

test/test_client.py

Lines changed: 54 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -215,48 +215,69 @@ def test_invalid_response_headers(self, sock):
215215
sock.reset_mock()
216216

217217
class ThreadedClientTest(unittest.TestCase):
218+
218219
@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
222223
sock.getaddrinfo.return_value = [(socket.AF_INET, socket.SOCK_STREAM, 0, "",
223224
("127.0.0.1", 80, 0, 0))]
224-
225-
c = WebSocketClient(url="ws://127.0.0.1/")
226225

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/")
239227

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+
])
244240

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()
249255
time.sleep(0.5)
250-
self.assertTrue(c._th.is_alive())
256+
self.assertTrue(self.client._th.is_alive())
251257

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()
256259
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+
260281
if __name__ == '__main__':
261282
suite = unittest.TestSuite()
262283
loader = unittest.TestLoader()

0 commit comments

Comments
 (0)