def test_close_frame_no_payload(self): reader = asyncio.StreamReader(loop=self.loop) parser = WebSocketParser(reader) task = asyncio.Task(parser.parse_frame(reader), loop=self.loop) self.loop.call_soon(lambda: reader.feed_data(FrameBuilder.close())) frame = self.loop.run_until_complete(task) self.assertEqual(frame.opcode, OpCode.close)
def test_nonfin_control_frame(self): reader = asyncio.StreamReader(loop=self.loop) parser = WebSocketParser(reader) task = asyncio.Task(parser.parse_frame(reader), loop=self.loop) frame = FrameBuilder.build(fin=False, opcode=OpCode.close, payload=b'', masked=True) self.loop.call_soon(lambda: reader.feed_data(frame)) self.assertRaises(WebSocketFormatException, self.loop.run_until_complete, task)
def test_unmasking(self): data = b'\x81\x97\xea\x84N\xe4\xbf\xf7+\x96\xca\xa3*\x80\x8e\xa3n\x81\x84\xf0+\x96\x8f\xe0n\x87\x82\xe5:' reader = asyncio.StreamReader(loop=self.loop) parser = WebSocketParser(reader) task = asyncio.Task(parser.parse_frame(reader), loop=self.loop) self.loop.call_soon(lambda: reader.feed_data(data)) frame = self.loop.run_until_complete(task) self.assertEqual(frame.fin, 1) self.assertEqual(frame.opcode, OpCode.text) self.assertEqual(frame.payload, b"User 'ddd' entered chat")