parent
d97afb9d2a
commit
096d41c072
3 changed files with 467 additions and 385 deletions
|
|
@ -1,3 +1,4 @@
|
|||
import logging
|
||||
from socketIO_client import SocketIO, BaseNamespace, find_callback
|
||||
from unittest import TestCase
|
||||
|
||||
|
|
@ -6,6 +7,7 @@ HOST = 'localhost'
|
|||
PORT = 8000
|
||||
DATA = 'xxx'
|
||||
PAYLOAD = {'xxx': 'yyy'}
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
|
||||
class TestSocketIO(TestCase):
|
||||
|
|
@ -25,24 +27,18 @@ class TestSocketIO(TestCase):
|
|||
else:
|
||||
self.assertEqual(arg, DATA)
|
||||
|
||||
def is_connected(self, socketIO, connected):
|
||||
childThreads = [
|
||||
socketIO._rhythmicThread,
|
||||
socketIO._listenerThread,
|
||||
]
|
||||
for childThread in childThreads:
|
||||
self.assertEqual(not connected, childThread.done.is_set())
|
||||
self.assertEqual(connected, socketIO.connected)
|
||||
|
||||
def test_disconnect(self):
|
||||
'Terminate child threads after disconnect'
|
||||
self.is_connected(self.socketIO, True)
|
||||
'Disconnect'
|
||||
self.assertTrue(self.socketIO.connected)
|
||||
self.socketIO.disconnect()
|
||||
self.is_connected(self.socketIO, False)
|
||||
self.assertFalse(self.socketIO.connected)
|
||||
# Use context manager
|
||||
with SocketIO(HOST, PORT) as self.socketIO:
|
||||
self.is_connected(self.socketIO, True)
|
||||
self.is_connected(self.socketIO, False)
|
||||
with SocketIO(HOST, PORT, Namespace) as self.socketIO:
|
||||
namespace = self.socketIO.get_namespace()
|
||||
self.assertFalse(namespace.called_on_disconnect)
|
||||
self.assertTrue(self.socketIO.connected)
|
||||
self.assertTrue(namespace.called_on_disconnect)
|
||||
self.assertFalse(self.socketIO.connected)
|
||||
|
||||
def test_message(self):
|
||||
'Message'
|
||||
|
|
@ -72,20 +68,20 @@ class TestSocketIO(TestCase):
|
|||
'Message with callback'
|
||||
self.socketIO.message(callback=self.on_response)
|
||||
self.socketIO.wait_for_callbacks(seconds=0.1)
|
||||
self.assertEqual(self.called_on_response, True)
|
||||
self.assertTrue(self.called_on_response)
|
||||
|
||||
def test_message_with_callback_with_data(self):
|
||||
'Message with callback with data'
|
||||
self.socketIO.message(DATA, self.on_response)
|
||||
self.socketIO.wait_for_callbacks(seconds=0.1)
|
||||
self.assertEqual(self.called_on_response, True)
|
||||
self.assertTrue(self.called_on_response)
|
||||
|
||||
def test_emit(self):
|
||||
'Emit'
|
||||
self.socketIO.define(Namespace)
|
||||
self.socketIO.emit('emit')
|
||||
self.socketIO.wait(0.1)
|
||||
self.assertEqual(self.socketIO.get_namespace().argsByEvent, {
|
||||
self.assertEqual(self.socketIO.get_namespace().args_by_event, {
|
||||
'emit_response': (),
|
||||
})
|
||||
|
||||
|
|
@ -94,7 +90,7 @@ class TestSocketIO(TestCase):
|
|||
self.socketIO.define(Namespace)
|
||||
self.socketIO.emit('emit_with_payload', PAYLOAD)
|
||||
self.socketIO.wait(0.1)
|
||||
self.assertEqual(self.socketIO.get_namespace().argsByEvent, {
|
||||
self.assertEqual(self.socketIO.get_namespace().args_by_event, {
|
||||
'emit_with_payload_response': (PAYLOAD,),
|
||||
})
|
||||
|
||||
|
|
@ -103,7 +99,7 @@ class TestSocketIO(TestCase):
|
|||
self.socketIO.define(Namespace)
|
||||
self.socketIO.emit('emit_with_multiple_payloads', PAYLOAD, PAYLOAD)
|
||||
self.socketIO.wait(0.1)
|
||||
self.assertEqual(self.socketIO.get_namespace().argsByEvent, {
|
||||
self.assertEqual(self.socketIO.get_namespace().args_by_event, {
|
||||
'emit_with_multiple_payloads_response': (PAYLOAD, PAYLOAD),
|
||||
})
|
||||
|
||||
|
|
@ -111,35 +107,35 @@ class TestSocketIO(TestCase):
|
|||
'Emit with callback'
|
||||
self.socketIO.emit('emit_with_callback', self.on_response)
|
||||
self.socketIO.wait_for_callbacks(seconds=0.1)
|
||||
self.assertEqual(self.called_on_response, True)
|
||||
self.assertTrue(self.called_on_response)
|
||||
|
||||
def test_emit_with_callback_with_payload(self):
|
||||
'Emit with callback with payload'
|
||||
self.socketIO.emit('emit_with_callback_with_payload',
|
||||
self.on_response)
|
||||
self.socketIO.wait_for_callbacks(seconds=0.1)
|
||||
self.assertEqual(self.called_on_response, True)
|
||||
self.assertTrue(self.called_on_response)
|
||||
|
||||
def test_emit_with_callback_with_multiple_payloads(self):
|
||||
'Emit with callback with multiple payloads'
|
||||
self.socketIO.emit('emit_with_callback_with_multiple_payloads',
|
||||
self.on_response)
|
||||
self.socketIO.wait_for_callbacks(seconds=0.1)
|
||||
self.assertEqual(self.called_on_response, True)
|
||||
self.assertTrue(self.called_on_response)
|
||||
|
||||
def test_emit_with_event(self):
|
||||
'Emit to trigger an event'
|
||||
self.socketIO.on('emit_with_event_response', self.on_response)
|
||||
self.socketIO.emit('emit_with_event', PAYLOAD)
|
||||
self.socketIO.wait_for_callbacks(0.1)
|
||||
self.assertEqual(self.called_on_response, True)
|
||||
self.socketIO.wait(0.1)
|
||||
self.assertTrue(self.called_on_response)
|
||||
|
||||
def test_ack(self):
|
||||
'Trigger server callback'
|
||||
self.socketIO.define(Namespace)
|
||||
self.socketIO.emit('ack', PAYLOAD)
|
||||
self.socketIO.wait(0.1)
|
||||
self.assertEqual(self.socketIO.get_namespace().argsByEvent, {
|
||||
self.assertEqual(self.socketIO.get_namespace().args_by_event, {
|
||||
'ack_response': (PAYLOAD,),
|
||||
'ack_callback_response': (PAYLOAD,),
|
||||
})
|
||||
|
|
@ -151,9 +147,9 @@ class TestSocketIO(TestCase):
|
|||
newsNamespace = self.socketIO.define(Namespace, '/news')
|
||||
newsNamespace.emit('emit_with_payload', PAYLOAD)
|
||||
self.socketIO.wait(0.1)
|
||||
self.assertEqual(mainNamespace.argsByEvent, {})
|
||||
self.assertEqual(chatNamespace.argsByEvent, {})
|
||||
self.assertEqual(newsNamespace.argsByEvent, {
|
||||
self.assertEqual(mainNamespace.args_by_event, {})
|
||||
self.assertEqual(chatNamespace.args_by_event, {})
|
||||
self.assertEqual(newsNamespace.args_by_event, {
|
||||
'emit_with_payload_response': (PAYLOAD,),
|
||||
})
|
||||
|
||||
|
|
@ -162,7 +158,11 @@ class Namespace(BaseNamespace):
|
|||
|
||||
def initialize(self):
|
||||
self.response = None
|
||||
self.argsByEvent = {}
|
||||
self.args_by_event = {}
|
||||
self.called_on_disconnect = False
|
||||
|
||||
def on_disconnect(self):
|
||||
self.called_on_disconnect = True
|
||||
|
||||
def on_message(self, data):
|
||||
self.response = data
|
||||
|
|
@ -171,4 +171,4 @@ class Namespace(BaseNamespace):
|
|||
callback, args = find_callback(args)
|
||||
if callback:
|
||||
callback(*args)
|
||||
self.argsByEvent[event] = args
|
||||
self.args_by_event[event] = args
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue