def test_encryption(self): a = Artifact(self.binary_data) a.packaging = Packaging() a.packaging.encryption.append(XOREncryption(0x4a)) a.packaging.encoding.append(Base64Encoding()) a2 = round_trip(a, Artifact) self.assertEqual(self.binary_data, a2.data)
def test_base64_encoding(self): a = Artifact(self.binary_data) a.packaging = Packaging() a.packaging.encoding.append(Base64Encoding()) a2 = round_trip(a, Artifact) self.assertEqual(self.binary_data, a2.data) expected = b64encode(self.binary_data).decode('ascii') self.assertEqual(expected, a2.packed_data)
def test_zlib_base64_encoding(self): a = Artifact(self.binary_data) a.packaging = Packaging() a.packaging.compression.append(ZlibCompression()) a.packaging.encoding.append(Base64Encoding()) a2 = round_trip(a, Artifact) self.assertEqual(self.binary_data, a2.data) expected = base64.b64encode(compress(self.binary_data)).decode('ascii') self.assertEqual(expected, a2.packed_data)
def test_cannot_set_nonascii_data_with_no_packaging(self): a = Artifact() # You can set this data, but if you don't add any packaging, you should # get an error when trying to get the packed data, since it can't be # encoded as ASCII. a.data = b"\x00abc123\xff" self.assertEqual(six.binary_type, type(a.data)) self.assertRaises(ValueError, _get_packed_data, a) # With Base64 encoding, we can retrieve this. a.packaging = Packaging() a.packaging.encoding.append(Base64Encoding()) self.assertEqual("AGFiYzEyM/8=", a.packed_data)
def test_custom_encoding(self): @EncodingFactory.register_extension class Base32Encoding(Encoding): _ENCODING_TYPE = "Base32" def __init__(self): super(Base32Encoding, self).__init__(algorithm="Base32") def pack(self, data): return base64.b32encode(data) def unpack(self, packed_data): return base64.b32decode(packed_data) a = Artifact(self.binary_data) a.packaging = Packaging() a.packaging.compression.append(Bz2Compression()) a.packaging.encryption.append(XOREncryption(0x4a)) a.packaging.encoding.append(Base32Encoding()) a2 = round_trip(a, Artifact) self.assertEqual(self.binary_data, a2.data)