def test_clients_arent_rematched(): flask_test_client = app.test_client() client1 = socketio.test_client(app, flask_test_client=flask_test_client) client2 = socketio.test_client(app, flask_test_client=flask_test_client) broadcaster = socketio.test_client(app, flask_test_client=flask_test_client) room1 = f"room_{client1.sid}" room2 = f"room_{client2.sid}" client1.emit('join_group', {'access_code': 'test'}) client2.emit('join_group', {'access_code': 'test'}) broadcaster.emit('message', {'message': 'Seeable', 'room': room2}) data1 = client1.get_received() data2 = client2.get_received() assert data1[-1]['args']['message'] == 'Seeable' assert data2[-1]['args']['message'] == 'Seeable' client1.emit('leave', {'room': room2, 'return_to': 'test'}) data2 = client2.get_received() client2.emit('leave', {'room': room2, 'return_to': 'test'}) broadcaster.emit('message', {'message': 'Unseeable', 'room': room1}) broadcaster.emit('message', {'message': 'Unseeable', 'room': room2}) data1 = client1.get_received() data2 = client2.get_received() assert data1 == [] assert data2 == []
def test_each_connected_client_in_room_sees_message(): flask_test_client = app.test_client() socketio_test_client = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client2 = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client.emit('join_room', {'room': 'test'}) socketio_test_client2.emit('join_room', {'room': 'test'}) client1_data = socketio_test_client.get_received() client2_data = socketio_test_client2.get_received() socketio_test_client.emit('message', { 'message': 'Hello World 2', 'room': 'test' }) client1_data = socketio_test_client.get_received() client1_message = client1_data[0]['args']['message'] assert client1_message == "Hello World 2" client2_data = socketio_test_client2.get_received() client2_message = client2_data[0]['args']['message'] assert client2_message == "Hello World 2"
def test_leaving_sends_client_back_to_group(): flask_test_client = app.test_client() client1 = socketio.test_client(app, flask_test_client=flask_test_client) client2 = socketio.test_client(app, flask_test_client=flask_test_client) room2 = f"room_{client2.sid}" client1.emit('join_group', {'access_code': 'test'}) assert len(Group.objects(access_code='test')) == 1 client2.emit('message', {'message': 'Test 1', 'room': 'test'}) data1 = client1.get_received() assert data1[-1]['args']['message'] == 'Test 1' client2.emit('join_group', {'access_code': 'test'}) client2.emit('message', {'message': 'Test 2', 'room': 'test'}) data1 = client1.get_received() assert data1[-1]['args'] != 'Test 2' client1.emit('leave', {'room': room2, 'return_to': 'test'}) client2.emit('message', {'message': 'Test 3', 'room': 'test'}) data1 = client1.get_received() assert data1[-1]['args']['message'] == 'Test 3'
def test_automatic_matchmaking_after_leaving_room(): flask_test_client = app.test_client() client1 = socketio.test_client(app, flask_test_client=flask_test_client) client2 = socketio.test_client(app, flask_test_client=flask_test_client) client3 = socketio.test_client(app, flask_test_client=flask_test_client) room1 = f"room_{client1.sid}" room2 = f"room_{client2.sid}" client1.emit('join_group', {'access_code': 'test'}) client2.emit('join_group', {'access_code': 'test'}) client3.emit('join_group', {'access_code': 'test'}) client1.emit('leave', {'room': room2, 'return_to': 'test'}) client3.emit('message', { 'message': 'Clients 1 and 3 rule!', 'room': room1 }) data1 = client1.get_received() data2 = client2.get_received() data3 = client3.get_received() assert data1[-1]['args']['message'] == 'Clients 1 and 3 rule!' assert data2[-1]['args'] != 'Clients 1 and 3 rule!' assert data3[-1]['args']['message'] == 'Clients 1 and 3 rule!'
def test_matchmaking(): flask_test_client = app.test_client() client1 = socketio.test_client(app, flask_test_client=flask_test_client) client2 = socketio.test_client(app, flask_test_client=flask_test_client) client3 = socketio.test_client(app, flask_test_client=flask_test_client) room2 = f"room_{client2.sid}" client1.emit('join_group', {'access_code': 'test', 'name': 'Client 1'}) data1 = client1.get_received() client2.emit('join_group', {'access_code': 'test', 'name': 'Client 2'}) data1 = client1.get_received() data2 = client2.get_received() assert data1[0]['args'][0]['room'] == room2 assert data2[0]['args'][0]['room'] == room2 client3.emit('join_group', {'access_code': 'test'}) data3 = client3.get_received() client1.emit('message', { 'message': 'Client 3 should not see this', 'room': room2 }) data1 = client1.get_received() data2 = client2.get_received() data3 = client3.get_received() assert data1[-1]['args']['message'] == 'Client 3 should not see this' assert data2[-1]['args']['message'] == 'Client 3 should not see this' assert data3 == []
def test_active_sockets(): assert len(Connection.objects(group='test2')) == 0 flask_test_client = app.test_client() socketio_test_client = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client.emit('join_group', {'access_code': "test2"}) conn1 = Connection.objects.get(sid=socketio_test_client.sid) assert len(Connection.objects(group='test2')) == 1 assert conn1.sid == socketio_test_client.sid socketio_test_client2 = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client2.emit('join_group', {'access_code': "test2"}) conn2 = Connection.objects.get(sid=socketio_test_client2.sid) assert len(Connection.objects(group='test2')) == 2 assert conn2.sid == socketio_test_client2.sid socketio_test_client.disconnect() assert len(Connection.objects(group='test2')) == 1 socketio_test_client2.disconnect() assert len(Connection.objects(group='test2')) == 0
def test_socketio_connection(): flask_test_client = app.test_client() socketio_test_client = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client2 = socketio.test_client( app, flask_test_client=flask_test_client) assert socketio_test_client.is_connected() assert socketio_test_client2.is_connected()
def test_name_sending(): flask_test_client = app.test_client() client1 = socketio.test_client(app, flask_test_client=flask_test_client) client2 = socketio.test_client(app, flask_test_client=flask_test_client) room2 = f"room_{client2.sid}" client1.emit('join_group', {'access_code': 'test', 'name': 'Client 1'}) client2.emit('join_group', {'access_code': 'test'}) data1 = client1.get_received() data2 = client2.get_received() assert data1[0]['args'][0]['match']['name'] == 'Anonymous' assert data1[0]['args'][0]['match']['sid'] == client2.sid assert data2[0]['args'][0]['match']['name'] == 'Client 1' assert data2[0]['args'][0]['match']['sid'] == client1.sid
def test_client_can_connect_to_room(): flask_test_client = app.test_client() socketio_test_client = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client2 = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client.emit('join_room', {'room': 'test'}) welcome = socketio_test_client.get_received() message = welcome[0]['args'] assert message == "Welcome to the test room" client2_data = socketio_test_client2.get_received() assert client2_data == []
def test_each_connected_client_in_room_sees_when_leaving(): flask_test_client = app.test_client() socketio_test_client = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client2 = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client.emit('join_room', {'room': 'test'}) socketio_test_client2.emit('join_room', {'room': 'test'}) socketio_test_client.get_received() client2_data = socketio_test_client2.get_received() socketio_test_client.emit('leave', {'room': 'test', 'return_to': ''}) client2_data = socketio_test_client2.get_received() client2_message = client2_data[0]['args'] assert client2_message == "A User left the test room"
def test_group_connection_differentiation(): assert len(Connection.objects(group='test')) == 0 assert len(Connection.objects(group='test2')) == 0 flask_test_client = app.test_client() socketio_test_client = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client2 = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client.emit('join_group', {'access_code': 'test'}) socketio_test_client2.emit('join_group', {'access_code': 'test2'}) assert len(Connection.objects(group='test')) == 1 assert len(Connection.objects(group='test2')) == 1 assert len(Connection.objects) == 2 socketio_test_client2.disconnect() assert len(Connection.objects(group='test')) == 1 assert len(Connection.objects(group='test2')) == 0 assert len(Connection.objects) == 1
def test_broadcast_message(): flask_test_client = app.test_client() socketio_test_client = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client2 = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client.emit('join_room', {'room': 'test'}) client1_data = socketio_test_client.get_received() client2_data = socketio_test_client2.get_received() socketio_test_client.emit('gmessage', 'Hello Everyone') client1_data = socketio_test_client.get_received() client1_message = client1_data[0]['args'] assert client1_message == "Hello Everyone" client2_data = socketio_test_client2.get_received() client2_message = client2_data[0]['args'] assert client2_message == "Hello Everyone"
def test_server_can_send_message_to_room(): flask_test_client = app.test_client() socketio_test_client = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client2 = socketio.test_client( app, flask_test_client=flask_test_client) socketio_test_client.emit('join_room', {'room': 'test'}) client1_data = socketio_test_client.get_received() socketio_test_client.emit('message', { 'message': 'Hello World', 'room': 'test' }) client1_data = socketio_test_client.get_received() message = client1_data[0]['args']['message'] assert message == "Hello World" client2_data = socketio_test_client2.get_received() assert client2_data == []