def test_packet(self): """Unit test SSH packet module""" for encode, decode, values in self.tests: for value, data in values: data = codecs.decode(data, 'hex') with self.subTest(msg='encode', value=value): self.assertEqual(encode(value), data) with self.subTest(msg='decode', data=data): packet = SSHPacket(data) decoded_value = decode(packet) packet.check_end() self.assertEqual(decoded_value, value) self.assertEqual(packet.get_consumed_payload(), data) self.assertEqual(packet.get_remaining_payload(), b'') for encode, value, exc in self.encode_errors: with self.subTest(msg='encode error', encode=encode, value=value): with self.assertRaises(exc): encode(value) for decode, data in self.decode_errors: with self.subTest(msg='decode error', data=data): with self.assertRaises(PacketDecodeError): packet = SSHPacket(codecs.decode(data, 'hex')) decode(packet) packet.check_end()