def test_webframe_from_bytes_non_fragmented_with_mask(self): bstr = b'\x81\x89\x13}\xfd\xb7G8\xae\xe339\xbc\xe3R' reader = self._get_mock_bytes_reader(bytes=bstr) f = WebSocketFrame.from_bytes_reader(reader) self.assertEqual(f.headers.mask, 327024055) self.assertEqual(f.headers.payload_length, 9) self.assertEqual(f.message, "TEST DATA")
def test_webframe_from_bytes_non_fragmented_no_mask(self): bstr = b'\x81\tTEST DATA' reader = self._get_mock_bytes_reader(bytes=bstr) f = WebSocketFrame.from_bytes_reader(reader) self.assertEqual(f.message, "TEST DATA") self.assertEqual(f.headers.payload_length, 9) self.assertIsNone(f.headers.mask)
def test_webframe_from_bytes_non_fragmented(self): data = b'\x81\x89I\x96k\xa8\x1d\xd38\xfci\xd2*\xfc\x08' reader = self._get_mock_bytes_reader(bytes=data) f = WebSocketFrame.from_bytes_reader(reader) self.assertEqual(f.message, "TEST DATA") self.assertEqual(f.headers.payload_length, 9) self.assertEqual(f.headers.opcode, 1) self.assertEqual(f.headers.mask_flag, 1) self.assertEqual(f.headers.mask, bits_value("01001001100101100110101110101000"))
def connection_handler(self, conn): bytes_reader = SocketBytesReader(conn) self.logger.debug("Websocket server handling incoming data") try: frame = WebSocketFrame.from_bytes_reader(bytes_reader) except (SocketException, ConnectionResetError): self.logger.warning( "Connection closed prematurely, marking for closing") conn.mark_for_closing() return None return frame
def test_webframe_premature_ending(self): bstr = b'\x819' reader = self._get_mock_bytes_reader(bytes=bstr) with self.assertRaises(StopIteration): WebSocketFrame.from_bytes_reader(reader)