From 386c9a9b1881a6a239165f0f8394202f9c1fa4f3 Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Tue, 25 Feb 2014 22:18:21 -0800 Subject: [PATCH] more tests, 83% coverage --- flask_socketio/__init__.py | 2 -- flask_socketio/test_client.py | 9 ++++-- test_socketio.py | 53 ++++++++++++++++++++++------------- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/flask_socketio/__init__.py b/flask_socketio/__init__.py index 56fc92bb..6df00dd4 100644 --- a/flask_socketio/__init__.py +++ b/flask_socketio/__init__.py @@ -100,8 +100,6 @@ def send(self, message, json=False, ns_name=None, callback=None, broadcast=False namespaces = {} for ns_name in self.messages.keys(): - if ns_name == '/': - ns_name = '' namespaces[ns_name] = GenericNamespace return namespaces diff --git a/flask_socketio/test_client.py b/flask_socketio/test_client.py index 368059c9..b7be7218 100644 --- a/flask_socketio/test_client.py +++ b/flask_socketio/test_client.py @@ -65,11 +65,14 @@ def send(self, message, json=False, callback=None): class SocketIOTestClient(object): - server = TestServer() + servers = {} - def __init__(self, app, socketio, namespace=None): + def __init__(self, app, socketio, namespace=''): + if self.servers.get(namespace) is None: + self.servers[namespace] = TestServer() + self.server = self.servers[namespace] self.socketio = socketio - self.socket = self.server.new_socket() + self.socket = self.servers[namespace].new_socket() self.connect(app, namespace) def __del__(self): diff --git a/test_socketio.py b/test_socketio.py index 31df23a3..008b1916 100644 --- a/test_socketio.py +++ b/test_socketio.py @@ -4,16 +4,18 @@ cov = coverage.coverage() cov.start() -from flask import Flask +from flask import Flask, session from flask.ext.socketio import SocketIO, send, emit app = Flask(__name__) +app.config['SECRET_KEY'] = 'secret' socketio = SocketIO(app) disconnected = None @socketio.on('connect') def on_connect(): send('connected') + session['a'] = 'b' @socketio.on('disconnect') def on_connect(): @@ -35,7 +37,7 @@ def on_message(message): @socketio.on('json') def on_json(data): - send(data, json=True) + send(data, json=True, broadcast=True) @socketio.on('message', namespace='/test') def on_message_test(message): @@ -43,7 +45,7 @@ def on_message_test(message): @socketio.on('json', namespace='/test') def on_json_test(data): - send(data, json=True) + send(data, json=True, namespace='/test') @socketio.on('my custom event') def on_custom_event(data): @@ -51,7 +53,7 @@ def on_custom_event(data): @socketio.on('my custom namespace event', namespace='/test') def on_custom_event_test(data): - emit('my custom namespace response', data) + emit('my custom namespace response', data, namespace='/test') @socketio.on('my custom broadcast event') def on_custom_event_broadcast(data): @@ -109,23 +111,28 @@ def test_disconnect_namespace(self): def test_send(self): client = socketio.test_client(app) - received = client.get_received() # clean received + client.get_received() # clean received client.send('echo this message back') received = client.get_received() self.assertTrue(len(received) == 1) self.assertTrue(received[0]['args'] == 'echo this message back') def test_send_json(self): - client = socketio.test_client(app) - received = client.get_received() # clean received - client.send({'a': 'b'}, json=True) - received = client.get_received() + client1 = socketio.test_client(app) + client2 = socketio.test_client(app) + client1.get_received() # clean received + client2.get_received() # clean received + client1.send({'a': 'b'}, json=True) + received = client1.get_received() + self.assertTrue(len(received) == 1) + self.assertTrue(received[0]['args']['a'] == 'b') + received = client2.get_received() self.assertTrue(len(received) == 1) self.assertTrue(received[0]['args']['a'] == 'b') def test_send_namespace(self): client = socketio.test_client(app, namespace='/test') - received = client.get_received('/test') # clean received + client.get_received('/test') # clean received client.send('echo this message back', namespace='/test') received = client.get_received('/test') self.assertTrue(len(received) == 1) @@ -133,7 +140,7 @@ def test_send_namespace(self): def test_send_json_namespace(self): client = socketio.test_client(app, namespace='/test') - received = client.get_received('/test') # clean received + client.get_received('/test') # clean received client.send({'a': 'b'}, json=True, namespace='/test') received = client.get_received('/test') self.assertTrue(len(received) == 1) @@ -141,7 +148,7 @@ def test_send_json_namespace(self): def test_emit(self): client = socketio.test_client(app) - received = client.get_received() # clean received + client.get_received() # clean received client.emit('my custom event', {'a': 'b'}) received = client.get_received() self.assertTrue(len(received) == 1) @@ -151,7 +158,7 @@ def test_emit(self): def test_emit_namespace(self): client = socketio.test_client(app, namespace='/test') - received = client.get_received('/test') # clean received + client.get_received('/test') # clean received client.emit('my custom namespace event', {'a': 'b'}, namespace='/test') received = client.get_received('/test') self.assertTrue(len(received) == 1) @@ -163,30 +170,36 @@ def test_broadcast(self): client1 = socketio.test_client(app) client2 = socketio.test_client(app) client3 = socketio.test_client(app, namespace='/test') - received = client2.get_received() # clean - received = client3.get_received('/test') # clean + client2.get_received() # clean + client3.get_received('/test') # clean client1.emit('my custom broadcast event', {'a': 'b'}, broadcast=True) received = client2.get_received() self.assertTrue(len(received) == 1) self.assertTrue(len(received[0]['args']) == 1) self.assertTrue(received[0]['name'] == 'my custom response') self.assertTrue(received[0]['args'][0]['a'] == 'b') - self.assertTrue(client3.get_received('/test') == 0) + self.assertTrue(len(client3.get_received('/test')) == 0) def test_broadcast_namespace(self): client1 = socketio.test_client(app, namespace='/test') client2 = socketio.test_client(app, namespace='/test') client3 = socketio.test_client(app) - received = client2.get_received('/test') # clean - received = client3.get_received() # clean + client2.get_received('/test') # clean + client3.get_received() # clean client1.emit('my custom broadcast namespace event', {'a': 'b'}, namespace='/test', broadcast=True) received = client2.get_received('/test') self.assertTrue(len(received) == 1) self.assertTrue(len(received[0]['args']) == 1) - self.assertTrue(received[0]['name'] == 'my custom response') + self.assertTrue(received[0]['name'] == 'my custom namespace response') self.assertTrue(received[0]['args'][0]['a'] == 'b') - self.assertTrue(client3.get_received() == 0) + self.assertTrue(len(client3.get_received()) == 0) + + def test_session(self): + client = socketio.test_client(app) + client.get_received() # clean received + client.send('echo this message back') + self.assertTrue(client.socket.namespace[''].session['a'] == 'b') if __name__ == '__main__': unittest.main()