def test_encode_decode_fragmented_binary_frame(self): frame1 = Frame(False, OP_TEXT, b"tea ") frame2 = Frame(True, OP_CONT, b"time") enc_frame1 = self.extension.encode(frame1) enc_frame2 = self.extension.encode(frame2) self.assertEqual( enc_frame1, frame1._replace(rsv1=True, data=b"*IMT\x00\x00\x00\x00\xff\xff") ) self.assertEqual( enc_frame2, frame2._replace(rsv1=True, data=b"*\xc9\xccM\x05\x00") ) dec_frame1 = self.extension.decode(enc_frame1) dec_frame2 = self.extension.decode(enc_frame2) self.assertEqual(dec_frame1, frame1) self.assertEqual(dec_frame2, frame2)
def test_encode_decode_binary_frame(self): frame = Frame(True, OP_BINARY, b"tea") enc_frame = self.extension.encode(frame) self.assertEqual(enc_frame, frame._replace(rsv1=True, data=b"*IM\x04\x00")) dec_frame = self.extension.decode(enc_frame) self.assertEqual(dec_frame, frame)
def test_encode_decode_text_frame(self): frame = Frame(True, OP_TEXT, "café".encode("utf-8")) enc_frame = self.extension.encode(frame) self.assertEqual(enc_frame, frame._replace(rsv1=True, data=b"JNL;\xbc\x12\x00")) dec_frame = self.extension.decode(enc_frame) self.assertEqual(dec_frame, frame)
def test_compress_settings(self): # Configure an extension so that no compression actually occurs. extension = PerMessageDeflate(False, False, 15, 15, {"level": 0}) frame = Frame(True, OP_TEXT, "café".encode("utf-8")) enc_frame = extension.encode(frame) self.assertEqual( enc_frame, frame._replace( rsv1=True, data=b"\x00\x05\x00\xfa\xffcaf\xc3\xa9\x00" # not compressed ), )