示例#1
0
def test_close_frame_info(out, parser):
    def parse_frame(buf):
        yield
        return (1, websocket.OPCODE_CLOSE, b'0112345')

    with mock.patch('aiohttp.websocket.parse_frame') as m_parse_frame:
        m_parse_frame.side_effect = parse_frame
        next(parser)
        parser.send(b'')
    res = out._buffer[0]
    assert res == (Message(websocket.OPCODE_CLOSE, 12337, '12345'), 0)
示例#2
0
    def test_close_frame_info(self, m_parse_frame):
        def parse_frame(buf):
            yield
            return (1, websocket.OPCODE_CLOSE, b'0112345')

        m_parse_frame.side_effect = parse_frame
        p = websocket.WebSocketParser(self.out, self.buf)
        next(p)
        p.send(b'')
        res = self.out._buffer[0]
        self.assertEqual(res, Message(websocket.OPCODE_CLOSE, 12337, '12345'))
示例#3
0
def test_continuation_with_ping(out, parser):
    frames = [
        (0, websocket.OPCODE_TEXT, b'line1'),
        (0, websocket.OPCODE_PING, b''),
        (1, websocket.OPCODE_CONTINUATION, b'line2'),
    ]

    def parse_frame(buf, cont=False):
        yield
        return frames.pop(0)

    with mock.patch('aiohttp.websocket.parse_frame') as m_parse_frame:
        m_parse_frame.side_effect = parse_frame
        next(parser)
        parser.send(b'')
        parser.send(b'')
        parser.send(b'')
    res = out._buffer[0]
    assert res == (Message(websocket.OPCODE_PING, b'', ''), 0)
    res = out._buffer[1]
    assert res == (Message(websocket.OPCODE_TEXT, 'line1line2', ''), 10)
示例#4
0
    def test_continuation_with_close_empty(self, m_parse_frame):
        frames = [
            (0, websocket.OPCODE_TEXT, b'line1'),
            (0, websocket.OPCODE_CLOSE, b''),
            (1, websocket.OPCODE_CONTINUATION, b'line2'),
        ]

        def parse_frame(buf, cont=False):
            yield
            return frames.pop(0)

        m_parse_frame.side_effect = parse_frame
        p = websocket.WebSocketParser(self.out, self.buf)
        next(p)
        p.send(b'')
        p.send(b'')
        p.send(b'')
        res = self.out._buffer[0]
        self.assertEqual(res, Message(websocket.OPCODE_CLOSE, 0, ''))
        res = self.out._buffer[1]
        self.assertEqual(res, Message(websocket.OPCODE_TEXT, 'line1line2', ''))
示例#5
0
def test_continuation(out, parser):
    cur = 0

    def parse_frame(buf, cont=False):
        nonlocal cur
        yield
        if cur == 0:
            cur = 1
            return (0, websocket.OPCODE_TEXT, b'line1')
        else:
            return (1, websocket.OPCODE_CONTINUATION, b'line2')

    with mock.patch('aiohttp.websocket.parse_frame') as m_parse_frame:
        m_parse_frame.side_effect = parse_frame
        next(parser)
        parser.send(b'')
        parser.send(b'')
    res = out._buffer[0]
    assert res == (Message(websocket.OPCODE_TEXT, 'line1line2', ''), 10)
示例#6
0
    def test_continuation(self, m_parse_frame):
        cur = 0

        def parse_frame(buf, cont=False):
            nonlocal cur
            yield
            if cur == 0:
                cur = 1
                return (0, websocket.OPCODE_TEXT, b'line1')
            else:
                return (1, websocket.OPCODE_CONTINUATION, b'line2')

        m_parse_frame.side_effect = parse_frame
        p = websocket.WebSocketParser(self.out, self.buf)
        next(p)
        p.send(b'')
        p.send(b'')
        res = self.out._buffer[0]
        self.assertEqual(res, Message(websocket.OPCODE_TEXT, 'line1line2', ''))