示例#1
0
def test_close(loop, ws_key, key_data):
    resp = mock.Mock()
    resp.status = 101
    resp.headers = {
        hdrs.UPGRADE: hdrs.WEBSOCKET,
        hdrs.CONNECTION: hdrs.UPGRADE,
        hdrs.SEC_WEBSOCKET_ACCEPT: ws_key,
    }
    with mock.patch('aiohttp.client.WebSocketWriter') as WebSocketWriter:
        with mock.patch('aiohttp.client.os') as m_os:
            with mock.patch('aiohttp.client.ClientSession.get') as m_req:
                m_os.urandom.return_value = key_data
                m_req.return_value = helpers.create_future(loop)
                m_req.return_value.set_result(resp)
                writer = WebSocketWriter.return_value = mock.Mock()

                session = aiohttp.ClientSession(loop=loop)
                resp = yield from session.ws_connect('http://test.org')
                assert not resp.closed

                resp._reader.feed_data(
                    aiohttp.WSMessage(aiohttp.WSMsgType.CLOSE, b'', b''), 0)

                res = yield from resp.close()
                writer.close.assert_called_with(1000, b'')
                assert resp.closed
                assert res
                assert resp.exception() is None

                # idempotent
                res = yield from resp.close()
                assert not res
                assert writer.close.call_count == 1

                session.close()
def function971(arg1297, function539, function1058):
    var1080 = mock.Mock()
    var1080.status = 101
    var1080.headers = {
        hdrs.UPGRADE: hdrs.WEBSOCKET,
        hdrs.CONNECTION: hdrs.UPGRADE,
        hdrs.SEC_WEBSOCKET_ACCEPT: ws_key,
    }
    with mock.patch('aiohttp.client.WebSocketWriter') as var3469:
        with mock.patch('aiohttp.client.os') as var2214:
            with mock.patch('aiohttp.client.ClientSession.get') as var1630:
                var2214.urandom.return_value = function1058
                var1630.return_value = helpers.create_future(arg1297)
                var1630.return_value.set_result(var1080)
                var326 = var3469.return_value = mock.Mock()
                var4076 = aiohttp.ClientSession(loop=arg1297)
                var1080 = yield from var4076.ws_connect('http://test.org')
                assert (not var1080.closed)
                var1080._reader.feed_data(
                    aiohttp.WSMessage(aiohttp.WSMsgType.CLOSE, b'', b''), 0)
                var3741 = yield from var1080.close()
                var326.close.assert_called_with(1000, b'')
                assert var1080.closed
                assert res
                assert (var1080.exception() is None)
                var3741 = yield from var1080.close()
                assert (not var3741)
                assert (var326.close.call_count == 1)
                var4076.close()
示例#3
0
    def test_close(self, m_req, m_os, WebSocketWriter):
        resp = mock.Mock()
        resp.status = 101
        resp.headers = {
            hdrs.UPGRADE: hdrs.WEBSOCKET,
            hdrs.CONNECTION: hdrs.UPGRADE,
            hdrs.SEC_WEBSOCKET_ACCEPT: self.ws_key,
        }
        m_os.urandom.return_value = self.key_data
        m_req.return_value = helpers.create_future(self.loop)
        m_req.return_value.set_result(resp)
        writer = WebSocketWriter.return_value = mock.Mock()
        reader = resp.connection.reader.set_parser.return_value = mock.Mock()

        resp = self.loop.run_until_complete(
            aiohttp.ws_connect('http://test.org', loop=self.loop))
        self.assertFalse(resp.closed)

        msg = aiohttp.WSMessage(aiohttp.MsgType.close, b'', b'')
        reader.read.return_value = helpers.create_future(self.loop)
        reader.read.return_value.set_result(msg)

        res = self.loop.run_until_complete(resp.close())
        writer.close.assert_called_with(1000, b'')
        self.assertTrue(resp.closed)
        self.assertTrue(res)
        self.assertIsNone(resp.exception())

        # idempotent
        res = self.loop.run_until_complete(resp.close())
        self.assertFalse(res)
        self.assertEqual(writer.close.call_count, 1)
示例#4
0
 def add_websocket_aiohttp_message(
         self,
         websocket_mock,
         message,
         message_type: aiohttp.WSMsgType = aiohttp.WSMsgType.TEXT):
     msg = aiohttp.WSMessage(message_type, message, extra=None)
     self._incoming_websocket_aiohttp_queues[websocket_mock].put_nowait(msg)
     self._all_incoming_websocket_aiohttp_delivered_event[
         websocket_mock].clear()
示例#5
0
 async def __anext__(self):
     try:
         res = aiohttp.WSMessage(aiohttp.WSMsgType.BINARY, next(self._iter),
                                 None)
         if self._hook_iteration:
             await self._hook_iteration(res)
         return res
     except StopIteration:
         self.closed = True
         raise StopAsyncIteration
示例#6
0
    async def __anext__(self):
        if len(self.events) == 0 or self.is_closed:
            raise StopAsyncIteration

        key = list(self.events.keys())[0]
        next_time = float(key)
        await asyncio.sleep(next_time - self.now)
        self.now = next_time

        data = self.events.pop(key)
        self.count += 1
        return aiohttp.WSMessage(aiohttp.WSMsgType.BINARY,
                                 base64.b64decode(data["raw"]), None)
示例#7
0
async def test_close(loop: Any, ws_key: Any, key_data: Any) -> None:
    resp = mock.Mock()
    resp.status = 101
    resp.headers = {
        hdrs.UPGRADE: "websocket",
        hdrs.CONNECTION: "upgrade",
        hdrs.SEC_WEBSOCKET_ACCEPT: ws_key,
    }
    with mock.patch("aiohttp.client.WebSocketWriter") as WebSocketWriter:
        with mock.patch("aiohttp.client.os") as m_os:
            with mock.patch("aiohttp.client.ClientSession.request") as m_req:
                m_os.urandom.return_value = key_data
                m_req.return_value = loop.create_future()
                m_req.return_value.set_result(resp)
                writer = mock.Mock()
                WebSocketWriter.return_value = writer
                writer.close = make_mocked_coro()

                session = aiohttp.ClientSession()
                resp = await session.ws_connect("http://test.org")
                assert not resp.closed

                resp._reader.feed_data(
                    aiohttp.WSMessage(aiohttp.WSMsgType.CLOSE, b"", b""), 0
                )

                res = await resp.close()
                writer.close.assert_called_with(1000, b"")
                assert resp.closed
                assert res
                assert resp.exception() is None

                # idempotent
                res = await resp.close()
                assert not res
                assert writer.close.call_count == 1

                await session.close()