示例#1
0
    def test_session(self, eio):
        fake_session = {}

        async def fake_get_session(sid):
            return fake_session

        async def fake_save_session(sid, session):
            global fake_session
            fake_session = session

        eio.return_value.send = AsyncMock()
        s = asyncio_server.AsyncServer()
        s.eio.get_session = fake_get_session
        s.eio.save_session = fake_save_session

        async def _test():
            await s._handle_eio_connect('123', 'environ')
            await s.save_session('123', {'foo': 'bar'})
            async with s.session('123') as session:
                self.assertEqual(session, {'foo': 'bar'})
                session['foo'] = 'baz'
                session['bar'] = 'foo'
            self.assertEqual(await s.get_session('123'), {
                'foo': 'baz',
                'bar': 'foo'
            })
            self.assertEqual(fake_session, {'/': {'foo': 'baz', 'bar': 'foo'}})
            async with s.session('123', namespace='/ns') as session:
                self.assertEqual(session, {})
                session['a'] = 'b'
            self.assertEqual(await s.get_session('123', namespace='/ns'),
                             {'a': 'b'})
            self.assertEqual(fake_session, {
                '/': {
                    'foo': 'baz',
                    'bar': 'foo'
                },
                '/ns': {
                    'a': 'b'
                }
            })

        _run(_test())
示例#2
0
    def test_session(self, eio):
        fake_session = {}

        async def fake_get_session(eio_sid):
            assert eio_sid == '123'
            return fake_session

        async def fake_save_session(eio_sid, session):
            global fake_session
            assert eio_sid == '123'
            fake_session = session

        eio.return_value.send = AsyncMock()
        s = asyncio_server.AsyncServer()
        s.eio.get_session = fake_get_session
        s.eio.save_session = fake_save_session

        async def _test():
            await s._handle_eio_connect('123', 'environ')
            await s._handle_eio_message('123', '0')
            await s._handle_eio_message('123', '0/ns')
            sid = s.manager.sid_from_eio_sid('123', '/')
            sid2 = s.manager.sid_from_eio_sid('123', '/ns')
            await s.save_session(sid, {'foo': 'bar'})
            async with s.session(sid) as session:
                assert session == {'foo': 'bar'}
                session['foo'] = 'baz'
                session['bar'] = 'foo'
            assert await s.get_session(sid) == {'foo': 'baz', 'bar': 'foo'}
            assert fake_session == {'/': {'foo': 'baz', 'bar': 'foo'}}
            async with s.session(sid2, namespace='/ns') as session:
                assert session == {}
                session['a'] = 'b'
            assert await s.get_session(sid2, namespace='/ns') == {'a': 'b'}
            assert fake_session == {
                '/': {'foo': 'baz', 'bar': 'foo'},
                '/ns': {'a': 'b'},
            }

        _run(_test())
示例#3
0
 def test_emit(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr)
     _run(
         s.emit(
             'my event',
             {'foo': 'bar'},
             to='room',
             skip_sid='123',
             namespace='/foo',
             callback='cb',
         )
     )
     s.manager.emit.mock.assert_called_once_with(
         'my event',
         {'foo': 'bar'},
         '/foo',
         room='room',
         skip_sid='123',
         callback='cb',
     )
     _run(
         s.emit(
             'my event',
             {'foo': 'bar'},
             room='room',
             skip_sid='123',
             namespace='/foo',
             callback='cb',
         )
     )
     s.manager.emit.mock.assert_called_with(
         'my event',
         {'foo': 'bar'},
         '/foo',
         room='room',
         skip_sid='123',
         callback='cb',
     )
    def test_namespace_handler(self, eio):
        eio.return_value.send = AsyncMock()
        result = {}

        class MyNamespace(asyncio_namespace.AsyncNamespace):
            def on_connect(self, sid, environ):
                result['result'] = (sid, environ)

            @coroutine
            def on_disconnect(self, sid):
                result['result'] = ('disconnect', sid)

            @coroutine
            def on_foo(self, sid, data):
                result['result'] = (sid, data)

            def on_bar(self, sid):
                result['result'] = 'bar'

            @coroutine
            def on_baz(self, sid, data1, data2):
                result['result'] = (data1, data2)

        s = asyncio_server.AsyncServer()
        s.register_namespace(MyNamespace('/foo'))
        _run(s._handle_eio_connect('123', 'environ'))
        _run(s._handle_eio_message('123', '0/foo'))
        self.assertEqual(result['result'], ('123', 'environ'))
        _run(s._handle_eio_message('123', '2/foo,["foo","a"]'))
        self.assertEqual(result['result'], ('123', 'a'))
        _run(s._handle_eio_message('123', '2/foo,["bar"]'))
        self.assertEqual(result['result'], 'bar')
        _run(s._handle_eio_message('123', '2/foo,["baz","a","b"]'))
        self.assertEqual(result['result'], ('a', 'b'))
        _run(s.disconnect('123', '/foo'))
        self.assertEqual(result['result'], ('disconnect', '123'))
 def test_handle_request(self, eio):
     eio.return_value.handle_request = AsyncMock()
     s = asyncio_server.AsyncServer()
     _run(s.handle_request('environ'))
     s.eio.handle_request.mock.assert_called_once_with('environ')
 def test_emit_internal_with_none(self, eio):
     eio.return_value.send = AsyncMock()
     s = asyncio_server.AsyncServer()
     _run(s._emit_internal('123', 'my event', None, namespace='/foo'))
     s.eio.send.mock.assert_called_once_with(
         '123', '2/foo,["my event"]', binary=False)
 def test_close_room_default_namespace(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr)
     _run(s.close_room('room'))
     s.manager.close_room.mock.assert_called_once_with('room', '/')
 def test_rooms_default_namespace(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr)
     s.rooms('123')
     s.manager.get_rooms.assert_called_once_with('123', '/')
示例#9
0
 def test_call_with_broadcast(self, eio):
     s = asyncio_server.AsyncServer()
     with pytest.raises(ValueError):
         _run(s.call('foo'))
 def test_leave_room_default_namespace(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr)
     s.leave_room('123', 'room')
     s.manager.leave_room.assert_called_once_with('123', '/', 'room')
 def test_attach(self, eio):
     s = asyncio_server.AsyncServer()
     s.attach('app', 'path')
     eio.return_value.attach.assert_called_once_with('app', 'path')
示例#12
0
 def test_handle_invalid_packet(self, eio):
     s = asyncio_server.AsyncServer()
     with pytest.raises(ValueError):
         _run(s._handle_eio_message('123', '9'))
 def test_disconnect(self, eio):
     eio.return_value.send = AsyncMock()
     s = asyncio_server.AsyncServer()
     _run(s._handle_eio_connect('123', 'environ'))
     _run(s.disconnect('123'))
     s.eio.send.mock.assert_any_call('123', '1', binary=False)
 def test_handle_disconnect_unknown_client(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr)
     _run(s._handle_eio_disconnect('123'))
 def test_send(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr)
     _run(s.send('foo', 'room', '123', namespace='/foo', callback='cb'))
     s.manager.emit.mock.assert_called_once_with('message', 'foo', '/foo',
                                                 'room', '123', 'cb')
 def test_emit_default_namespace(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr)
     _run(s.emit('my event', {'foo': 'bar'}, 'room', '123', callback='cb'))
     s.manager.emit.mock.assert_called_once_with('my event', {'foo': 'bar'},
                                                 '/', 'room', '123', 'cb')
 def test_call_with_broadcast(self, eio):
     s = asyncio_server.AsyncServer()
     self.assertRaises(ValueError, _run, s.call('foo'))
 def test_emit_internal_default_namespace(self, eio):
     eio.return_value.send = AsyncMock()
     s = asyncio_server.AsyncServer()
     _run(s._emit_internal('123', 'my event', 'my data'))
     s.eio.send.mock.assert_called_once_with(
         '123', '2["my event","my data"]', binary=False)
 def test_start_background_task(self, eio):
     s = asyncio_server.AsyncServer()
     s.start_background_task('foo', 'bar', baz='baz')
     s.eio.start_background_task.assert_called_once_with('foo', 'bar',
                                                         baz='baz')
 def test_emit_internal_binary(self, eio):
     eio.return_value.send = AsyncMock()
     s = asyncio_server.AsyncServer()
     _run(s._emit_internal('123', u'my event', b'my binary data'))
     self.assertEqual(s.eio.send.mock.call_count, 2)
示例#21
0
 def test_emit_internal(self, eio):
     eio.return_value.send = AsyncMock()
     s = asyncio_server.AsyncServer()
     _run(s._emit_internal('123', 'my event', 'my data', namespace='/foo'))
     s.eio.send.mock.assert_called_once_with(
         '123', '2/foo,["my event","my data"]')
 def test_handle_invalid_packet(self, eio):
     s = asyncio_server.AsyncServer()
     self.assertRaises(ValueError, _run, s._handle_eio_message('123', '9'))
示例#23
0
 def test_async_handlers(self, eio):
     s = asyncio_server.AsyncServer(async_handlers=True)
     _run(s._handle_eio_message('123', '2["my message","a","b","c"]'))
     s.eio.start_background_task.assert_called_once_with(
         s._handle_event_internal, s, '123', ['my message', 'a', 'b', 'c'],
         '/', None)
 def test_engineio_logger(self, eio):
     asyncio_server.AsyncServer(engineio_logger='foo')
     eio.assert_called_once_with(**{'logger': 'foo',
                                    'async_handlers': False})
 def test_call_without_async_handlers(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr,
                                    async_handlers=False)
     self.assertRaises(RuntimeError, _run,
                       s.call('foo', sid='123', timeout=12))
 def test_sleep(self, eio):
     eio.return_value.sleep = AsyncMock()
     s = asyncio_server.AsyncServer()
     _run(s.sleep(1.23))
     s.eio.sleep.mock.assert_called_once_with(1.23)
 def test_enter_room(self, eio):
     mgr = self._get_mock_manager()
     s = asyncio_server.AsyncServer(client_manager=mgr)
     s.enter_room('123', 'room', namespace='/foo')
     s.manager.enter_room.assert_called_once_with('123', '/foo', 'room')