Skip to content

Commit

Permalink
more tests, 83% coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed Feb 26, 2014
1 parent fa78162 commit 386c9a9
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 25 deletions.
2 changes: 0 additions & 2 deletions flask_socketio/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
9 changes: 6 additions & 3 deletions flask_socketio/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
53 changes: 33 additions & 20 deletions test_socketio.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand All @@ -35,23 +37,23 @@ 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):
send(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):
emit('my custom response', 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):
Expand Down Expand Up @@ -109,39 +111,44 @@ 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)
self.assertTrue(received[0]['args'] == 'echo this message back')

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)
self.assertTrue(received[0]['args']['a'] == 'b')

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)
Expand All @@ -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)
Expand All @@ -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()

0 comments on commit 386c9a9

Please sign in to comment.