def test_payload_enc_dec(self): packets = [] raw = encbinpayloads(packets) self.assertEqual(packets, list(decbinpayloadsgen(raw))) packets = [ PayloadsTestCase.GOOD_STR_PACKET, ] raw = encbinpayloads(packets) self.assertEqual(packets, list(decbinpayloadsgen(raw))) packets = [ PayloadsTestCase.GOOD_BIN_PACKET, ] raw = encbinpayloads(packets) self.assertEqual(packets, list(decbinpayloadsgen(raw))) packets = [ PayloadsTestCase.GOOD_STR_PACKET, PayloadsTestCase.GOOD_BIN_PACKET, PayloadsTestCase.GOOD_STR_PACKET, PayloadsTestCase.GOOD_BIN_PACKET, ] raw = encbinpayloads(packets) self.assertEqual(packets, list(decbinpayloadsgen(raw)))
def test_payload_dec_bad_type(self): raw = PayloadsTestCase.BAD_TYPE_PAYLOAD expected = [] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^unrecognized payload type 2 at 0$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual) raw = PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.BAD_TYPE_PAYLOAD expected = [ PayloadsTestCase.GOOD_STR_PACKET, PayloadsTestCase.GOOD_BIN_PACKET, ] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^unrecognized payload type 2 at 14$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual)
def test_payload_dec_bad_payload(self): raw = PayloadsTestCase.BAD_TRUNC_PAYLOAD expected = [] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^payload data truncated \(received only 1 of 3 expected octets\) at 3$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual) raw = PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.BAD_TRUNC_PAYLOAD expected = [ PayloadsTestCase.GOOD_STR_PACKET, PayloadsTestCase.GOOD_BIN_PACKET, ] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^payload data truncated \(received only 1 of 3 expected octets\) at 17$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual)
def test_payload_dec(self): raw = PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD expected = [ PayloadsTestCase.GOOD_STR_PACKET, ] actual = list(decbinpayloadsgen(raw)) self.assertEqual(expected, actual) raw = PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD expected = [ PayloadsTestCase.GOOD_BIN_PACKET, ] actual = list(decbinpayloadsgen(raw)) self.assertEqual(expected, actual) raw = PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD expected = [ PayloadsTestCase.GOOD_BIN_PACKET, PayloadsTestCase.GOOD_STR_PACKET, PayloadsTestCase.GOOD_BIN_PACKET, PayloadsTestCase.GOOD_STR_PACKET, ] actual = list(decbinpayloadsgen(raw)) self.assertEqual(expected, actual)
def test_payload_dec_enc(self): raw = b'' packets = list(decbinpayloadsgen(raw)) self.assertEqual(raw, encbinpayloads(packets)) raw = PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD packets = list(decbinpayloadsgen(raw)) self.assertEqual(raw, encbinpayloads(packets)) raw = PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD packets = list(decbinpayloadsgen(raw)) self.assertEqual(raw, encbinpayloads(packets)) raw = PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD packets = list(decbinpayloadsgen(raw)) self.assertEqual(raw, encbinpayloads(packets))
def test_regression_long_payload(self): # This is raw data from Insight API (on or about 2015-11-05) that # we choked on because we (erroneously) didn't allow for payloads # longer than 310 characters raw = b'\x00\x02\x01\x05\xff42["tx",{"txid":"e9772f1171fb16c3461a545b320cf9882a3d60e8fe58af6058f14230cda5d493","valueOut":74.6768726,"vout":[{"1JzddE9RdGaxWbJgfBM15J3Xj6hzKX3o3f":1200000000},{"1GJ9AnmcwwCGSJyksX8thqRvnuAfS1ZB6C":6267687260}]}]\x00\x01\x01\x02\x05\xff42["tx",{"txid":"5c3264d64107f5398745bdbd2c6a2c40ee3ea022eb4bbacc79271ce0fc91e8ea","valueOut":31.47905388,"vout":[{"1BKLefgfSQjRWRHSkirEKPz9y5Z5VwUKYT":25257121},{"1BGv1vWNjvekSFD6SoyNQJvCDGbhCfyknp":24046431},{"1GMcQBw7NHL17Xw8b1ueDzP1fuCESCgDfy":70226431},{"1DZxmrAMnRssRNjqNTp5XsCACwQXte3fdz":25247121},{"1QA7FTnqvHabS979u19UvWzgLRxThH3vMP":42800000},{"176yohfzuRWw9PWXaKwxZuGZana5EJj4Wi":535262879},{"15iQFJNjprPNHhdFwHpg3NxYBQH4rqAis8":1200690},{"1L7kTokjjCsLhmTwBeTUaw3zZX5cmAZgey":688940},{"1HKugLe1iFnHFUdTNGtm1K8vCMjjhgfvKB":324710000},{"1F8LtvqAhMEFkcfYHvqLVDMPFQv8ncZoZ6":118062879},{"1CjLvNRipzdq6hUWJ14iE72TfXFL6hBgUu":254362879},{"137Em62DLiYoWtvYbZoe396XaQ1iwYJLnd":433500000},{"17hD8cgNetd6G4L4nLUmJeD7PxgjfSMhdk":460000000},{"14uP5jHc26Kmt9xKs8CJwXSWDFuZAkz47S":144562879},{"1GxscjUdN9Ntxo68zGXYJCq5p2dXLb1Q68":10000},{"13rgFRQqTuxTUBCsgBGonXKQXSSf6ThDxW":323700000},{"1PTDGyzVGkjgL3VTKXZjDSGkSyd5SquuvZ":24056431},{"17jJiNJiRwaZmwtsAU8BdCua3RNwK8c8DZ":71427121},{"1MPv7Px7BRzVXJQyYB1Fn5nFVMKt5TnXVz":511750},{"13LErEoUYp9HxGX9jYoZedPShXgTasUy5J":253352879},{"1KYLZwc939EJUz1y45YqbtbSqarjhtqJbi":14918957}]}]' expected = [ ( b'4', '2["tx",{"txid":"e9772f1171fb16c3461a545b320cf9882a3d60e8fe58af6058f14230cda5d493","valueOut":74.6768726,"vout":[{"1JzddE9RdGaxWbJgfBM15J3Xj6hzKX3o3f":1200000000},{"1GJ9AnmcwwCGSJyksX8thqRvnuAfS1ZB6C":6267687260}]}]', ), ( b'4', '2["tx",{"txid":"5c3264d64107f5398745bdbd2c6a2c40ee3ea022eb4bbacc79271ce0fc91e8ea","valueOut":31.47905388,"vout":[{"1BKLefgfSQjRWRHSkirEKPz9y5Z5VwUKYT":25257121},{"1BGv1vWNjvekSFD6SoyNQJvCDGbhCfyknp":24046431},{"1GMcQBw7NHL17Xw8b1ueDzP1fuCESCgDfy":70226431},{"1DZxmrAMnRssRNjqNTp5XsCACwQXte3fdz":25247121},{"1QA7FTnqvHabS979u19UvWzgLRxThH3vMP":42800000},{"176yohfzuRWw9PWXaKwxZuGZana5EJj4Wi":535262879},{"15iQFJNjprPNHhdFwHpg3NxYBQH4rqAis8":1200690},{"1L7kTokjjCsLhmTwBeTUaw3zZX5cmAZgey":688940},{"1HKugLe1iFnHFUdTNGtm1K8vCMjjhgfvKB":324710000},{"1F8LtvqAhMEFkcfYHvqLVDMPFQv8ncZoZ6":118062879},{"1CjLvNRipzdq6hUWJ14iE72TfXFL6hBgUu":254362879},{"137Em62DLiYoWtvYbZoe396XaQ1iwYJLnd":433500000},{"17hD8cgNetd6G4L4nLUmJeD7PxgjfSMhdk":460000000},{"14uP5jHc26Kmt9xKs8CJwXSWDFuZAkz47S":144562879},{"1GxscjUdN9Ntxo68zGXYJCq5p2dXLb1Q68":10000},{"13rgFRQqTuxTUBCsgBGonXKQXSSf6ThDxW":323700000},{"1PTDGyzVGkjgL3VTKXZjDSGkSyd5SquuvZ":24056431},{"17jJiNJiRwaZmwtsAU8BdCua3RNwK8c8DZ":71427121},{"1MPv7Px7BRzVXJQyYB1Fn5nFVMKt5TnXVz":511750},{"13LErEoUYp9HxGX9jYoZedPShXgTasUy5J":253352879},{"1KYLZwc939EJUz1y45YqbtbSqarjhtqJbi":14918957}]}]', ), ] actual = [ deceiopacket(pckt) for pckt in decbinpayloadsgen(raw) ] self.assertEqual(expected, actual)
def test_payload_dec_bad_len(self): raw = PayloadsTestCase.BAD_LEN_OCTET_PAYLOAD expected = [] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^unrecognized length byte 10 at 1$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual) raw = PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD \ + PayloadsTestCase.BAD_LEN_OCTET_PAYLOAD expected = [ PayloadsTestCase.GOOD_BIN_PACKET, PayloadsTestCase.GOOD_STR_PACKET, ] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^unrecognized length byte 10 at 15$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual) raw = PayloadsTestCase.BAD_LEN_TRUNC_PAYLOAD expected = [] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^payload length field truncated at 3$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual) raw = PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.BAD_LEN_TRUNC_PAYLOAD expected = [ PayloadsTestCase.GOOD_STR_PACKET, PayloadsTestCase.GOOD_BIN_PACKET, ] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^payload length field truncated at 17$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual) raw = PayloadsTestCase.BAD_LEN_VALUE_PAYLOAD expected = [] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^9{311} exceeds max bytes for length field at 1$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual) raw = PayloadsTestCase.GOOD_BIN_PACKET_PAYLOAD \ + PayloadsTestCase.GOOD_STR_PACKET_PAYLOAD \ + PayloadsTestCase.BAD_LEN_VALUE_PAYLOAD expected = [ PayloadsTestCase.GOOD_BIN_PACKET, PayloadsTestCase.GOOD_STR_PACKET, ] actual = [] with self.assertRaisesRegex(PayloadDecodeError, r'^9{311} exceeds max bytes for length field at 15$'): for i in decbinpayloadsgen(raw): actual.append(i) self.assertEqual(expected, actual)