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)
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'))
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)
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', ''))
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)
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', ''))