From 08a41a3313667cfd1d16f093c4e00a599bdb3fb7 Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sat, 28 Oct 2017 09:20:42 +1300 Subject: [PATCH 01/10] [#84] Add `X-IOTA-API-Version` header to HTTP reqs. --- iota/adapter/__init__.py | 27 +++++++++++++++++++++++++-- test/adapter/sandbox_test.py | 9 ++++++--- test/adapter_test.py | 23 +++++++++++++++++------ 3 files changed, 48 insertions(+), 11 deletions(-) diff --git a/iota/adapter/__init__.py b/iota/adapter/__init__.py index 69fedee4..e2876f61 100644 --- a/iota/adapter/__init__.py +++ b/iota/adapter/__init__.py @@ -11,11 +11,14 @@ from typing import Container, Dict, List, Optional, Text, Tuple, Union from requests import Response, codes, request +from six import PY2, binary_type, iteritems, moves as compat, text_type, \ + with_metaclass + from iota.exceptions import with_context from iota.json import JsonEncoder -from six import PY2, binary_type, moves as compat, text_type, with_metaclass __all__ = [ + 'API_VERSION', 'AdapterSpec', 'BadApiResponse', 'InvalidUri', @@ -30,6 +33,13 @@ __all__ = map(binary_type, __all__) +API_VERSION = 1 +""" +API protocol version. +https://github.com/iotaledger/iota.lib.py/issues/84 +""" + + # Custom types for type hints and docstrings. AdapterSpec = Union[Text, 'BaseAdapter'] @@ -201,6 +211,18 @@ class HttpAdapter(BaseAdapter): """ supported_protocols = ('http', 'https',) + DEFAULT_HEADERS = { + 'Content-type': 'application/json', + + # https://github.com/iotaledger/iota.lib.py/issues/84 + 'X-IOTA-API-Version': API_VERSION, + } + """ + Default headers sent with every request. + These can be overridden on a per-request basis, by specifying values + in the ``headers`` kwarg. + """ + def __init__(self, uri): # type: (Union[Text, SplitResult]) -> None super(HttpAdapter, self).__init__() @@ -265,7 +287,8 @@ def get_uri(self): def send_request(self, payload, **kwargs): # type: (dict, dict) -> dict kwargs.setdefault('headers', {}) - kwargs['headers']['Content-type'] = 'application/json' + for key, value in iteritems(self.DEFAULT_HEADERS): + kwargs['headers'].setdefault(key, value) response = self._send_http_request( # Use a custom JSON encoder that knows how to convert Tryte values. diff --git a/test/adapter/sandbox_test.py b/test/adapter/sandbox_test.py index 8e0468b1..4e377915 100644 --- a/test/adapter/sandbox_test.py +++ b/test/adapter/sandbox_test.py @@ -9,6 +9,7 @@ from six import text_type from iota import BadApiResponse +from iota.adapter import API_VERSION from iota.adapter.sandbox import SandboxAdapter from test import mock from test.adapter_test import create_http_response @@ -42,8 +43,9 @@ def test_regular_command(self): # Auth token automatically added to the HTTP request. headers = { - 'Authorization': 'token ACCESS-TOKEN', - 'Content-type': 'application/json', + 'Authorization': 'token ACCESS-TOKEN', + 'Content-type': 'application/json', + 'X-IOTA-API-Version': API_VERSION, }, ) @@ -233,7 +235,8 @@ def test_regular_command_null_token(self): headers = { # No auth token, so no Authorization header. # 'Authorization': 'token ACCESS-TOKEN', - 'Content-type': 'application/json', + 'Content-type': 'application/json', + 'X-IOTA-API-Version': API_VERSION, }, ) diff --git a/test/adapter_test.py b/test/adapter_test.py index 71f2ca01..06c38524 100644 --- a/test/adapter_test.py +++ b/test/adapter_test.py @@ -8,7 +8,7 @@ import requests from iota import BadApiResponse, InvalidUri, TryteString -from iota.adapter import HttpAdapter, MockAdapter, resolve_adapter +from iota.adapter import API_VERSION, HttpAdapter, MockAdapter, resolve_adapter from six import BytesIO, text_type from test import mock @@ -140,19 +140,29 @@ def test_success_response(self): """ adapter = HttpAdapter('http://localhost:14265') - expected_result = { - 'message': 'Hello, IOTA!', - } + payload = {'command': 'helloWorld'} + expected_result = {'message': 'Hello, IOTA!'} mocked_response = create_http_response(json.dumps(expected_result)) mocked_sender = mock.Mock(return_value=mocked_response) # noinspection PyUnresolvedReferences with mock.patch.object(adapter, '_send_http_request', mocked_sender): - result = adapter.send_request({'command': 'helloWorld'}) + result = adapter.send_request(payload) self.assertEqual(result, expected_result) + # https://github.com/iotaledger/iota.lib.py/issues/84 + mocked_sender.assert_called_once_with( + headers = { + 'Content-type': 'application/json', + 'X-IOTA-API-Version': API_VERSION, + }, + + payload = json.dumps(payload), + url = adapter.node_url, + ) + def test_error_response(self): """ Simulates sending a command to the node and getting an error @@ -343,6 +353,7 @@ def test_trytes_in_request(): }), headers = { - 'Content-type': 'application/json', + 'Content-type': 'application/json', + 'X-IOTA-API-Version': API_VERSION, }, ) From 329e91246f8fc9f0aaf7e0ba7e4544bd0ee547fb Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sat, 28 Oct 2017 10:42:46 +1300 Subject: [PATCH 02/10] [#84] Header values s/b strings. --- iota/adapter/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iota/adapter/__init__.py b/iota/adapter/__init__.py index e2876f61..5227f780 100644 --- a/iota/adapter/__init__.py +++ b/iota/adapter/__init__.py @@ -33,7 +33,7 @@ __all__ = map(binary_type, __all__) -API_VERSION = 1 +API_VERSION = '1' """ API protocol version. https://github.com/iotaledger/iota.lib.py/issues/84 From 7fc2eebf5f1cc5ee7a712c7eb40762040061c9ba Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sat, 28 Oct 2017 11:37:15 +1300 Subject: [PATCH 03/10] [#84] Made trit addition match JS lib. --- iota/__init__.py | 1 + iota/crypto/signing.py | 15 +---- iota/transaction/base.py | 4 +- iota/trits.py | 128 +++++++++++++++++++++++++++++++++++++++ iota/types.py | 47 +------------- test/trits_test.py | 32 ++++++++++ test/types_test.py | 27 +-------- 7 files changed, 168 insertions(+), 86 deletions(-) create mode 100644 iota/trits.py create mode 100644 test/trits_test.py diff --git a/iota/__init__.py b/iota/__init__.py index 498a2298..ad412f1e 100644 --- a/iota/__init__.py +++ b/iota/__init__.py @@ -37,6 +37,7 @@ from .transaction import * from .adapter import * from .api import * +from .trits import * # :see: http://stackoverflow.com/a/2073599/ from pkg_resources import require diff --git a/iota/crypto/signing.py b/iota/crypto/signing.py index e741c1ec..d23548ea 100644 --- a/iota/crypto/signing.py +++ b/iota/crypto/signing.py @@ -11,6 +11,7 @@ from iota.crypto.kerl import Kerl from iota.crypto.types import PrivateKey, Seed from iota.exceptions import with_context +from iota.trits import add_trits, trits_from_int __all__ = [ 'KeyGenerator', @@ -307,20 +308,8 @@ def _create_sponge(self, index): """ seed = self.seed_as_trits[:] - for i in range(index): - # Treat ``seed`` like a really big number and add ``index``. - # Note that addition works a little bit differently in balanced - # ternary. - for j in range(len(seed)): - seed[j] += 1 - - if seed[j] > 1: - seed[j] = -1 - else: - break - sponge = Kerl() - sponge.absorb(seed) + sponge.absorb(add_trits(seed, trits_from_int(index))) # Squeeze all of the trits out of the sponge and re-absorb them. # Note that the sponge transforms several times per operation, so diff --git a/iota/transaction/base.py b/iota/transaction/base.py index de76c623..b5cdf217 100644 --- a/iota/transaction/base.py +++ b/iota/transaction/base.py @@ -11,8 +11,8 @@ from iota.json import JsonSerializable from iota.transaction.types import BundleHash, Fragment, Nonce, TransactionHash, \ TransactionTrytes -from iota.types import Address, Tag, TryteString, TrytesCompatible, \ - int_from_trits, trits_from_int +from iota.trits import int_from_trits, trits_from_int +from iota.types import Address, Tag, TryteString, TrytesCompatible __all__ = [ 'Bundle', diff --git a/iota/trits.py b/iota/trits.py new file mode 100644 index 00000000..872ad92e --- /dev/null +++ b/iota/trits.py @@ -0,0 +1,128 @@ +# coding=utf-8 +""" +Provides functions for manipulating sequences of trits. + +Based on: +https://github.com/iotaledger/iota.lib.js/blob/v0.4.2/lib/crypto/helpers/adder.js +""" + +from __future__ import absolute_import, division, print_function, \ + unicode_literals + +from typing import Iterable, List, Optional, Sequence, Tuple + +__all__ = [ + 'add_trits', + 'int_from_trits', + 'trits_from_int', +] + + +def add_trits(left, right): + # type: (Sequence[int], Sequence[int]) -> List[int] + """ + Adds two sequences of trits together. + + The result is a list of trits equal in length to the longer of the + two sequences. + + Note: Overflow is possible. + For example, ``add_trits([1], [1])`` returns ``[-1]``. + """ + target_len = max(len(left), len(right)) + + res = [0] * target_len + left += [0] * (target_len - len(left)) + right += [0] * (target_len - len(right)) + + carry = 0 + for i in range(len(res)): + res[i], carry = _full_add_trits(left[i], right[i], carry) + + return res + + +def int_from_trits(trits): + # type: (Iterable[int]) -> int + """ + Converts a sequence of trits into an integer value. + """ + # Normally we'd have to wrap ``enumerate`` inside ``reversed``, but + # balanced ternary puts least significant digits first. + return sum(base * (3 ** power) for power, base in enumerate(trits)) + + +def trits_from_int(n, pad=1): + # type: (int, Optional[int]) -> List[int] + """ + Returns a trit representation of an integer value. + + :param n: + Integer value to convert. + + :param pad: + Ensure the result has at least this many trits. + + References: + - https://dev.to/buntine/the-balanced-ternary-machines-of-soviet-russia + - https://en.wikipedia.org/wiki/Balanced_ternary + - https://rosettacode.org/wiki/Balanced_ternary#Python + """ + if n == 0: + trits = [] + else: + quotient, remainder = divmod(n, 3) + + if remainder == 2: + # Lend 1 to the next place so we can make this trit negative. + quotient += 1 + remainder = -1 + + trits = [remainder] + trits_from_int(quotient, pad=0) + + if pad: + trits += [0] * max(0, pad - len(trits)) + + return trits + + +def _cons_trits(left, right): + # type: (int, int) -> int + """ + Compares two trits. If they have the same value, returns that value. + Otherwise, returns 0. + """ + return left if left == right else 0 + + +def _add_trits(left, right): + # type: (int, int) -> int + """ + Adds two individual trits together. + + The result is always a single trit. + """ + res = left + right + return res if -2 < res < 2 else (res < 0) - (res > 0) + + +def _any_trits(left, right): + # type: (int, int) -> int + """ + Adds two individual trits together and returns a single trit + indicating whether the result is positive or negative. + """ + res = left + right + return (res > 0) - (res < 0) + + +def _full_add_trits(left, right, carry): + # type: (int, int, int) -> Tuple[int, int] + """ + Adds two trits together, with support for a carry trit. + """ + sum_both = _add_trits(left, right) + cons_left = _cons_trits(left, right) + cons_right = _cons_trits(sum_both, carry) + + return _add_trits(sum_both, carry), _any_trits(cons_left, cons_right) diff --git a/iota/types.py b/iota/types.py index 47544302..9671f3f7 100644 --- a/iota/types.py +++ b/iota/types.py @@ -17,6 +17,7 @@ from iota.crypto.kerl import Kerl from iota.exceptions import with_context from iota.json import JsonSerializable +from iota.trits import int_from_trits, trits_from_int __all__ = [ 'Address', @@ -25,8 +26,6 @@ 'Tag', 'TryteString', 'TrytesCompatible', - 'int_from_trits', - 'trits_from_int', ] @@ -34,50 +33,6 @@ TrytesCompatible = Union[AnyStr, bytearray, 'TryteString'] -def trits_from_int(n, pad=1): - # type: (int, Optional[int]) -> List[int] - """ - Returns a trit representation of an integer value. - - :param n: - Integer value to convert. - - :param pad: - Ensure the result has at least this many trits. - - References: - - https://dev.to/buntine/the-balanced-ternary-machines-of-soviet-russia - - https://en.wikipedia.org/wiki/Balanced_ternary - - https://rosettacode.org/wiki/Balanced_ternary#Python - """ - if n == 0: - trits = [] - else: - quotient, remainder = divmod(n, 3) - - if remainder == 2: - # Lend 1 to the next place so we can make this trit negative. - quotient += 1 - remainder = -1 - - trits = [remainder] + trits_from_int(quotient, pad=0) - - if pad: - trits += [0] * max(0, pad - len(trits)) - - return trits - - -def int_from_trits(trits): - # type: (Iterable[int]) -> int - """ - Converts a sequence of trits into an integer value. - """ - # Normally we'd have to wrap ``enumerate`` inside ``reversed``, but - # balanced ternary puts least significant digits first. - return sum(base * (3 ** power) for power, base in enumerate(trits)) - - @python_2_unicode_compatible class TryteString(JsonSerializable): """ diff --git a/test/trits_test.py b/test/trits_test.py new file mode 100644 index 00000000..70fed3c4 --- /dev/null +++ b/test/trits_test.py @@ -0,0 +1,32 @@ +# coding=utf-8 +from __future__ import absolute_import, division, print_function, \ + unicode_literals + +from unittest import TestCase + +from iota import trits_from_int + + +class TritsFromIntTestCase(TestCase): + """ + Explicit unit tests for :py:func:`trits_from_int`. + + Note that this function is used internally by many different classes + and functions, so we still have good coverage even though this + particular test case has limited scope. + """ + def test_zero(self): + """ + Zero is represented as ``[0]`` by default. + + https://github.com/iotaledger/iota.lib.py/issues/49 + """ + self.assertEqual(trits_from_int(0), [0]) + + def test_zero_unpadded(self): + """ + Converting zero to trits, without padding. + """ + self.assertEqual(trits_from_int(0, pad=None), []) + + diff --git a/test/types_test.py b/test/types_test.py index c1a95d84..ee1f3885 100644 --- a/test/types_test.py +++ b/test/types_test.py @@ -6,31 +6,8 @@ from six import binary_type, text_type -from iota import Address, AddressChecksum, Hash, Tag, TryteString, \ - AsciiTrytesCodec, TrytesDecodeError, trits_from_int - - -class TritsFromIntTestCase(TestCase): - """ - Explicit unit tests for :py:func:`trits_from_int`. - - Note that this function is used internally by many different classes - and functions, so we still have good coverage even though this - particular test case has limited scope. - """ - def test_zero(self): - """ - Zero is represented as ``[0]`` by default. - - https://github.com/iotaledger/iota.lib.py/issues/49 - """ - self.assertEqual(trits_from_int(0), [0]) - - def test_zero_unpadded(self): - """ - Converting zero to trits, without padding. - """ - self.assertEqual(trits_from_int(0, pad=None), []) +from iota import Address, AddressChecksum, AsciiTrytesCodec, Hash, Tag, \ + TryteString, TrytesDecodeError # noinspection SpellCheckingInspection From 6d3f2b5583b24f8a8aaa30aca4c4f056ef12ccb8 Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sun, 29 Oct 2017 09:00:44 +1300 Subject: [PATCH 04/10] [UNSTABLE][#84] Detect insecure bundle hashes. Note: `PrepareTransferCommand` tests still need to be refactored. --- iota/transaction/creation.py | 47 +++++++++++++++++++++++-------- test/transaction/creation_test.py | 46 ++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 12 deletions(-) diff --git a/iota/transaction/creation.py b/iota/transaction/creation.py index 295f9aeb..e4f34ec3 100644 --- a/iota/transaction/creation.py +++ b/iota/transaction/creation.py @@ -9,13 +9,14 @@ from iota.crypto import HASH_LENGTH from iota.crypto.kerl import Kerl -from iota.crypto.signing import KeyGenerator +from iota.crypto.signing import KeyGenerator, normalize from iota.crypto.types import PrivateKey from iota.exceptions import with_context from iota.transaction.base import Bundle, Transaction -from iota.transaction.types import BundleHash, Fragment, TransactionHash, Nonce +from iota.transaction.types import BundleHash, Fragment, Nonce, TransactionHash from iota.transaction.utils import get_current_timestamp -from iota.types import Address, Hash, Tag, TryteString +from iota.trits import add_trits +from iota.types import Address, Tag, TryteString __all__ = [ 'ProposedBundle', @@ -83,6 +84,17 @@ def as_tryte_string(self): return super(ProposedTransaction, self).as_tryte_string() + def increment_legacy_tag(self): + """ + Increments the transaction's legacy tag, used to fix insecure + bundle hashes when finalizing a bundle. + + References: + - https://github.com/iotaledger/iota.lib.py/issues/84 + """ + self._legacy_tag =\ + Tag.from_trits(add_trits(self.legacy_tag.as_trits(), [1])) + Transfer = ProposedTransaction """ @@ -322,20 +334,31 @@ def finalize(self): ) # Generate bundle hash. - sponge = Kerl() - last_index = len(self) - 1 + while True: + sponge = Kerl() + last_index = len(self) - 1 + + for (i, txn) in enumerate(self): # type: Tuple[int, ProposedTransaction] + txn.current_index = i + txn.last_index = last_index - for (i, txn) in enumerate(self): # type: Tuple[int, ProposedTransaction] - txn.current_index = i - txn.last_index = last_index + sponge.absorb(txn.get_signature_validation_trytes().as_trits()) - sponge.absorb(txn.get_signature_validation_trytes().as_trits()) + bundle_hash_trits = [0] * HASH_LENGTH # type: MutableSequence[int] + sponge.squeeze(bundle_hash_trits) - bundle_hash_trits = [0] * HASH_LENGTH # type: MutableSequence[int] - sponge.squeeze(bundle_hash_trits) + bundle_hash = BundleHash.from_trits(bundle_hash_trits) + + # Check that we generated a secure bundle hash. + # https://github.com/iotaledger/iota.lib.py/issues/84 + if any(13 in fragment for fragment in normalize(bundle_hash)): + # Increment the legacy tag and try again. + tail_transaction = self.tail_transaction # type: ProposedTransaction + tail_transaction.increment_legacy_tag() + else: + break # Copy bundle hash to individual transactions. - bundle_hash = BundleHash.from_trits(bundle_hash_trits) for txn in self: txn.bundle_hash = bundle_hash diff --git a/test/transaction/creation_test.py b/test/transaction/creation_test.py index 4df328d9..b0926af2 100644 --- a/test/transaction/creation_test.py +++ b/test/transaction/creation_test.py @@ -8,6 +8,7 @@ TryteString from iota.crypto.signing import KeyGenerator from iota.crypto.types import Seed +from iota.transaction.types import BundleHash class ProposedBundleTestCase(TestCase): @@ -489,6 +490,51 @@ def test_finalize_error_positive_balance(self): with self.assertRaises(ValueError): self.bundle.finalize() + def test_finalize_insecure_bundle(self): + """ + When finalizing, the bundle detects an insecure bundle hash. + + References: + - https://github.com/iotaledger/iota.lib.py/issues/84 + """ + # noinspection SpellCheckingInspection + bundle =\ + ProposedBundle([ + ProposedTransaction( + address =\ + Address( + '9XV9RJGFJJZWITDPKSQXRTHCKJAIZZY9BYLBEQUX' + 'UNCLITRQDR9CCD99AANMXYEKD9GLJGVB9HIAGRIBQ', + ), + + tag = Tag('PPDIDNQDJZGUQKOWJ9JZRCKOVGP'), + timestamp = 1509136296, + value = 0, + ), + ]) + + bundle.finalize() + + # The resulting bundle hash is insecure (contains a [1, 1, 1]), so + # the legacy tag is manipulated until a secure hash is generated. + # noinspection SpellCheckingInspection + self.assertEqual(bundle[0].legacy_tag, Tag('ZTDIDNQDJZGUQKOWJ9JZRCKOVGP')) + + # The proper tag is left alone, however. + # noinspection SpellCheckingInspection + self.assertEqual(bundle[0].tag, Tag('PPDIDNQDJZGUQKOWJ9JZRCKOVGP')) + + # The bundle hash takes the modified legacy tag into account. + # noinspection SpellCheckingInspection + self.assertEqual( + bundle.hash, + + BundleHash( + 'NYSJSEGCWESDAFLIFCNJFWGZ9PCYDOT9VCSALKBD' + '9UUNKBJAJCB9KVMTHZDPRDDXC9UFJQBJBQFUPJKFC', + ) + ) + def test_sign_inputs(self): """ Signing inputs in a finalized bundle, using a key generator. From 3cb44917c8e43027c17268fa4c434a4e58a6f93a Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sun, 29 Oct 2017 10:07:51 +1300 Subject: [PATCH 05/10] [UNSTABLE][#84] Fix some failing unit tests. --- .../extended/prepare_transfer_test.py | 72 ++++++++++--------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/test/commands/extended/prepare_transfer_test.py b/test/commands/extended/prepare_transfer_test.py index e2669955..ffeed944 100644 --- a/test/commands/extended/prepare_transfer_test.py +++ b/test/commands/extended/prepare_transfer_test.py @@ -529,25 +529,29 @@ def test_pass_inputs_not_needed(self): """ response =\ self.command( - seed = Seed.random(), + seed = + Seed( + 'TESTVALUE9DONTUSEINPRODUCTION99999HORPYY' + 'TGKQQTQSNMSZBXYLAFXFHZVPWVGCPRGXKXREJKI9B', + ), transfers = [ ProposedTransaction( address = Address( - b'TESTVALUE9DONTUSEINPRODUCTION99999KJUPKN' - b'RMTHKVJYWNBKBGCKOQWBTKBOBJIZZYQITTFJZKLOI', + 'TESTVALUE9DONTUSEINPRODUCTION99999KJUPKN' + 'RMTHKVJYWNBKBGCKOQWBTKBOBJIZZYQITTFJZKLOI', ), - tag = Tag(b'PYOTA9UNIT9TESTS9'), + tag = Tag('PYOTA9UNIT9TESTS9'), value = 0, ), ProposedTransaction( address = Address( - b'TESTVALUE9DONTUSEINPRODUCTION99999YMSWGX' - b'VNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN', + 'TESTVALUE9DONTUSEINPRODUCTION99999YMSWGX' + 'VNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN', ), value = 0, @@ -561,12 +565,12 @@ def test_pass_inputs_not_needed(self): # Note that the transactions are returned in reverse order. self.assertEqual( response['trytes'][0], - TryteString(b'999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999999999999999999999999999999NYBKIVD99A99999999A99999999LK9ZCHYABJFCM9UGKNWDKPAH9KSSXJPOMYYHLHRAGVAZDDFUJLJBONPLNYQCEBEPVEELEZINMNC9QZYQW999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999999999999999999999999999999NYBKIVD99A99999999A99999999VCXVP9VHDQGSGFL9UGWBXIOSCAZHVIVVGLKUEBDWTBBRFXFINBAEKZTUAIVDWIFKCUUHWOZTGRXHLRYPX999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) self.assertEqual( response['trytes'][1], - TryteString(b'999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999KJUPKNRMTHKVJYWNBKBGCKOQWBTKBOBJIZZYQITTFJZKLOI999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99999999999A99999999LK9ZCHYABJFCM9UGKNWDKPAH9KSSXJPOMYYHLHRAGVAZDDFUJLJBONPLNYQCEBEPVEELEZINMNC9QZYQW999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), + TryteString('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999KJUPKNRMTHKVJYWNBKBGCKOQWBTKBOBJIZZYQITTFJZKLOI999999999999999999999999999ZYOTA9UNIT9TESTS99999999999NYBKIVD99999999999A99999999VCXVP9VHDQGSGFL9UGWBXIOSCAZHVIVVGLKUEBDWTBBRFXFINBAEKZTUAIVDWIFKCUUHWOZTGRXHLRYPX999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), ) @@ -586,16 +590,16 @@ def test_pass_inputs_explicit_no_change(self): response = self.command( seed = Seed( - b'TESTVALUEONE9DONTUSEINPRODUCTION99999C9V' - b'C9RHFCQAIGSFICL9HIY9ZEUATFVHFGAEUHSECGQAK' + 'TESTVALUEONE9DONTUSEINPRODUCTION99999C9V' + 'C9RHFCQAIGSFICL9HIY9ZEUATFVHFGAEUHSECGQAK' ), transfers = [ ProposedTransaction( address = Address( - b'TESTVALUETWO9DONTUSEINPRODUCTION99999XYY' - b'NXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOW' + 'TESTVALUETWO9DONTUSEINPRODUCTION99999XYY' + 'NXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOW' ), value = 42, @@ -605,8 +609,8 @@ def test_pass_inputs_explicit_no_change(self): inputs = [ Address( trytes = - b'MQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIX' - b'PQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB', + 'MQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIX' + 'PQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB', # Normally, you would use an AddressGenerator to create # new addresses, so ``key_index`` would be populated @@ -620,8 +624,8 @@ def test_pass_inputs_explicit_no_change(self): Address( trytes = - b'TNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYR' - b'QOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQC', + 'TNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYR' + 'QOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQC', key_index = 5, security_level = 2, @@ -637,31 +641,31 @@ def test_pass_inputs_explicit_no_change(self): # Input #2, Part 2 of 2 self.assertEqual( response['trytes'][0], - TryteString(b'PNOHSCLHTDHBNES9REFELWTCKSFPFDPQOEEUKYBXFMRSHAAXBWUXMD9QNSQUWZMOBGDDAVIIHWGBLWIKCLTPZDVYRHYZWWJUKNWOLYDWRTRBOVMXMFJCBEJVMSPBQJQISISHSRNKEZXSOZHZISSMLCMCOBYN9DWGV9Z9GO9QEHNGIASTVPGWPBYQORFASXYDOTMJZVEJHZZRJSUDDTAFJDQFCZKFKJWEPQARTHCWKDWKITI9ZDCRNUWJQBDZZMRYNBDQPHJOCTQKMSFFCXGM9NGNGCBTUEEPAVOXDKHQNHSSUNA9CLTFAUIHSYPIESEVC9YWAWEBKNVAKGKZWWGRWYYPPOLTSOGTKEPCQQ9PLDDAMKGRPOHHHDYCLOJVBWWDTSLYZHKLOZBKHPCOUFPIBZQ9MOHHKMSRTXGXHERZREPSSAASILWCFDUFPXOKGTDSHWRBZSQSNCYFJZJTB9DGDJYISY9EZPLHJRMIQARDR9SIEMDYSBJXMWBGGRANNSAI9A9HYRPG9JEFFTIFSMJZHQWXXTABXPQXYOLTEFDAPZFMLTGGXCVPL9ZNBNNWVLMUHAXAWJNNVBPTXWNTFNQAYDBVCQSXJTPXABKG9PYIJEZRKSYBXTHGUSWORXZNKZNHIJW9KEPWANBKNNKOUKGLISUUTQRGMGHOQQDUUUWHFJQOFXXN9MOAOLSLOXLKPAQ9CRNSTKVRUMNLFPVIULPYXKOLDLARYUKLPMIEQYWSJYTYRMBHRHSPQJHJALMWUHLPIGQLQSXWDPVNIGFUOEMJJ9GIUVGNB9IWKIPBERFTPZOZVDJMBCKFTWLTQYDP9YHXAOU9DEEMDU9WBHPSRKFARYYCQBEKKQQFFTRUKJO9SECIZRQMMDOJZVPWSWWANMYVGHDCCGSKKGEGCKN9MYFG9ASYM9PEFX9DUJUYVTITKVMBKXWFTWUNVTFEDYSSTMWVGCYZIOCRKVRDGBPOVIDPAGIGZJYNI9TSAJCOSGQYQOTIXMBQXDGJTDJCIGKNLTZNEWEELSAXWYEBYCZILJWPKCGFHXTCDRANRRRUJWRIKTHQJNSDLZJTSDPHU9UMRPCHKJBHTYSNGIARREPPIMULJXFIATTWPQAAYSDSBTGYATXNDDIBMQEIBIUK9YAUPNBMKMZSRHK9UGN9YWOVMTFCSZWOMWHUHPYUMWJUNDMMVOAQUBQDLJLMCXFQEGBSZABKVTNFAJTLGVJ9VHAQGD9MSDYLOMCODQJIEBZARCRFVHFIGFFZRZPBFVX9OMHAAIXFKXWC99RINEESNHPYSFWESSKP9AQHJHWUPWYOOYVKFUNKXPXSKTHNWNULCRUMIHBJNAIQNGDLQSXNWRILYVJMYSELRBTLDYELCZVSVTDNVOHFXLPN9NDPSKA9YHVFRGPAFAKNOXBGWNRMYQCFCSMIBHUKKTNQBDDRQXZLWBLHRYTWSMJUJWSPQZPSBQTAZBVOIVIRXKJPSXNRB9ILEUAMGJKDGOEGVGOKFDKWWBRF9BYDQUYVEHFTNJQDAMEVFHQLSU9XTGFPOGGOYWTZONFSZWODUOMKA9AXWWIZL9GMNIXHWNJFHNONJUJGMFUGPAAMHZLXBOJFLJFHGNNWEU9DS9VKVBNVIUDXXGDQFQSNLMGWAMPETROFUFVCDMCARZAJICIXAVAM9YZAFSILIPOEOGHZ9TJQTKRLGTQNWFDAEDHZIOAMRHNUE9ANKIYKEKWBYZWFVUMKFTWBRACWZUWZSGWGWTAPXIILCFMLLLGOLHVVUIGRPO9CRDXECHIZYAJXXECRBMLNCYSFOH9PNJ9UXOWBGCYIRIAOI9VVAIYOLHTLBYEKOYMOCSVBFCHHCTGIBOUDCXXXKGBTWVBCAVOUQVOZCUSKORPYWBXCVYYBVFWSZACWFLRUWZORZULS9RNOBKHRQTR9IYTKFVXRWSWERUECAHVTAKTTSN9VNZOLGJJGAHPIJZQBITVDSXNXZTRMIDLH9XFIOEYUVJWIKLLEAIYBOFFUPCBEMMXBDGTZDICOBWWQ9EBAMLPQNHNHKDBZHACQW9GDQQQPSAWIAYLWWOYDTDRXKCNIWFXZRAXNSGDUSDTWTEFANWWTSAJQIVJQZGPXHUP99LYTNIESJDUZGHEELFJGSBLMEKJBRABTBZASNKLSAUB9GHHIHMJZSGJHXKWMKIJOQVBTNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYRQOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQC999999999999999999999999999999999999999999999999999999NYBKIVD99D99999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('RQOQNTDTZWGNBTVNHUYXYELHLRDTUSHIFZBAJDYYGKPUTHMBFMZPWHYULBANOYXDHVTRKLGXKUOZAWFZWJDFVUZKONYTRYSAGTWGDBIAHHMUEEGIPSKBCJPDBSMHAWWZZU9IFKCKJMMTCGGDHPUCBBRDKTQOTQGRDXEDQAYI9WNCNIVMBSAQVCVLJILCKHOUYPJXKNVXDHXPECIPVQQIDWBGRREGYYVROBJELIWPUWSOHSAUKSYSPQMNPRBMKKUQUWGNAWAOEDDVNRJBUSRKBJKWZLGAVDASMZ9GMKKLMIKFWAIAHAW9GIRAWZFYFEOIJ9TBNAVEUSTNUNABHJ9L9GSZTBHTGTRZSIWFVGMXQS9VDTF9ZUVNLDI9MOEVRRBDBAKATS9ACTIABCDWUFNRXZQ9MOHHKMSRTXGXHERZREPSSAASILWCFDUFPXOKGTDSHWRBZSQSNCYFJZJTB9DGDJYISY9EZPLHJRMIQAQJYYRZVHKWCGQLWFDYVZKCDAIBWYQQSUKACFRBALBKMBTBG9PPZEBU9TVRU9RMBHXCNOS9QLASMCDEFWCUBMHS9LHXEYANCHLEFNVGJJKKUITNEYVLPYQIYQHAIIGSTSAURJOAL9SVATHGOVP9CQXMGCYLSYFUQDOWY9ZWJADWVQGPZZISPAWHTMNPVKKPTCSODG9WECGVUANJXZRDYPMPVCLRF9WVGWKKQQWPAKCZQVK9KHBGXJRKGD9IHKRNJQVKSXXQMVPLGVSEWPEXNLBHGOQJUWDOIEXDGIZLFIZWXSIAWWDUOBLSDGTSFLIKGBBGJWTDOMSQWNRSYOWPBJTAJDLRPCRMKNRYEATYBMAZIN9WNMRIHLXGGVIEFZQGAGUSUNQKFAFUI9FR9AIKNBCGGFFECROHFURFC9GFMAUXMPJFWQVRXPLYF99OILFIQIJYSH9HGAZPCJIFHGTZIVGENZHBCMNHOYNAESF9FNMZWLLLCCRMUUFOZVCXLN9OQSODU9QOZKBOVBLBIVZXPFOEZEEXAUBWRWPWRNRYVIKQKBBVOHI9OH9FCQAVQPVVMWFVKZKOCUUSQRZOESNVQR9ULQGQBJEKYEZLXHHIGIAINTHUAXOYJS9NFTZAQIIFPXYMGAFHKYQHADRPQNBWGQXMNSIARLUODCINRFH9CMDIQYAKNJKDSBHGBQJQVA9VHGIHFFSWAIQEHKRGITSLCDBTCHDSEAJSVGGGBCRYHOMFEYEDLDRQVQBBRFLFM9UBOYTIMBYTWTF9VUKUJDRWKJMNFPKKVHRRSJFOFMWJ9QG9SIXCFHNYFTAGQKRUIHVXJ9USSDBJGWLGDBBPRXCOAQPWSFLZXMTCWLFNPEJQFH99YPMFOZDHJYWAJOBECPWONQCPPFNLCAGNJRI9XPK9O9NPWM9WRJKQCDLVWP9HZNGNCJZVKTEUOXEDRVSFBWEREFDKPCU9QATTUXXUHWJFNJSUIHMND9EALDXYCYWEUPJITOTKACDUYCHS9GVTJGFTCLZPIARZAWNGPUWMQRDEIXDOIFUDEWXFVVGVDRKTQIQXLEVULRUJEJGTCDLAOLEFNLDOGLWHYUKGBHSSRURELGFYKTVQUVUXJLMY9ICDMPHG9INCBNABNXEEWOMWQ9J9NQSIASZJLKMXDIXMVFPCFKLM9YEMZOGZVTIF9WHYTYKTRKDXAUIIGJXKPQ9DPVEACFPLZHGVIUVJWML9IEGJXIZNSUETRYORJ9RTEAOZXMTQHAGVFZKHEQCSBZFDD9XAME9ENSFTJZDHRVSQW9XECHIZYAJXXECRBMLNCYSFOH9PNJ9UXOWBGCYIRIAOI9VVAIYOLHTLBYEKOYMOCSVBFCHHCTGIBOUDCXXOCUCRMKTANWHIIXW9LSBYWJAQOPMPMATNGUHWNCBNL9IYJEAUMWSXAKBTIPWWSGXZZCOBRIXZFZMHLGNWAHVTAKTTSN9VNZOLGJJGAHPIJZQBITVDSXNXZTRMIDLH9XFIOEYUVJWIKLLEAIYBOFFUPCBEMMXBDGTZDGFJCBGZSD9CRIGSQSJQOPFIBWSGDSVCTQUHWQWRDLMEQWNIMCSQA9QGQIRSTBXHFVLAOHUTUZBUIWHFTZEDEZGVDKIBUZ9CDJHKWLMIMQZSVIOKCLSURPXHROHGGWKF9IRA9GCOJUDKXYPNBRRDQTNLVKUGCAZHLKZTNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYRQOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQC999999999999999999999999999999999999999999999999999999NYBKIVD99D99999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input #2, Part 1 of 2 self.assertEqual( response['trytes'][1], - TryteString(b'MJ9UDTLPAAOHPYNXBLEOLLHTXEBTGAKYONGZUFJAFEDKZYUBAEDUQZMAMSYKPPWCGBK99QAJVXCDXYKJXTQFTG9BSWEKXKWY9ADZVHAMQQAUCEOIQPRULPHGCINEAI9ORHTTCEHU9GPIFDYMOZORWNZYUZNEFGF9WYRBKLSAZTXIFKODGYAMKFJODJRWMLXUFQ9WFJKLWT9TAVINDIALUWQIZISLXDOVKGZPIYNRAQYWRZW9AFCEMTOBSHJEEYN9GZ9ZUULYDHYNEQSSETKYZVQYRIPNRWGRBCFLHRUAKJODCEMYRFBP9EVFKXL9ZTERUVFCXNTYFJBHN9GUGYDTIXXTKTEWSDM9POVBSQSKGBPSPTLAZQ9SENKYBEHGHPXVLI9UJULIDA9KXVRRQBKKAQM9QVZ9GEOUMSMMMZSBQVAYWUJPUKCLDZBHDQIGUK9DOADAVEO9GQTVHLMPXSJQZHEYDCCDHTWKPUEJBAIQ9ZDYLLYTEIBCFZKLZCNYEZULRNSUGPTXZBEWGFVYRBZLSTRGCYSTML9ZGVNXJAQTDASQENWWGBAPNCZHQOQWDXWSUCYDDIDIXRUJXCETUDIDBZJZTNJG9GUDYYBLHRPSZORPOITTJVAGNTPKFURHWMGU9E9DSQQCVAEYEYDPZWBUVPXAFGLKZZWRINYOVSAZCINPQSUKCFDGDSRCCLKLGGOQIJQWGCKTLRBQOQMGSOVYGBVACOOUFINHRQGQBBDWWMVJTEZJEBB9LD9ZNUEYBFRKUZEFT9WRTZRAXQPHHCNGBHRERZDCBCPP9JQ9MH9RBZPGSL9HJBDHPL9WHKCRUVHFWHJSJFWAWEXCTHU9OYKNPBUMSIMONQRHWDIQXETDHT9QGSNPXGTDNUCCFHCJONIDIJADUINVPAVDZQJNOQJQPBMOSCHMPEGHGPMHMRUUWURB9ZPGENHERLURYWLTVVR9GXYGCDCNZLVWVRPKVRXNSXBGDLBBKVGUAJUGGNUYVJSWHKVYT9LYFLVMNBUJDBLVXGDDIJAQKPGUHRTPWNOTLUKDMXGP9BZFKGGJRRNOUNBWZAUZSMMVGZOKGDJEECERVCMJKXHNLFTI9XCZQXN9WGGQMKXXQSIDSXT99KGAOOTGLDJHCPQJPLJDCZQAGRXYADFXCFBCXQGEVEOCKEICIVKVOMKGBXPZHQ9SXDXBFZZI9THLXOPTTGTPSQJTBBC9VYZUXWNENXQRVGKDY9JWCYNXTSAOLIDCBINWLLQDUNYAQRHAZBBROWSCMANZJZYCKZGAVQEI9CLDNKFDXWZMBMGHFEAXD9CW9WHZJ9LTZWEWKETMHHYINLADMLTQEQEVAJOVCZBHEASNWRATZNQWFIVEIXAJEBPLCRYA9JCO9XJPSUCKISZ9FKXVYDLRIKVIFISWWEXMHEREKXIUBFTBWWYVRKWJOPPVSYTZZRLFWAKHBYETICAKPPAJPADYVSFXSY9IVADYPWTULJOIAYWCUBBCPJBEVWIFNWDSWGVZSFSFFIIEJXIVWJDNHJKXPHTRQGWMVYOUQYUZQWNEHEXCARMOKYQSKWEJKKKLDGKJBXQKODOGJXDSACUDHVREMWBSAUAAKUYVAHTUGVSUEVLWRFYTURXKSVRMTFLEEGQUORVNPXEHTIJIGC9MPCOFKARODEORLUGHDVFXVQZYFFIXBSLWVVOICMPPFIEK9APVOCENJ9DFAQ9CQ9LUAQVSDNSYKXBCSLCGYOIVRGRGUSBTBIMSQTNQYCZ9TFARMHY9XXJMHFUVDWOYRBNBSADQTZAKRLYQFVAMSCXBTHVWPFJTVENWKHHOCURLKGCCGK9SKGFIASFHPTJDGKOIRSKNCODYCEBSSCZNZAMSOTXBCFPGLNJHEPJOP9IIIZXRHTMFEXXZUVKDXTEIUXKBFRTXZTMGSXRWBQQGKBSJWHEXVZL9EKECRQQGWG9OTMQSBBAZAMBOHNGVDBM9NSXMRDJIEOOYLISNGNIVKKQHWC9ZIPWHJUWCXVQZOMRKZ9JCHAXS9RZWC9RACAE9EKZGJHYNLWPMZYDYP9MD9YVA9RCWHMFDRVEHLQV9RORXMULAKDOJOZBOYDFNLTUEJHIPL9CQKTPFYKBUREGDWUAUMZUXMCJFQMZUZXLTGZSDTLW9DFFWGKFIOODTMMXMCQHRNWRUXCGYQGTBMR9NQDBTNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYRQOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQCYZ9999999999999999999999999999999999999999999999999999NYBKIVD99C99999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('AGW9TDZZYGMN9CAHSJCFOBFJCWGBEKETZPUJK9IXAWDXZTCVFTNJSHHEVTCQHBVPMFLPLDCSGPFFWWBDCTQFTG9BSWEKXKWY9ADZVHAMQQAUCEOIQPRULPHGCINEAI9ORHTTCEHU9GPIFDYMOZORWNZYUZNEFGF9WYDXK9CZSKLXVGBHOMBDBGFEMPQXOXBECKEXCQEEDRXNK9YAFEYWXPPURGPKSEXGIAOJDDRLFLGTUHTIHY9EMTOBSHJEEYN9GZ9ZUULYDHYNEQSSETKYZVQYRIPNRWGRBCFLHRUAKJODCEMYRFBP9EVFKXL9ZTERUVFCHH9KZQKBSWZHCGVWDQYMLXDFVDQESOHZVYEUHCROFERIOBOKEWHPWATWEYLCBMQUUVTEWGJBSHGNARCU9QM9QVZ9GEOUMSMMMZSBQVAYWUJPUKCLDZBHDQIGUK9DOADAVEO9GQTVHLMPXSJQZHEYDCCDHTWKPUEJBADZLKXTQKPWUJNZAEILVYCMQFQURKDVQJPOMTJHGUKPYTQHJGIMICF9RVAYQEJDADAHBOYXWRCMESMKZWZSBICV9VSEEGQFNNRJWPBSPZQLDYETZ9TBQGTCEIDEYBRXUYHUQCILZULX9NPUFFYNGIFJJGBYMUTBJMHYOWQEPUXMFKTLTFYEPNQVWRZQ9FFISZBUADRSZTRLQSQCGJXXPN9AUREQNXXGOZCYDVDJWVFDKMJG9CNGXUJQELTWJMRB9IEOGCKGE9RQDANXMTVMPXCEOEQNZG9YJCUC9HEC9QYZTNPPUO9IUKSNDAIAFIXPDONVZXIQJRQCBCTJXIDJGYHXXVUMYNFTGBOPRYRNQDVOXLDLDCACNLOJEOSDVZIDMOVPVKOARQUQNCKWKFHBSHBQXBUDBMZ9PUJBBWVSL9RPUDORRVIQCKADBUDIUVPZDHU9QHDHAWZCKNKVVHCRULLGJDSINCHUILZDWAACAIUVBIF9NRBSODKJGBMTWOBKJANMJLNDRN9FQNOGYQTMQNVS99LAIYNGSMIVRDGRRUJYZUEATJNGXBACDVHTKHGRQELJUPIUYLPFBRREZLFMFUOQGKJWJPSEAFJIALJCHPKZWGJAEVNPQCTGFJTNSBAOMUOXTURUCCKYZCAESRJHEMMYSADNYZKTMPFZAQRHYFMNXZYC9FAHDJPNSLWFUE9MRLUHQYBOLYYGMFJLCIECWPJIRAAZTB9YHLJNCVOUKKKBAHAVFOXSHLDMO9OAYLYCJWXINBHFLHGFBPIDIATUZAU9HCMQZFZLUROQQDTWPRUDEG9AUGBGFNUXIWGQZQAXQX9QFXQPJARKGEZRQFGQEEOUPCYVWHLBP9OCUZZSPOIWFJVXLWSMKORXPAYG9TVOCNNHDIS9CHZLZJBUQRKEA9BSWPYCEXKUGSXXVQAQSVVDWMEACSXHYFDRXLILR9Q9SK9VYJWQEJRJVWSL9KPEHGZPBQYNPQZVQPNYCOOJVCTOHOKQNFKDPEFMKDTTLJZTURRGOXEVUNEEKPNTQDPDWFANWZPBAJYMVYOUQYUZQWNEHEXCARMOKYQSKWEJKKKLDGKJBXQKODOGJXDSACUDHVREMWBSAUAAKUYVAHTUGVSUEVLWKQADVMKRNUYIBEO9BCSPSVFLWLTZBMFOFSGEKFTOAGHAVJ9YRSWFBXMMACGKKBLFPALET9ORLUPLQNQWWYW9EWRLSPTSPF9S9CAHGXEKDLVXFDTVVJDLQEOJNOZMUBJUHQXIUVD9ZFCIGCFCWUJUALQFDULVEHHOWWQXYHXXVSVCJCAXPTJBWOZRXNHBW9DRSBVEWHDDQJUPGZQVBDL9OATVSZKQQFNTHNFFPXJSQZXJJJZDEQZNZAMSOTXBCFPGLNJHEPJOP9IIIZXRHTMFEXXZUVKDXTEIUXKBFRTXZTMGSXRWBQQGKBSJWHEXVZL9EKECPAFTVMVVGKE9TGGTE9YLGGYMK9PKBERBILUCPIQZTKCXSATLRKBGGDSWORLQUKSMQLDLUMMML9VCMZUJZJVGHGAXDELKIAZYNAHPCYSPUYNNBZ9MBUQGRKBEKIHNIOGIWQLIS9NBBWDPWGABMIGADUMG9WKFZHQIPYKDMJTTYQRJWYXSBAPDJSKEIUJNOMNDNGUHEFBSDSNNKABHEJBKBRIRLKSQBQIRPCQJPRXWDDBIXANTCLWTNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYRQOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQCYZ9999999999999999999999999999999999999999999999999999NYBKIVD99C99999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input #1, Part 2 of 2 self.assertEqual( response['trytes'][2], - TryteString(b'EOWARUTCGMPDDIK9HLSBJUNJNKFQ9W9EHNWAWCVBOWZNPDPI9MDARRBMMCQTVNYKQYKO99FJY9ULJLRYZQRC9XTVDAFGNRNJHXBWCUQEUNJKTCXKIPHQWRV9KAGREYBHXIUFNS9DIQWJEN9FEAXBOZDNHSCLOSGKTDFLVVEDDRSXKSFOAIIDHDVEW9YWNQZQUHGCBYDZUZGINOLCFKHAPPSYMEIGRHZUVP9BLFFGHYWIOLYF9DXXYUKVSYMLDGMLKDEVERGZ9AWDXSOTVCWQVES9H9YE9LJJJQJCPUVFNCJCVHPAVMBVPODVWGZQJ9ZQWITDKH9DIRSGNGN9ZYJPVZOJAOXOPOQSZCSDILTOAUUMLGOIYG9MYSYBQUVDDDBCFTDWUMPXUDHZBDBAHTUXZWINNALMYDJHGJLCFCJ9KZZNTFPZGSLXGEVEGOWSOUAFBJAY9IOEVNLHFTIWEFURULVEFSDURVWBMNUTNAQAX9NYD9BSA9XKUOEKSSVI9HSAIXLG9PCZKWKSLGOBRKGHSPCTREBYTKUBUWRCCHTDQPFMQBIKTAVXVOCTGUEZCEHGXOGSBYYZFQ9WTBUKSJEUIXJVCWBWQILYUAZ9LBXRRQCQWGMEMU9YNU9RYUBEJQYDZOOFXBLWBRLIGVP9RZKMLPDCMKBEHY9CUBUDVPFHLOFPFOEHUCFFFKQC9NXTNDHGSVNVONLXUZANIAOUWDOUY9LFXGFFBFYPECHONGIXDXXRFAXZIJIXZRTXOOGLZKUVNPDSBSQPWZIOWQQQDQHZJRRXMPYVYHFAPYLESHJXJDGYHOGZUHDWVIXGJEIMQAQACAGJXDESBXPMZM9SOMNEWFVLWJHHBPQRCXVXDGQIAPNTPWNZEXTBZJGSKRXKJPMWPUSZYVUGRJHFHQBLLMGXZWWOQME9PUUEAQNZCZNNGN9LDHAQMDXTSRV9LDMGRXBLUIDEJPIDT9TZDHWYQZQWCUVKTUZGNZ9RHIBWMQNFRQL9BDBRACLIVCWLNZQNEADVMHAYFLMTGZSYRIZDWIWMVGU9TBFEC9XIHFK9GMGVGYBADQBGMQB9IWKASSSLC9OWZG9AZEYRPMHQGRCFKUOPEIOZXUHTUDDLIRHENPXFWOQMFBAKZHKOL9RZLCEKCFTOHWWTBVFOWDKUDWSSMDZEKPEBQUIE9TUSDAMHIRKRGHOGRURYOCTYSDRLIZIADWXZRPCBVHOFZCJLZTQZLPCDRNGBREQTKTPMWVDDNLKYPVCUGPBAQBYCQGDVOKBGMX9WHKNEDIJXEPIKPIQWZVO9UVYVG9QB9KPNHIDAMHTVVCHVKAJREZCZETYPQFKRCNDYGGLDYSMHBTUXGNFPHZVQOQQUBTADRQKZCVCVIABGGNPDGBVWC9FBPHVVUFBPPBBCLXLKYBFH9LH9AVKBIFKSPWZYKQPRGNKMAHQCTYFQWAKIY9KYSCFGZTTAOGWPMKDMQGQSVANQL9YLOQCCIATBEEOTELNTXVJTLOTZUPYJQEAQMDCCSU9ORYZBQJULDQVXPMDNBWFXFPEBIE9MFFPIIWKXDVCPKDGBJFWTICOBRUNKJEFBKXAAFWXYPSCVFRLUVKDSBSUYCIV9UPLJTFYWGFJ9ZFYNOM9YXMHOYWFDDPIJOMTD9KGA9XCXGQHLZVBEKEUWLSC9BFSUTFJGTUHNMKOJ9NQC9UXJXFQSBDOUZRTMPOMURVXUAYGFLGHNKRDDTCASPTBUIDLUHH9HBQHPBRIUICIGNYMGPVNUPIQZOVFHLTAENGAYPWLCQE9DQPLMNPCJUFBPKYGHPHBRTALLMFUHIATKTSQBNTHGRCZILLNCTSZKJHQNVYZ9LOVYYSEXJDBHBBXEKCJEUDDDTUBLWCWWRRGHSZFMJIIEMVABUFNTNLWMVYG9UUVONDX9AMEO9WEPWAJDLRISKO9YCBIYQGGDMJDFDERJNNIKRROFSVLEBYFRJJOOSEWWBYMTIQXBQBYMSFAFBXPMVZAKU9LOGBEHKMOZDMSYXRVEZHPPZPKWCTEEAPFLHOGHJPCFQFLSFHTKRMZEKNEYHQZHLG9E9EUHKKUYSAQTOZWVPQSGFPRAZT9VSYKWRBEEHWPDJUKDCDXUCQCRAGSNAMLCSFOBMIRJFINXNGTGHXSRGFQCI9JFWNBCM9WDEWDPDGMNXMNKLITPRVXYHHCMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB999999999999999999999999999999999999999999999999999999NYBKIVD99B99999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('KVTQSEYVEVEGDETHHKGCXAATAPNN9GDDCUFVOGJXFFC9HAGIMRLGXZMDUCNTJBMGDZWSGPPLZSUOKONNZKRMJQJHRNHPUX9YEIIPOKZLBZUZLDKPMVNVRLUTQFKQIRZLEBIIGBROFFMQVCPQQMGNC9RTZOURPDUNRXVDJUCLZFBEWJDVGCAEDFT9GQSRAAITNLENXSQDILMILGXYHEVCBWCWTHDAMST9IAXCLHDKKMJDWLZDGKD9SNZS9VIDJIFJNHNMHZCBINTWMWFTUPPCUAKEHAXLANHIBDSLPFLTRQSDWONBI9NYJFZVFCTRXOUMWOWDEIJBDBHIORZUVJXIIAXDWPNHXIBKPXFXMXRGWGXRQQG9NXHM9DDYUIOZMEHXTTIZQHNQGQVBKUMSCNABDWINNALMYDJHGJLCFCJ9KZZNTFPZGSLXGEVEGOWSOUAFBJAY9IOEVNLHFTIWEFURULVEFSDURVWBMNUTNAVCEOXRKBZTSCZN9IODZATCQUSPOWMWNBBNWXMA9HVAMYKYAQYHFFKFLBIWYDNDCTXPYVBNKREIGKGMTDCQKIHMAPQGWUMICACHQJODIQPVVWCPUBJC9NWAXSAXUHPMNJEJF9MQJCAJ9LMPCT9XLPLOLCDSAJYPZYUCMURTVZIOZSRMLKANEEYSJAGVVPBWTN9RDUJWEGBJSN9RDPWQDSKDXFXXIPUQATFRAFTZFUVKOKEISVCYZM9LRSLJ9BYNPLUMAQNUHXHPDLHQCUHJUNKRFSUSVWLEPCRIZHWKXVJCAPPGVMRXXXEPNELUREVCCNMEGA9LHXJZRCRWJIRYJPDRYOBG9YQUVIYJPAFQTMIKM9Y9MASZA9DALXZDXFUFJBMBPTNNENFPVGUNLXSNHTXSUVAMYEVRAHPLJDIMJCDUNN9QCJKHDXFSW9CEEAGXOUJLELTFGOQNCSSANOCDNMBMRDKNXAWLXWSTFKPYRRSBCWQJHWGPBRDQNKGHWIIJGZTANNFBUCGHJKCWPLFTVLYWBWTCASCSNHQKSOLKRJILIAVLBTYVWFMA9VWCLNQAMGUGXSLUJFDXZNMXZXNSTTQOZ9RTXF9QOUSFVTZOTRNZ9SUHXFAVITYCNYJGGOKYTWZQCFOQRCRGRSQVMZZNOIOJAELHG9JYUDLUTSOQLWNGIJTHGVELCK9VFZSFOTYHJWAFMMKDGGUSNSUCRKGYCRUFSPWEJLMLAHDNTCGVIEBSO9SC9NDIZYIMBRXCURBHYMAEB9JMAPWFUZRRCGRTLZRXJVLEPZ9QNKMERNSMFKAXPLZQIJXAAWY9SYMFXXOKGIGPF9UVTXEMSZZOINHKANZOVGSEZPGUSYKLAUJKZKNVDZJMS9CZRXCVGFUO9UMYVJZCUIKIXJTUFCRW9E9CJEPWLENSXWVMFA9PJZTLFFXYWRCWTDPICHS9IINY9ZOPNJWZ99IWJJQFRXTCEQAMBFQNXCFXNAPAGDMUJMKVDHGHSZZFQRUINOYWNXTT9FGWYAXWVXJ9YGZYEIKG9MWN99CBNOQWZVYYPZ9NPCYQQKVTWVKUBSTOYWRMFDUPDB9XGAOTEUPAFDVYAEIQHBPBHF9CXEDSOOF9DTGBJOAWHJYKNJ9CWRCATOWWAPTXQQTITZUQ9LXCFDQPCJHFVDPIVQHPJKSHRDOIOQBKECCNOOHDUYKYFYWUBJJGWQMIIMFNZZAOGXPSVZSZQPUPBVUTJNGQLRM9N9AYJJHBBINQJFNDATEPMKYDQNPKPJ9NXIUCXSOSQOC9M9SSLTBHGWLCQE9DQPLMNPCJUFBPKYGHPHBRTALLMFUHIATKTSQBNTHGRCZILLNCTSZKJHQNVYZ9LOVYYSEXJDBHBBXHOFKVWHVOKUAYPGNGRGARFGEINTOJVMDSJKENFJADXBOZMKEJGAMSQMMETTCTDWNQWKYIGVYQVFMC99N9MJDFDERJNNIKRROFSVLEBYFRJJOOSEWWBYMTIQXBQBYMSFAFBXPMVZAKU9LOGBEHKMOZDMSYXRVEZHPPZZCBNLPDUDVEPPYTCLKF9OE9YROSAJMJHNCWVYADGEYXIBPLDZBQMIESEYBJKONUUWGDDCD9SBPHTMJFBXPS9SOROVFBXDGFJFYWARMPRRMRYN9VDRKBDKHSZCPRDYBZOXCUWRZXXAYRHELLWMDTMV9VHVICXSRJVOCMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB999999999999999999999999999999999999999999999999999999NYBKIVD99B99999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input #1, Part 1 of 2 self.assertEqual( response['trytes'][3], - TryteString(b'UZW99YV9GMPLXSPRTMJFFGOVNMUNUIPSIJTLBUZT9YCAXBKRWYDVKOMTKHW9STWCMHUBUQHZUGNFMALYCPTSOEEYANVTHWJRFHRYJ9D9JIBDVQLTQFDBYLXBJWAEJPPRHOXSZP9KWKNLQCUGMOKMHJQYODRVVYOZ9DEGJAFBQNIXYXJ9PFGAMZXOBZDQTKQGSTLSXEJBJ9IXICGUFPONWTRIPZXVUAJQIRXYMKONHSEFMCJML9DGQRGLMGLGKEHWTQZWOMIZIF9FWUUMVVWS9CWUMWCHZIRKTODTRLEJTRNA9CCRFJNCVCDCQID9UDQJHGN9YIFJZEFEDVMT9PUYWCABIHJMPNQTSQQEJBKRVQYLGHPYRCOLWKCTKMPFCMOMC9PABJNHFPNJVCYNPAIMCFDVHWOEJIVJOIKPMTCAQZZEFEL9YSOSRWWGBQEPFJNTLVWOXIEPZHHCIQF9DZOQGUKYOJSIFHARSBORDAJRVCTTIEBUD9ISDDLULQQQPHZJTNXOBSDGDWRGCBURMWUP9XQTYIYRLCGWGIWWDO9SQLQIUZOGXQQOZ9CZZINSZAYSLXJHVRQT9DGTLTIERBHIEYFGCHLFUEZJHUUKCZKRCOWSTYIGNFB9TZACBURMAGZQIPEKPHUZ9HIYGWZKOEECUJPKYFXMW9TDITMEOBNNQVJHECBQPXXAETVTHCYCKJGEYVSMWRAXBREMDKCHHVPAED9DYFFSRP9WOFAARRNLONJDNYLCBDKPUM9HYKRURNIOFJBIDJBKYNRVZKTAITEWNMZLA9XMJHIPNUJDWQ9ZRDBJXNZCXADAFREDEDG9EVDYWVFDOEZNFJKJVEXGVSUSOHKUFIGKRZWCVDAWBHVIAEGRENQJSPZMSJXK9VDSLNPWFEVZPFD9JRSV9YOOTJHYKV9ZWKPGBEAPATMINAESECJXMULWYQUENYNTAEYITFUZOTFXVCOWTPMCDKWBYOPWHJMUFRJYQNJLIXIBQHYKZTVGFRDMENVRUAGPBXHJEDVXPEEYWHALUAIFUCPTIFBHMYXSSYSPWOHRXDIKGLRHRHKXIOPBQFQBHQTKGPMYL9THJFRGIFBY9WKIMQSUHKUKFQRDHFUBGPWZNE9SWREBKNIOCAZXFSKEHYBZPWOLDTPVUNVUTURRERGDVEUOCE9NDEHIZWRQCSNUEWYMOAHJGEARXYYLGJGQGASBVJAYZCCUTXIFIHQUMKI9MPRXRZAFUYYSPZQWIDLHJ9NGU9WYNLNRWYKNGEZIKGSZEXL9BVIUNFUWMDLONJTFIIXWUETTMSPBUGHYTHJTJCCXQXLGMHUDJEBVQPCHKYTXJQBBIGRGRWPYCNCYRIOMNSCITUCWHIVOMKCXIW9UZAXRQLKUEH9PZBVPHB9VETTZWFIDEWCHJIHW9QVZHPVUSAEBTLUENJAMSYSDVNPVEDXJBGYYBQLQDXLUEAFJMDYEGDKRTUV9DCJNFZZSFMQX9DCZ9LQLVDOCNFDSNGR9PP9CNHAIAPFGVUUMSMOBUQJWDBAFJXHLZFZOCSK9OQIJYFBRVREMNRJDDHOPPITCXZYJYEAARBNUZYBVETPPZHMFCOIQLJRQYDZYBZCSHERQOZDKOSZWP9QHWMRSYESTDRPGW9HZKKBGHHPBHAUYXLE99OMBYHUFJUYGGWVUEPUXJVEVAEBFJRRFPTOIBPDXSIVJWPZYQVXY9VF9GFTRNRBZEHWFSCNUPGETVYGEJJJQEVFIUFMTFHMDWBTEIWFXGERGZLLMPMKNJSI9AGNZNXWYTJTXLUJHQHAUPZZIAXKCBAECERGTBPCKQZEGSRZIZTYRULGOAXETODFXIKBEZQETMZ99LLTUMLYWA9DREHWALIM9AYCBQQFRNNHUIKVJVIGTGIF9MUMSYJIZJAPOXHIFXH9PPOUOGAQWAKFGXNJDDISLFELAOKYBHMJUYHKXNZQAYWPHPICVMMQOSNOJFDOGPOPMZITNCRT9EXZPRYGOGDIZBWXRNLCGJCNGQDXYYGOFBARMWTPNNTLJBHHPKDDBULTHKEHDTTZUETG9LWVQCRWADOQFMIF9GOCZKBZSWECWORPZUXGLO9WXIZ9QOBANDWNBPMHBGCJ9TLS9WKPGCAJDPBUNU9OMCKMZJVLTUKPZLD9HYOAFKBKLFEVPJGPAVNGRMDYYBARNZHRKULBMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEBN99999999999999999999999999999999999999999999999999999NYBKIVD99A99999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('HSXQRKCIYXEEEEYMESAEWHGVRBNNFUPVHVHYDUFFDCAPYCLGTMMSYVZPGMVMGZFNDAKUFEKKKMMLCDLCYPTSOEEYANVTHWJRFHRYJ9D9JIBDVQLTQFDBYLXBJWAEJPPRHOXSZP9KWKNLQCUGMOKMHJQYODRVVYOZ9DMMYLMVBCNZSWASLFGJJY9NZO9XAIAIOWBYDHLNIBMQJLRBPZJGJUNOKYFYD9VNESPEZNIPUABKFNIAGEWGQRGLMGLGKEHWTQZWOMIZIF9FWUUMVVWS9CWUMWCHZIRKTODTRLEJTRNA9CCRFJNCVCDCQID9UDQJHGN9ZSGJGRSBVBYBKSBZNEJGZZHIECIVPPV99PVRHUBHLGHAZNJRY9LDB9SJGTXXHG99HQAOAI9JVPIYOOWHXFDVHWOEJIVJOIKPMTCAQZZEFEL9YSOSRWWGBQEPFJNTLVWOXIEPZHHCIQF9DZOQGUKYOJSIFHARSBORDAASWFIBAYHLPUTCUPJONWNQVKIHGKUFHSYKQJCNHYBKETAGEZKMPPCOECTMFZPXPLDHMVOSSU9RMQAQNJZYOXVJLKYZJDXUO9BKZBAK9M9RL9NGNUOVZBAJKCAEEBFFGZZJHLGL9KHOQQVKJYQZJYDTCYJXBJBUZZPACRUDDGXWKVRTVNOAVMYVGPEU9IPLHWFXZEHHUMJRQSQOILKMOKTSEBKEYSFRLH9YLDGGPPLSGFCJVINBCKIMXJKWLM9HTTAIVNKGUOHGJYPPDVSYAZLIFJBKQYQLLXBQUZJMEWUPLRVUOMXBHBUJYGDEGOPWNODYSZPQGBYZKQVXFPRAJNKIMMBWJWLIZLIHPWBSJINAPLU9NYHS9ANDORELEDICPYGWQQRGCMQXSWNBIHCSXPATVHEITSOTMKPSBBACQMKLTCDNTIYBXBCGFGIIPERFKHQKOONRHFEPMRIFJBNUEQEFCVMAXHARRHZZQGYALRQHZFBUTFQRVPWWPMWFQCNFDYKFDEGLGSILJRTSVGSLURIZPERJRLSGOMESSMZDUVPBXMOCFGBUWFZBCNYOBGZWGD9HQJOOLESVVAEIWHEKZXGHBEQHAMAPCLPQQRACGTWHMDCHSDGFEOISFMWWITNNDRLJ9TVIBAWKFLQIEHBRUQHYZYCGJWQIMODPIPHFELJCWRCIIKYEQNRSYCUGWXMJSOFUEBCKPXIOCXP9OTZOIDOSWPDNUTQXEHILCONJHHJFPAJEVEBVXROKKLJCZGXMOLB9U9NLCKZ9XUVHVUMWFFPAJZYTDJ9DIXFDQYRD9LPASBDIDHRHHUPOFWUAPVTCAAPNLDPLPN9XTEMOJSBBCHWBULFNHFMMPRSDQCNP9TFMFJFUON9ORDEORLGHZA9JZTRGUTOWLO9XWMAQZXHLUPVTFRSQUDDHYQRGPBLCOHDMLFKQVJAAKWFINZKCTFOESRDVWYWUAVGVBY9RLBQIC9GNXZIRQTY9VHAOIAXXIOVIMSVVIVONDRAXXGUAKFEXLUZYXVMZXOZKHJOKUSRVBUGZXFFDIYZOCSK9OQIJYFBRVREMNRJDDHOPPITCXZYJYEAARBNUZYBVETPPZHMFCOIQLJRQYDZYBZCSHERQOZDKOSZWQJFUMPXYZWLMDZJFYBNYFSKSJUHGOVSAIIIQVDFQWLCRVKTXRAORLNWKZEQRCCTJRMRYCXUJDWFPG9U9WODMOJKYJFMFINHBQSYVGJNNTJCNGOGKIUCDKTNMGFZZLZYYXNP9HPTGPINRDBDLQOJAEOYKAKBICWYZLDSZWZGNUHVOXYLMGCOLJSCXNPMVPPRSBRVEAQDAX9CEDRXRUAJSULVKAAKRMXMMWLPTYTYZZLOUFLBRUGDREHWALIM9AYCBQQFRNNHUIKVJVIGTGIF9MUMSYJIZJAPOXHIFXH9PPOUOGAQWAKFGXNJDDISLFELAOKYBAKBDTCTZDIOCPVXGTJILYQMPOKIVPJLGPEJFQE9SBVGBDPWMPWZPCNGBOVQSJLLHPKJIKPA9AIQZVHJYYDXSSNXAUDLKEGPCGZQZRXUWXTZMBXLUYJZBEPOTCHZGSLXUDI9PGFNHOZRQLQDWFURIXMDINYQDCSCUZBIDRQOKQYTXKSDTXT9YZDQBGJLVQAM9TWRHPKPJG9OAHJNRQIHPUSDLJHSTRHSTSQURNPOKQYVTIIOY9DDMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEBN99999999999999999999999999999999999999999999999999999NYBKIVD99A99999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Spend transaction, Part 1 of 1 self.assertEqual( response['trytes'][4], - TryteString(b'999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUETWO9DONTUSEINPRODUCTION99999XYYNXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOWOB9999999999999999999999999999999999999999999999999999NYBKIVD99999999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUETWO9DONTUSEINPRODUCTION99999XYYNXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOWOB9999999999999999999999999OJ9999999999999999999999999NYBKIVD99999999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) def test_pass_inputs_explicit_with_change(self): @@ -680,16 +684,16 @@ def test_pass_inputs_explicit_with_change(self): response = self.command( seed = Seed( - b'TESTVALUEONE9DONTUSEINPRODUCTION99999C9V' - b'C9RHFCQAIGSFICL9HIY9ZEUATFVHFGAEUHSECGQAK' + 'TESTVALUEONE9DONTUSEINPRODUCTION99999C9V' + 'C9RHFCQAIGSFICL9HIY9ZEUATFVHFGAEUHSECGQAK' ), transfers = [ ProposedTransaction( address = Address( - b'TESTVALUETWO9DONTUSEINPRODUCTION99999XYY' - b'NXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOW' + 'TESTVALUETWO9DONTUSEINPRODUCTION99999XYY' + 'NXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOW' ), value = 42, @@ -699,8 +703,8 @@ def test_pass_inputs_explicit_with_change(self): inputs = [ Address( trytes = - b'MQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIX' - b'PQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB', + 'MQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIX' + 'PQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB', key_index = 4, security_level = 2, @@ -709,8 +713,8 @@ def test_pass_inputs_explicit_with_change(self): changeAddress = Address( - b'TESTVALUEFOUR9DONTUSEINPRODUCTION99999WJ' - b'RBOSBIMNTGDYKUDYYFJFGZOHORYSQPCWJRKHIOVIY', + 'TESTVALUEFOUR9DONTUSEINPRODUCTION99999WJ' + 'RBOSBIMNTGDYKUDYYFJFGZOHORYSQPCWJRKHIOVIY', ), ) @@ -722,25 +726,25 @@ def test_pass_inputs_explicit_with_change(self): # Change transaction, Part 1 of 1 self.assertEqual( response['trytes'][0], - TryteString(b'999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUEFOUR9DONTUSEINPRODUCTION99999WJRBOSBIMNTGDYKUDYYFJFGZOHORYSQPCWJRKHIOVIYQB9999999999999999999999999999999999999999999999999999NYBKIVD99C99999999C99999999XRHLMDZPZTK9DIVUOHZIVOOLNKFYRMOX9WJZVXCKRITLLRPVGZJKBEWGAZYCTPS9DDAZTOORMO9AFQLDY999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUEFOUR9DONTUSEINPRODUCTION99999WJRBOSBIMNTGDYKUDYYFJFGZOHORYSQPCWJRKHIOVIYQB9999999999999999999999999999999999999999999999999999NYBKIVD99C99999999C99999999GZTLUWOGA9QLYBHUHB9GVUABQHPIJRWUIUOXFIBGYEJWUA9QUZVAKCFLDVUUZEFIDZIUOWUHSFOQIWJFD999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input, Part 2 of 2 self.assertEqual( response['trytes'][1], - TryteString(b'EOWARUTCGMPDDIK9HLSBJUNJNKFQ9W9EHNWAWCVBOWZNPDPI9MDARRBMMCQTVNYKQYKO99FJY9ULJLRYZFIWJBYENOJJQLK9WPNZOYKIVFEGDEYESZXRKUPXQCGCIMRFCRESTNQFLISJRDZYJYPFXIFJEPKSDUCRTXSKXGTEVVQLWKHCQDQDQYTHRVZDGYALJOQYIVPUGQCWFGXSLIAQZKKMFIHHU9DIJHUCAGJFNFVYLKSCYFDPOQIJUKSFLDRETJJGOIHQOQRIBCVTUEDEKTEQPPZGWBUCLMRUSQZLMWCGKHZRFQKSTCAEJXJSJGZOOKMDEFDEAVOPEPIZAFFGXPJBKOF9YWUGNVZZBWAUMRUBHUGSMLXX9JARMUUQOEHESMAUBYEEDASGN9ZPQUTIXAOWQTYIKNENEXTUVYWRZWBXAATTNJUGBWQEVUQNXGOLGESNXUTRENPIZDHJVTGSTDJJTJXR9VWBYVXILZVCEOXRKBZTSCZN9IODZATCQUSPOWMWNBBNWXMA9HVAMYKYAQYHFFKFLBIWYDNDCTXPYVBNKREIGKGMTDCRAMM9NORHYGETYEKPOGVUICDBCQQVGCWXISODSCBTVMYCHW9PWMSPWRVBGUUBNMUM9PCNHTXKBLYWKSCCNKMCYNFWFJQBSLIAJMCILGJUNCNLXFULXNHEZDW9OZMNWCTKFVKARMJPTBEFH9BBBZKTOZNTACATBNWW9FZ9BIOMKIGAWBPFHZFGXQZJDTAMP9EXDDSBLLQRZKJILUFPMQM9SVZUUOMMLJBHHSYQQIKXLGRKDOBTPC9KWBYQZYCZLAWICDRDKMHWDCWTXQAPKAYQSCSDTNDU9JVUECMPEFHZPXCZEAVLIHNLC9ADFY9IFFCMVPYQFFPWUXIAPIRIGLMIESRRCK9DAUALK9DPHKTUMGUOVDJSGCYXXOZJXRSYFHEKE9LCZXVFFZMBGBIMLNTWDKEOKUMLIRZWB9WHIIYDFRHLSULEBOHHPBOQCWVTKJZYQFEYFXBJVGKQGVLYTILI9VDVXDEHAWMQLLRGBUJJHKSXBPNBWXQGYLMHWVRLOGYCCBTFVSLFNXTH9EHPRCVDTVXWMOHU9MBYMSLK9LPRIZAROMFPPWKI9WSWRPROZZACGLUWVMDKABBNFWBFIRQJRICGHCYODVPTH9GDDLZPBUSXZVYTFNQUHIRFMQAHHLPNNAPFLPXQNXEDFNCOWXUV9F99CFXLKMOSMOE9CKMOHJX9CUKV9CDYBGGEKYKVTMBAAWAVEU99PPO9PMBLQFFRLQGCFIQVJMKNOVHTSUWXXTEKKZCT9RQASRZHCLAIPNEAED9Y9YIHKNUTJOYOYWTMNRNEBMXHCABTDHRNDOQAWATLOGRLRTPOJOGKKIGDWSAUDV9MNXP9IHETL9ZHUOK9GSNJZUSA9KGXLV9GYZQDQETXHETWPDMECU9W9BVVUMKMQRJQF9CTGCXMG9YZWYSWRXDXDZNAXDVOALJAXYVFUPNHAOZHCULZTBADQRMCHLFUJLU9XCBPBPYJMKFKJMSRPKPGWUWITCOOSHUNMGQHFSUSZFGKFCAVXGNOROHKVSNNTIKBATGSGFYWOHNXYBSQQIFKNDRYXMUOQBMKPNCCKNBRSHSIRZSROZLHKPKTSCANHLMWJGFMRJLAEIXSFZXMGCZCKNCXORYKQUX9TSXFBAWMCNFED9PLCXBDEMCDXLKCKVABBGLZEGCESXGTPXPVACXXQLQ99AZMPQPLRMK9IHSQIKQUHQGQYOAGOXSADYDQDTUQMXPNPEXARZQVYTNCTLBWN9DWTBMNFMIGRZVPOUCHOEZSMZRUYYAZBL9KOCKNPKEQHPOLOOURWZ9HOFKVWHVOKUAYPGNGRGARFGEINTOJVMDSJKENFJADXBOZMKEJGAMSQMMETTCTDWNQWKYIGVYQVFMC99N9UTUWXKVLQSJGEQJEZJNXXLQRT9PKTPUZJYDLWUDHZNG9TPZZCHBMELIYUZ9KTDEJSLYVGIQNZQOJCOHCDFBU9JPQUGKGWSVMAW99LBLPJPZOPNDOFOSYAKWREJMJ99SMQWTGBWBKXLQPSFREJOQTOYDLHGSRQJEYHCOGEXPJMDLQYAPQWJGDOEHYFUQZUWSFRVNISOQIDASYGRYJQGEONSAZXCDV9ANDFLGYPFUSLJOILSMMFKXMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB999999999999999999999999999999999999999999999999999999NYBKIVD99B99999999C99999999XRHLMDZPZTK9DIVUOHZIVOOLNKFYRMOX9WJZVXCKRITLLRPVGZJKBEWGAZYCTPS9DDAZTOORMO9AFQLDY999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('RINVQCDVEUGCVRPVHTSXDJAMCTTUXOAGNEHOPRTTJOHBOMCMB9DFPQKXA9RCNNGDSDNZQSOZBTLQGHEFWPCVANMWPQRPYDDLQYFAOMQSENXSPXERDAKQLGVEENDOTQBUSSUJTG9NNBMYXEJJFWQGW9VXJWXYN9POPADKNBNVJFBNRNLDOEZULNHIZJCQ9ABVP9RWBVQRDSCWFSQSLDWUEXVWVTV9GIITYLOOZDYWLWHDIIUX9O9HIR9NBEYDNTRJGOQRGHUWFJNOQDDFIGJYQLBSWEDTOTKKGSWKG9SUKYMKCZXIDEMUKEQEUYQZXTXVKDF9HKOJKFZDQXOR9QFE9JRORKCLZ9PKNJDXKZRYWZEIDGACMRGULPJIO9CUNLCESVTQOYKYEYVSVVNOZRJXXZHPVFLKCFLBJUPWAVVKDSVZQJTFZIMLDVVTOQKFZDIISJJTTFUTCEOGWQGSDNZPLQLOHVRDFIQKDKCJTWSDCQSYXAFHKGBKPJTHHANZCDBOVBK9MLJFYMRRSPWSYIKUJGYMGWLBZVIFBGABX9HHTWTWJKPVOWKQVFXABHO9UTRMKMXVUWLPTELVSVPBSNMSHJAUDKTYWOSZJLUNUDP9PKECZ9SOYQRZHQGNBPSGKNCZDEWWFYQ9SBKBHBKMJHWHECMFOWCY9IKFZCMZBWQEGZ9PMMNGMPAEBDOQMKJDWGBKYAJZFKTPLHCXEJREIIYIFQAHWWUBRTKGZOZIHC9J9YYDSYSTDRWSGGTWMEYAKJDECPQTLUQSJOJXLTHDPEGWSVGEZSQHHIVACNMABJAZCDUNRTHEBFOJEVEPQTWYXCLTFXAVRLZVLIULKVWYYJPQUOTLFHRLXFTCMQNASKATJGQ9XDPYRH9JZU9TWWYPGDXMWMHPSLKRWUYEKOZUQGVCBWHYDMOXGIDZKIZIUDAUGJMXNISYEXMM9BBCJPSAO9YLRJNSFSEPSCOWJUJRZJCRO9KEZGNXXMREWLCW9BVHCDNZ9KTXAEWJZ9ESEAYYTLWIPVGYY9NTIICOTNDFCTLYANOLMYAYXARMLDPPFSBGBWTTLRGYFOPLEUOYUYKBWXOBTSLRXAKSNIWDDVVBMZ9QMRHYLNPIMEVYVVVDUGERRFKMTBREKFTVZMNN9MKHHBVZQGQSCQXCOXKXSLWZMHMMYXVMTXSKEWMPZYYXQJXJBJFGWHNWSQLVVZSISUJCGMBWWALQKGMTVXIDXABVLDNDRWATSJEKCPHBOL9YAJUIQJBWXSDIRADNWD9BNZGXRBRJEYIAASTQPXURHZYXYHHE99MC9EXHMGGBUJYKHFPCBHGDVNGSQLJHNUIOJDZUVZELWYWEGMLJWOMALTZQDTEDJIROH9RDP9GVXCEWTULWE9IRWLXHKWSWGMFMALPOISEGBGAUJFSVDNMPOGEHSFDSPZYF9TDQVRSZSNVWHOWABD9PHRWBCXECMSXCUAQDEXKXJZXNNEQFZI9WYZMWGLTHECXNVNALCHTKLOOKJQMOAWBNYYDFJWOPWDBZSQFI9GKOQZCGDBECV9JOIWWUSJN9KDADSHSEUK9MY9XTNJQCAPHEYJJTRWUPFWDFKZTNGUBBSPVYSGQWXQNRXYXWPIE9RWYIPTDHRFUNHZULIDHKZGHPMKIYFMBQALENPZBGXQKVAZPWQDHGPYQAMQLSDBOTYHAXFXMNHABVUNUJDJ9IPNZSIFWUPAMJEADYGRJTYNQTLNDXEXZFTFHOW9CWQ99MZ9WUXBWTGORUWFOBYLAWD9UBDCXPTBFPUWDQDTUQMXPNPEXARZQVYTNCTLBWN9DWTBMNFMIGRZVPOUCHOEZSMZRUYYAZBL9KOCKNPKEQHPOLOOURWZ9VKXAQVTIDRT9ZNOFPG9YERTSIIJGRFNIFUJJQ9IDWOSTQEXUPWOFRGJNCFYYQMVYUJSLVCKSEAI9UHILAPEJSMDB9YIBPRUGGKOVQMRINXHBHRMAEI9UTMDCAGWIGHXCECLB9UTPGJUB9IJVJBHWBECQXUSEVBTKYBXMB9IBJFV9GNINACFBUGNE9GSVGJJS9BGPFOSGSSMEOLXISUMQNQPXYVNN9P9TG9OZQIZWD9N9JUFQOAAPDJUKDCDXUCQCRAGSNAMLCSFOBMIRJFINXNGTGHXSRGFQCI9JFWNBCM9WDEWDPDGMNXMNKLITPRVXYHHCMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB999999999999999999999999999999999999999999999999999999NYBKIVD99B99999999C99999999GZTLUWOGA9QLYBHUHB9GVUABQHPIJRWUIUOXFIBGYEJWUA9QUZVAKCFLDVUUZEFIDZIUOWUHSFOQIWJFD999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input, Part 1 of 2 self.assertEqual( response['trytes'][2], - TryteString(b'FRPHPZRQUPWTFQMAPXTNOWFIUPGARU9DKHZWAJVAVBYONCVLMLU9LZOOIZNZDJRWB9HPSXUVEB9VVMLTATOHTODTLYG9GNMHHAFFIEQX9YN9KXURYYNV9BGOXNPXGFVLSOPAMFLKVVOLNRGNUQENIZVNJBBNIHSFOBUOVJDEQRATJLX9TTZWCMRQBJETDZCKYEBQXOSESYFGAAAJVFDGVRIRNVGSQROY9UNTORVGREMHZLDHBXDIWPKCEVEFETRILNWE9Z9WPIOLYHWAEROAZX9WXDMSRIZWXAHFWRAHGKCFAZFBHQTCLCVLS9OHVBCNPXXCZHWYJNEZHNEUZ9X9APMBWQZ9GYBZPIYAGXGKN9D9CMTTHGHCZR9CPQPQYPV9PGWAOKOXSZSRIACP9OAACJSKBLFZBSWTEKTGDL9NGGFDCMB9LGGY9AOUNQLAUSREFIZQGUZAPTHWCTJPILUFEOPDFNREQOXLFKCHTBLKZGEDWPLJPKRFYVQFGQMFRSUHKMNXTWFMFRHRLTSIMVYQCDH9JCNWRHPYRMGARJSQDEMGCSQAWDZI9D9OGBJZEKSEMUUSHTCAUSAORPOBCXJ9LNKNPKJGREVHTZUEFNCGFHGMWLZFCMDTFXCYYFUHFPUFUPNWDKOXFIUCQIB9GYCQYMUKBLY9ZRPUCGU9DQOFHYIEMZNYDESWSLMEWPPQICQUVYWJVKDKDAPOOUMBKSVCVZRECGMBNLPAKEDXVFKBAOPKFOXIFBUNOICBRGMYWTFSFRYCDOKZGZDGWXSREFADMP9HUHJUZWVIFYZFOJKEMZ9DJINBQTVDLDVOSYDVZIPKGQXEBUCMNTVMB9HXWDNPANGOQAVXJAECUFYLIF9VAHUELULAJSYHEIGY9XYPSHIL9PGWF9ZZEDNJFOBHENKVLSFBDTY9YFFSOIQBP9LDOINEWGOABLN9TRFWH9AWXEAKAQDZGBFBHGOAUUSIIMWQ9LQTINFIHIYAVRSYRBJQGDAJKHEOLPCP9VRYDKQJGKFSCVHVHUGITCMHIIOTEQBCO9UQRPSTXOQRAZVVTZNUSJKEYRYYVUIVQR9KFQUVAOZPEHJMANKIEBW9PZOGGCREWHERBLIBK9NZRZUEIE9XBSCJMYWKFLQIEHBRUQHYZYCGJWQIMODPIPHFELJCWRCIIKYEQNRSYCUGWXMJSOFUEBCKPXIOCXP9OTZOIDOSWPDTIIOYGUNUYBL9JJI9GPTIP9FEZIGEBZCZSSVGAYDKDAMPNBCXVBZJJSJ9JGDFMDPMONUGAOFLS9GUREOWVZIX9BGRLZ99HFCUWSZQSRRNAMWXSTK9WUUSJNQSBXPUASIKAXQFLUUSOSRAHUKN9WBOUMCYSDZELDMICVAFNTVPTHCYHVORHNUPPLEJXBMZCCXTWEWSIIHNJAFYPLTLVLGKBJUZGOVIMKJRLLLSJXSUXZCBYZD9BYUFUCXAJCOVTU9AKOQIGUTPUKCJGLHWASEWFLEQ9LBNZGHSQRADCMOHDEFCTZXEMSEGTLAQHRRNZOZDGSYVQDRLQUQ9MFYMWGZSLSYZOXSJXBFEUVTZU9OXQSJKIQPMCBVMHFISFCFVPPQRIDT9ZAFHZGBXJUVUVTNWYAKGDPHRUOARINT9CYAQEHIPXYXJVMYWXZKKHPLTD9LLVLTCMAPSGVV9VQ9WPOOPZYLXNYHCZIUPVFCGAPGSAVXZRMWAUFXEGD9VRODALCTZPXABVSRYADTMMCOLHWKAI9JAPKOTYXEQHRXGRPMDVFPQFPYTLJZOJYVIDNDQTGHNWVSHBHTSACYAYUZUNXWVNOAZAOUAPPKVPCKWJXANORWQGYYTSNZYPPPAQFVZYZEPG9KZUCAAMGDHCDRXDNIOLGCMP9JDOVYYZOCSZYSBT9JUDNHXCIZOMSAPVNRCHTYKUQK9PCTKHIFLNYIWELZTLJUXEEIIGIFFRRGUXARDUPXUGDCUDYE9ENRRASYDWELETZKUIAFQAIQSOGWRFGSFUSOCWASBBBEZFMYULJYOYDFNOQO9HFZXVWTWXVSTGQHGMLESYJPMH9CJCZPEKMJVUPGELRLVZTTZKAC9GHLZCNVRQ9ITLCUDGGUJGCUGNCNHLAZIANRVAKHDMMAYCTCZJYGFOQPMOT9WJWNJJYBEK9CMEKSYFWDKENYTCIPEQIWDG9VHQINPFOAMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEBVX9999999999999999999999999999999999999999999999999999NYBKIVD99A99999999C99999999XRHLMDZPZTK9DIVUOHZIVOOLNKFYRMOX9WJZVXCKRITLLRPVGZJKBEWGAZYCTPS9DDAZTOORMO9AFQLDY999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('TRVDSILRJBTGVOUIVTUHPJHGAFPTJFTXEZXRZQUZLVUEEWAQDC9BVGFSCBHKUVKHUXW9ONG9WWTOLKSMBFDGIZ9LPH9IOAUXBTGOGIGFDTNXNBNZDBXKWVHJUSBEQBTCYJRFEMVEDRYMKRFELUVHDCPRSR9U99RUDCKOZHLNZTWDYGKECDXTNWZQRTUWZAWYKEQKWOA9PZJMIXWQOJUVUPFEKPEYNOIVPFGTGVBCTYUXH9K9WECIWPKCEVEFETRILNWE9Z9WPIOLYHWAEROAZX9WXDMSRIZWXAHFWRAHGKCFAZFBHQTCLCVLS9OHVBCNPXXCZSGJGRSBVBYBKSBZNEJGZZHIECIVPPV99PVRHUBHLGHAZNJRY9LDB9SJGTXXHG99HQAOAI9JVPIYOOWHXCITIIZJCJXHJWCENGRVK9CNUQWERVSKADGOGROJAXXZDRWQTILHMSWEPOZK9FREBNMWHOIMRCYINWUQJXFATZPXU9SKHPHXOJSADTWBUNHDY9XCHXGEZSHUDLTZCAVGHCMZSCQGOI9CBZJYAIAKUQPXONNMMSMM9TZX9FDUSHXSTVHKKGMTAFOQGJFHNYPTIPSJOM9UYPGIM9RLTYRBYADWKCOUPJFAYKOLHSOTGJYI9MJJVBTCHUHCHYA9TKIEEJJWCLLKLOJHRXSDMXPQMLUAL9MRANVGOTHQFKRKYDPJZPPQHJAZIXQZMDTWCUJFPCXBDUHBRCTYLKJFNHICXPVKXRYFNGDRZJDVLVQWEYRLIMFMIMZIZHLLYQGFOPXEVLINAQHZEXWNUEWBYFWBBCTPWL9JXNECPRCXXMOTPNCSFYRRGCNGCGQK9XUWWKJICDELKHMVRHHWVOBAKTNXBYENITXWTDUNLJAAKUDGTFPWROHAORLBWFCMDKKTPCOMDZQVJSMZHKVUSRBGZGKAHZCTQTEWA9LQMPGNPEXCXJNBDXZRMV9BYCRBU9SCKXZWDKMCFLTGRIKESL9PVIV9XFUPAVEBWM9OWWNIEVJNRUOKEUAIFEZCNPXAQYWOMKZNMMHWOIG9WRCKUWAAFIVKIDIEXJ9YUWSHXZVFJKFR9IGYQLOVXRDBVQZAATAONPQKDKSP9RZBBXMONAOAZDIEJQAPXCJTNVCDAAQQGH9RGQASOBOEMLAMBRIXGTGULJJIRPHGEURVV9OHOOVBRBFXXXKWIDGNKWXVK9WPRVTONDYTIIOYGUNUYBL9JJI9GPTIP9FEZIGEBZCZSSVGAYDKDAMPNBCXVBZJJSJ9JGDFMDPMONUGAOFLS9GUREOWWKJHZBBXCE9NMIHZXVGPKFW9DIILQXNKCQYEENGFBRIQBX9LSZNZSRXWFKBJVKFCXSJALC9HR9CCZTHDDP9SJUSBVC9ZEDKMMSPHDDFRKJ9FVOLTE99SLVHDANNKVEA9TOGXFEFMVQUOLEWFWALQZ9VSLBR9JTGO9ZSQUIMGEQRIYEULTLVRPNXLAUGQZLSYVYEOWUID9ZDFFGJ9GEJFFDLPPZFMAXUREXHJNWPFGIDD9AMMHYBILHSBBXI9EQRUSEDLJARDFWJCVBZHBFMDXMV9GUXZDZEYPTXJAIREDJPKOZJECUWGUABAATUKQWTFBICCYAKGDPHRUOARINT9CYAQEHIPXYXJVMYWXZKKHPLTD9LLVLTCMAPSGVV9VQ9WPOOPZYLXNYHCZIUPVFCGA9CSIHHIHSGNPHEFMOGIZEB9NRXRBUWFZNGYWHVZ9O9VQFOCMVYFCRVLAWJND9SRMQRCIUBPCGLPBVDPOBAUDOYTDEPQKYUFFVOZ9NEUHVXKDMDQHZLJC9SLV9DFAVHGPRHTRCNPQDOGKVABABZN9VLMBFCSBLYIKCBREHWALIM9AYCBQQFRNNHUIKVJVIGTGIF9MUMSYJIZJAPOXHIFXH9PPOUOGAQWAKFGXNJDDISLFELAOKYBVILXCVP9RSKDEFYZJEKIFV9OCAFXQFJOQKIJBHNDDEPQTAEKIRGUHARHPYABGSJQWHWJN9PLYCQJZVDAXBZFHSMNQQ9SJXUBHBKPWODAN9MJRWGIWTCJMIATTBLFEXKGOJQRGTPIRXCLSGVBEHUTKUQVCFQTFTQBACNBPMHBGCJ9TLS9WKPGCAJDPBUNU9OMCKMZJVLTUKPZLD9HYOAFKBKLFEVPJGPAVNGRMDYYBARNZHRKULBMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEBVX9999999999999999999999999999999999999999999999999999NYBKIVD99A99999999C99999999GZTLUWOGA9QLYBHUHB9GVUABQHPIJRWUIUOXFIBGYEJWUA9QUZVAKCFLDVUUZEFIDZIUOWUHSFOQIWJFD999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Spend transaction, Part 1 of 1 self.assertEqual( response['trytes'][3], - TryteString(b'999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUETWO9DONTUSEINPRODUCTION99999XYYNXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOWOB9999999999999999999999999999999999999999999999999999NYBKIVD99999999999C99999999XRHLMDZPZTK9DIVUOHZIVOOLNKFYRMOX9WJZVXCKRITLLRPVGZJKBEWGAZYCTPS9DDAZTOORMO9AFQLDY999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUETWO9DONTUSEINPRODUCTION99999XYYNXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOWOB9999999999999999999999999UA9999999999999999999999999NYBKIVD99999999999C99999999GZTLUWOGA9QLYBHUHB9GVUABQHPIJRWUIUOXFIBGYEJWUA9QUZVAKCFLDVUUZEFIDZIUOWUHSFOQIWJFD999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) def test_fail_inputs_explicit_insufficient(self): @@ -1193,7 +1197,7 @@ def test_pass_message_long(self): response['trytes'][0], TryteString(b'EASGBGTGTDSGNFSGPFSGAGFA999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99B99999999B99999999WNFMWSPCSGGIFVNVMLOFYLWQXKIRFEVEHVNBSCRHJ9XLSWYSKAO9LIZSYRJAGNNLBJBZKGCVPZEWKYXAW999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), ) - + self.assertEqual( response['trytes'][1], TryteString(b'FSG9GTGHEEASG9GSGNFEATGFETGVDSGAGSGWFEATGUDTGVDSGSFSG9GSGSFSAEASGKETGDEEASGRFSGAGSGYFSGTFSG9GTGDEEASGZFSGSFSG9GTGHEEASG9GSGNFEATGFETGVDSGAGSGWFEATGUDTGVDSGSFSG9GSGSFSAEASGUETGDEEASGVFTGUDSGBGSGAGSGYFTGEESGUFTGWDSGSFSGZFEATGVDSGNFSGXFSGVFSGSFEATGUDSGYFSGAGSGPFSGNFQAEASGXFSGNFSGXFEATG9ESGSFTGUDTGVDTGEEQAEASGXFSGAGSGRFQAEASGPFSGSFTGTDSG9GSGAGTGUDTGVDTGEEEASASASAEASGZFTGDEEASGVFTGUDSGBGSGAGSGYFTGEESGUFTGWDSGSFSGZFEATGFETGVDSGVFEATGUDSGYFSGAGSGPFSGNFEASGPFEASGXFSGNFTG9ESGSFTGUDTGVDSGPFSGSFEASGAGTGUDSG9GSGAGSGPFTGDEEASGXFEASGTFSGVFSGUFSG9GSGVFEASGBGTGTDSGAGSGPFSGSFSGYFQAEASGUFSGNFTGBESGVFTGBESGNFTGHEEATG9ETGVDSGAGRATGVDSGAGSAEASGKETGDEEASGZFSGAGSGTFSGSFTGVDSGSFEASGVFTGUDSGBGSGAGSGYFTGEESGUFSGAGSGPFSGNFTGVDTGEEEASGVFSGZFQAEASGXFSGNFSGXFEASGBGTGWDSGNFSG9GTGVDSGNFSAEASGAFEASGZFSGSFSG9GTGHEEASG9GSGSFTGVDEASG9GSGVFEASGPFTGTDSGSFSGZFSGSFSG9GSGVFQAEASG9GSGVFEASGTFSGSFSGYFSGNFSG9GSGVFTGHEQAEATG9ETGVDSGAGSGOFTGDEEASGAGSGOFTGCETGHETGUDSG9GSGVFTGVDTGEETGUDTGHEEATGUDEATG9ESGSFSGYFSGAGSGPFSGSFSGXFSGAGSGZFQAEASGXFSGAGTGVDSGAGTGTDTGDESGWFEASGBGSGAGSGRFSG9GSGVFSGZFSGNFSGSFTGVDTGUDTGHEEASGVFEATGUDSGBGSGVFTGVDEASGBGSGAGSGRFEASGAGSGRFSGSFTGHESGYFSGAGSGZFEATGUDSGNFSGZFSGAGSGWFEATGUDSGPFSGAGSGOFSGAGSGRFTGDEEATGHEEASGAGSGOFSGSFTGUDSGBGSGSFTG9ESGVFSGPFSGNFTGGEQAEATGVDSGAGEATGUDTGVDSGNFSGPFSGVFTGVDEASGBGSGAGSGRFEATGUDSGAGSGZFSG9GSGSFSG9GSGVFSGSFEATGVDSGAGQAEASGXFSGNFSGXFSGVFSGZFEASGAGSGOFTGTDSGNFSGUFSGAGSGZFEATGHEEASGBGTGTDSGSFSGRFSGAGTGUDTGVDSGNFSGPFSGVFTGVDTGEEEASGSFSGZFTGWDFAEASGMFEASGOFTGDEEASGBGTGTDSGSFSGRFSGBGSGAGTG9ESGSFSGYFQAEATG9ETGVDSGAGSGOFTGDEEASGPFTGDEEASGBGTGTDSGAGTGUDTGVDSGAGEATGUDSGXFSGNFSGUFSGNFSGYFEATGUDSGBGSGNFTGUDSGVFSGOFSGAGEASGVFEASGBGSGAGTGAESGSFSGYFEASG9GSGNFEATGUDSGPFSGAGSGSFSGZFEASGBGTGWDTGVDSGVFSAEASGKEEASGBGTGTDSGAGTGVDSGVFSGPFSG9GSGAGSGZFEATGUDSGYFTGWDTG9ESGNFSGSFQAEATGHEEASGBGTGTDSGSFSGRFSGYFSGNFSGQFSGNFTGGEEASGPFSGNFSGZFEASGBGSGAGSGRFSGAGSGOFTGTDSGNFTGVDTGEEEASGAGTGTDTGWDSGTFSGVFSGSFEASGVFEASGPFTGUDTGVDSGNFTGVDTGEEEASGBGSGAGTGUDTGVDSAEASGKEEASGYFTGGESGOFSGAGSGZFEATGUDSGYFTGWDTG9ESGNFSGSFQAEATGHEEASG9GSGSFEASG9GSGNFSGBGSGYFSGSFSGPFSGNFTGVDTGEEQAEATG9ETGVDSGAGEASGPFTGDEEASGRFTGWDSGZFSGNFSGSFTGVDSGSFQAEATG9ETGVDSGAGEASGPFTGDEEASGVFSGZFSGSFSGSFTGVDSGSFTESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99A99999999B99999999WNFMWSPCSGGIFVNVMLOFYLWQXKIRFEVEHVNBSCRHJ9XLSWYSKAO9LIZSYRJAGNNLBJBZKGCVPZEWKYXAW999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), From e6ff418c2974e902d4b7365258e6bae5394cf0c9 Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sun, 29 Oct 2017 10:14:56 +1300 Subject: [PATCH 06/10] [UNSTABLE][#84] Addressed failing unit test. --- .../extended/prepare_transfer_test.py | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/test/commands/extended/prepare_transfer_test.py b/test/commands/extended/prepare_transfer_test.py index ffeed944..f6570eb8 100644 --- a/test/commands/extended/prepare_transfer_test.py +++ b/test/commands/extended/prepare_transfer_test.py @@ -403,15 +403,13 @@ class PrepareTransferCommandTestCase(TestCase): .. code-block:: javascript + // Init environment. This only has to be done once. var Bundle = require('./lib/crypto/bundle/bundle'), Converter = require('./lib/crypto/converter/converter'), IOTA = require('./lib/iota'), Signing = require('./lib/crypto/signing/signing'), - Utils = require('./lib/utils/utils'); - - // Set the seed that will be used to generate signing keys. - // Skip this step if there are no inputs. - var seed = 'SEED9GOES9HERE'; + Utils = require('./lib/utils/utils'), + iota = new IOTA(); // Specify constant timestamp value to use for transactions. var timestamp = 1482938294; @@ -427,9 +425,12 @@ class PrepareTransferCommandTestCase(TestCase): ... ]; + // Set the seed that will be used to generate signing keys. + // Skip this step if there are no inputs. + var seed = 'SEED9GOES9HERE'; + // Assemble the bundle. var bundle = new Bundle(); - var iota = new IOTA(); // Add spend transaction(s) to the bundle. // See ``lib/crypto/bundle/bundle.js:Bundle.prototype.addEntry`` @@ -806,8 +807,8 @@ def test_pass_inputs_implicit_no_change(self): 'inputs': [ Address( trytes = - b'MQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIX' - b'PQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB', + 'MQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIX' + 'PQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB', balance = 13, key_index = 4, @@ -816,8 +817,8 @@ def test_pass_inputs_implicit_no_change(self): Address( trytes = - b'TNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYR' - b'QOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQC', + 'TNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYR' + 'QOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQC', balance = 29, key_index = 5, @@ -837,16 +838,16 @@ def test_pass_inputs_implicit_no_change(self): self.command( seed = Seed( - b'TESTVALUEONE9DONTUSEINPRODUCTION99999C9V' - b'C9RHFCQAIGSFICL9HIY9ZEUATFVHFGAEUHSECGQAK' + 'TESTVALUEONE9DONTUSEINPRODUCTION99999C9V' + 'C9RHFCQAIGSFICL9HIY9ZEUATFVHFGAEUHSECGQAK' ), transfers = [ ProposedTransaction( address = Address( - b'TESTVALUETWO9DONTUSEINPRODUCTION99999XYY' - b'NXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOW' + 'TESTVALUETWO9DONTUSEINPRODUCTION99999XYY' + 'NXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOW' ), value = 42, @@ -862,31 +863,31 @@ def test_pass_inputs_implicit_no_change(self): # Input #2, Part 2 of 2 self.assertEqual( response['trytes'][0], - TryteString(b'PNOHSCLHTDHBNES9REFELWTCKSFPFDPQOEEUKYBXFMRSHAAXBWUXMD9QNSQUWZMOBGDDAVIIHWGBLWIKCLTPZDVYRHYZWWJUKNWOLYDWRTRBOVMXMFJCBEJVMSPBQJQISISHSRNKEZXSOZHZISSMLCMCOBYN9DWGV9Z9GO9QEHNGIASTVPGWPBYQORFASXYDOTMJZVEJHZZRJSUDDTAFJDQFCZKFKJWEPQARTHCWKDWKITI9ZDCRNUWJQBDZZMRYNBDQPHJOCTQKMSFFCXGM9NGNGCBTUEEPAVOXDKHQNHSSUNA9CLTFAUIHSYPIESEVC9YWAWEBKNVAKGKZWWGRWYYPPOLTSOGTKEPCQQ9PLDDAMKGRPOHHHDYCLOJVBWWDTSLYZHKLOZBKHPCOUFPIBZQ9MOHHKMSRTXGXHERZREPSSAASILWCFDUFPXOKGTDSHWRBZSQSNCYFJZJTB9DGDJYISY9EZPLHJRMIQARDR9SIEMDYSBJXMWBGGRANNSAI9A9HYRPG9JEFFTIFSMJZHQWXXTABXPQXYOLTEFDAPZFMLTGGXCVPL9ZNBNNWVLMUHAXAWJNNVBPTXWNTFNQAYDBVCQSXJTPXABKG9PYIJEZRKSYBXTHGUSWORXZNKZNHIJW9KEPWANBKNNKOUKGLISUUTQRGMGHOQQDUUUWHFJQOFXXN9MOAOLSLOXLKPAQ9CRNSTKVRUMNLFPVIULPYXKOLDLARYUKLPMIEQYWSJYTYRMBHRHSPQJHJALMWUHLPIGQLQSXWDPVNIGFUOEMJJ9GIUVGNB9IWKIPBERFTPZOZVDJMBCKFTWLTQYDP9YHXAOU9DEEMDU9WBHPSRKFARYYCQBEKKQQFFTRUKJO9SECIZRQMMDOJZVPWSWWANMYVGHDCCGSKKGEGCKN9MYFG9ASYM9PEFX9DUJUYVTITKVMBKXWFTWUNVTFEDYSSTMWVGCYZIOCRKVRDGBPOVIDPAGIGZJYNI9TSAJCOSGQYQOTIXMBQXDGJTDJCIGKNLTZNEWEELSAXWYEBYCZILJWPKCGFHXTCDRANRRRUJWRIKTHQJNSDLZJTSDPHU9UMRPCHKJBHTYSNGIARREPPIMULJXFIATTWPQAAYSDSBTGYATXNDDIBMQEIBIUK9YAUPNBMKMZSRHK9UGN9YWOVMTFCSZWOMWHUHPYUMWJUNDMMVOAQUBQDLJLMCXFQEGBSZABKVTNFAJTLGVJ9VHAQGD9MSDYLOMCODQJIEBZARCRFVHFIGFFZRZPBFVX9OMHAAIXFKXWC99RINEESNHPYSFWESSKP9AQHJHWUPWYOOYVKFUNKXPXSKTHNWNULCRUMIHBJNAIQNGDLQSXNWRILYVJMYSELRBTLDYELCZVSVTDNVOHFXLPN9NDPSKA9YHVFRGPAFAKNOXBGWNRMYQCFCSMIBHUKKTNQBDDRQXZLWBLHRYTWSMJUJWSPQZPSBQTAZBVOIVIRXKJPSXNRB9ILEUAMGJKDGOEGVGOKFDKWWBRF9BYDQUYVEHFTNJQDAMEVFHQLSU9XTGFPOGGOYWTZONFSZWODUOMKA9AXWWIZL9GMNIXHWNJFHNONJUJGMFUGPAAMHZLXBOJFLJFHGNNWEU9DS9VKVBNVIUDXXGDQFQSNLMGWAMPETROFUFVCDMCARZAJICIXAVAM9YZAFSILIPOEOGHZ9TJQTKRLGTQNWFDAEDHZIOAMRHNUE9ANKIYKEKWBYZWFVUMKFTWBRACWZUWZSGWGWTAPXIILCFMLLLGOLHVVUIGRPO9CRDXECHIZYAJXXECRBMLNCYSFOH9PNJ9UXOWBGCYIRIAOI9VVAIYOLHTLBYEKOYMOCSVBFCHHCTGIBOUDCXXXKGBTWVBCAVOUQVOZCUSKORPYWBXCVYYBVFWSZACWFLRUWZORZULS9RNOBKHRQTR9IYTKFVXRWSWERUECAHVTAKTTSN9VNZOLGJJGAHPIJZQBITVDSXNXZTRMIDLH9XFIOEYUVJWIKLLEAIYBOFFUPCBEMMXBDGTZDICOBWWQ9EBAMLPQNHNHKDBZHACQW9GDQQQPSAWIAYLWWOYDTDRXKCNIWFXZRAXNSGDUSDTWTEFANWWTSAJQIVJQZGPXHUP99LYTNIESJDUZGHEELFJGSBLMEKJBRABTBZASNKLSAUB9GHHIHMJZSGJHXKWMKIJOQVBTNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYRQOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQC999999999999999999999999999999999999999999999999999999NYBKIVD99D99999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('RQOQNTDTZWGNBTVNHUYXYELHLRDTUSHIFZBAJDYYGKPUTHMBFMZPWHYULBANOYXDHVTRKLGXKUOZAWFZWJDFVUZKONYTRYSAGTWGDBIAHHMUEEGIPSKBCJPDBSMHAWWZZU9IFKCKJMMTCGGDHPUCBBRDKTQOTQGRDXEDQAYI9WNCNIVMBSAQVCVLJILCKHOUYPJXKNVXDHXPECIPVQQIDWBGRREGYYVROBJELIWPUWSOHSAUKSYSPQMNPRBMKKUQUWGNAWAOEDDVNRJBUSRKBJKWZLGAVDASMZ9GMKKLMIKFWAIAHAW9GIRAWZFYFEOIJ9TBNAVEUSTNUNABHJ9L9GSZTBHTGTRZSIWFVGMXQS9VDTF9ZUVNLDI9MOEVRRBDBAKATS9ACTIABCDWUFNRXZQ9MOHHKMSRTXGXHERZREPSSAASILWCFDUFPXOKGTDSHWRBZSQSNCYFJZJTB9DGDJYISY9EZPLHJRMIQAQJYYRZVHKWCGQLWFDYVZKCDAIBWYQQSUKACFRBALBKMBTBG9PPZEBU9TVRU9RMBHXCNOS9QLASMCDEFWCUBMHS9LHXEYANCHLEFNVGJJKKUITNEYVLPYQIYQHAIIGSTSAURJOAL9SVATHGOVP9CQXMGCYLSYFUQDOWY9ZWJADWVQGPZZISPAWHTMNPVKKPTCSODG9WECGVUANJXZRDYPMPVCLRF9WVGWKKQQWPAKCZQVK9KHBGXJRKGD9IHKRNJQVKSXXQMVPLGVSEWPEXNLBHGOQJUWDOIEXDGIZLFIZWXSIAWWDUOBLSDGTSFLIKGBBGJWTDOMSQWNRSYOWPBJTAJDLRPCRMKNRYEATYBMAZIN9WNMRIHLXGGVIEFZQGAGUSUNQKFAFUI9FR9AIKNBCGGFFECROHFURFC9GFMAUXMPJFWQVRXPLYF99OILFIQIJYSH9HGAZPCJIFHGTZIVGENZHBCMNHOYNAESF9FNMZWLLLCCRMUUFOZVCXLN9OQSODU9QOZKBOVBLBIVZXPFOEZEEXAUBWRWPWRNRYVIKQKBBVOHI9OH9FCQAVQPVVMWFVKZKOCUUSQRZOESNVQR9ULQGQBJEKYEZLXHHIGIAINTHUAXOYJS9NFTZAQIIFPXYMGAFHKYQHADRPQNBWGQXMNSIARLUODCINRFH9CMDIQYAKNJKDSBHGBQJQVA9VHGIHFFSWAIQEHKRGITSLCDBTCHDSEAJSVGGGBCRYHOMFEYEDLDRQVQBBRFLFM9UBOYTIMBYTWTF9VUKUJDRWKJMNFPKKVHRRSJFOFMWJ9QG9SIXCFHNYFTAGQKRUIHVXJ9USSDBJGWLGDBBPRXCOAQPWSFLZXMTCWLFNPEJQFH99YPMFOZDHJYWAJOBECPWONQCPPFNLCAGNJRI9XPK9O9NPWM9WRJKQCDLVWP9HZNGNCJZVKTEUOXEDRVSFBWEREFDKPCU9QATTUXXUHWJFNJSUIHMND9EALDXYCYWEUPJITOTKACDUYCHS9GVTJGFTCLZPIARZAWNGPUWMQRDEIXDOIFUDEWXFVVGVDRKTQIQXLEVULRUJEJGTCDLAOLEFNLDOGLWHYUKGBHSSRURELGFYKTVQUVUXJLMY9ICDMPHG9INCBNABNXEEWOMWQ9J9NQSIASZJLKMXDIXMVFPCFKLM9YEMZOGZVTIF9WHYTYKTRKDXAUIIGJXKPQ9DPVEACFPLZHGVIUVJWML9IEGJXIZNSUETRYORJ9RTEAOZXMTQHAGVFZKHEQCSBZFDD9XAME9ENSFTJZDHRVSQW9XECHIZYAJXXECRBMLNCYSFOH9PNJ9UXOWBGCYIRIAOI9VVAIYOLHTLBYEKOYMOCSVBFCHHCTGIBOUDCXXOCUCRMKTANWHIIXW9LSBYWJAQOPMPMATNGUHWNCBNL9IYJEAUMWSXAKBTIPWWSGXZZCOBRIXZFZMHLGNWAHVTAKTTSN9VNZOLGJJGAHPIJZQBITVDSXNXZTRMIDLH9XFIOEYUVJWIKLLEAIYBOFFUPCBEMMXBDGTZDGFJCBGZSD9CRIGSQSJQOPFIBWSGDSVCTQUHWQWRDLMEQWNIMCSQA9QGQIRSTBXHFVLAOHUTUZBUIWHFTZEDEZGVDKIBUZ9CDJHKWLMIMQZSVIOKCLSURPXHROHGGWKF9IRA9GCOJUDKXYPNBRRDQTNLVKUGCAZHLKZTNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYRQOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQC999999999999999999999999999999999999999999999999999999NYBKIVD99D99999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input #2, Part 1 of 2 self.assertEqual( response['trytes'][1], - TryteString(b'MJ9UDTLPAAOHPYNXBLEOLLHTXEBTGAKYONGZUFJAFEDKZYUBAEDUQZMAMSYKPPWCGBK99QAJVXCDXYKJXTQFTG9BSWEKXKWY9ADZVHAMQQAUCEOIQPRULPHGCINEAI9ORHTTCEHU9GPIFDYMOZORWNZYUZNEFGF9WYRBKLSAZTXIFKODGYAMKFJODJRWMLXUFQ9WFJKLWT9TAVINDIALUWQIZISLXDOVKGZPIYNRAQYWRZW9AFCEMTOBSHJEEYN9GZ9ZUULYDHYNEQSSETKYZVQYRIPNRWGRBCFLHRUAKJODCEMYRFBP9EVFKXL9ZTERUVFCXNTYFJBHN9GUGYDTIXXTKTEWSDM9POVBSQSKGBPSPTLAZQ9SENKYBEHGHPXVLI9UJULIDA9KXVRRQBKKAQM9QVZ9GEOUMSMMMZSBQVAYWUJPUKCLDZBHDQIGUK9DOADAVEO9GQTVHLMPXSJQZHEYDCCDHTWKPUEJBAIQ9ZDYLLYTEIBCFZKLZCNYEZULRNSUGPTXZBEWGFVYRBZLSTRGCYSTML9ZGVNXJAQTDASQENWWGBAPNCZHQOQWDXWSUCYDDIDIXRUJXCETUDIDBZJZTNJG9GUDYYBLHRPSZORPOITTJVAGNTPKFURHWMGU9E9DSQQCVAEYEYDPZWBUVPXAFGLKZZWRINYOVSAZCINPQSUKCFDGDSRCCLKLGGOQIJQWGCKTLRBQOQMGSOVYGBVACOOUFINHRQGQBBDWWMVJTEZJEBB9LD9ZNUEYBFRKUZEFT9WRTZRAXQPHHCNGBHRERZDCBCPP9JQ9MH9RBZPGSL9HJBDHPL9WHKCRUVHFWHJSJFWAWEXCTHU9OYKNPBUMSIMONQRHWDIQXETDHT9QGSNPXGTDNUCCFHCJONIDIJADUINVPAVDZQJNOQJQPBMOSCHMPEGHGPMHMRUUWURB9ZPGENHERLURYWLTVVR9GXYGCDCNZLVWVRPKVRXNSXBGDLBBKVGUAJUGGNUYVJSWHKVYT9LYFLVMNBUJDBLVXGDDIJAQKPGUHRTPWNOTLUKDMXGP9BZFKGGJRRNOUNBWZAUZSMMVGZOKGDJEECERVCMJKXHNLFTI9XCZQXN9WGGQMKXXQSIDSXT99KGAOOTGLDJHCPQJPLJDCZQAGRXYADFXCFBCXQGEVEOCKEICIVKVOMKGBXPZHQ9SXDXBFZZI9THLXOPTTGTPSQJTBBC9VYZUXWNENXQRVGKDY9JWCYNXTSAOLIDCBINWLLQDUNYAQRHAZBBROWSCMANZJZYCKZGAVQEI9CLDNKFDXWZMBMGHFEAXD9CW9WHZJ9LTZWEWKETMHHYINLADMLTQEQEVAJOVCZBHEASNWRATZNQWFIVEIXAJEBPLCRYA9JCO9XJPSUCKISZ9FKXVYDLRIKVIFISWWEXMHEREKXIUBFTBWWYVRKWJOPPVSYTZZRLFWAKHBYETICAKPPAJPADYVSFXSY9IVADYPWTULJOIAYWCUBBCPJBEVWIFNWDSWGVZSFSFFIIEJXIVWJDNHJKXPHTRQGWMVYOUQYUZQWNEHEXCARMOKYQSKWEJKKKLDGKJBXQKODOGJXDSACUDHVREMWBSAUAAKUYVAHTUGVSUEVLWRFYTURXKSVRMTFLEEGQUORVNPXEHTIJIGC9MPCOFKARODEORLUGHDVFXVQZYFFIXBSLWVVOICMPPFIEK9APVOCENJ9DFAQ9CQ9LUAQVSDNSYKXBCSLCGYOIVRGRGUSBTBIMSQTNQYCZ9TFARMHY9XXJMHFUVDWOYRBNBSADQTZAKRLYQFVAMSCXBTHVWPFJTVENWKHHOCURLKGCCGK9SKGFIASFHPTJDGKOIRSKNCODYCEBSSCZNZAMSOTXBCFPGLNJHEPJOP9IIIZXRHTMFEXXZUVKDXTEIUXKBFRTXZTMGSXRWBQQGKBSJWHEXVZL9EKECRQQGWG9OTMQSBBAZAMBOHNGVDBM9NSXMRDJIEOOYLISNGNIVKKQHWC9ZIPWHJUWCXVQZOMRKZ9JCHAXS9RZWC9RACAE9EKZGJHYNLWPMZYDYP9MD9YVA9RCWHMFDRVEHLQV9RORXMULAKDOJOZBOYDFNLTUEJHIPL9CQKTPFYKBUREGDWUAUMZUXMCJFQMZUZXLTGZSDTLW9DFFWGKFIOODTMMXMCQHRNWRUXCGYQGTBMR9NQDBTNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYRQOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQCYZ9999999999999999999999999999999999999999999999999999NYBKIVD99C99999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('AGW9TDZZYGMN9CAHSJCFOBFJCWGBEKETZPUJK9IXAWDXZTCVFTNJSHHEVTCQHBVPMFLPLDCSGPFFWWBDCTQFTG9BSWEKXKWY9ADZVHAMQQAUCEOIQPRULPHGCINEAI9ORHTTCEHU9GPIFDYMOZORWNZYUZNEFGF9WYDXK9CZSKLXVGBHOMBDBGFEMPQXOXBECKEXCQEEDRXNK9YAFEYWXPPURGPKSEXGIAOJDDRLFLGTUHTIHY9EMTOBSHJEEYN9GZ9ZUULYDHYNEQSSETKYZVQYRIPNRWGRBCFLHRUAKJODCEMYRFBP9EVFKXL9ZTERUVFCHH9KZQKBSWZHCGVWDQYMLXDFVDQESOHZVYEUHCROFERIOBOKEWHPWATWEYLCBMQUUVTEWGJBSHGNARCU9QM9QVZ9GEOUMSMMMZSBQVAYWUJPUKCLDZBHDQIGUK9DOADAVEO9GQTVHLMPXSJQZHEYDCCDHTWKPUEJBADZLKXTQKPWUJNZAEILVYCMQFQURKDVQJPOMTJHGUKPYTQHJGIMICF9RVAYQEJDADAHBOYXWRCMESMKZWZSBICV9VSEEGQFNNRJWPBSPZQLDYETZ9TBQGTCEIDEYBRXUYHUQCILZULX9NPUFFYNGIFJJGBYMUTBJMHYOWQEPUXMFKTLTFYEPNQVWRZQ9FFISZBUADRSZTRLQSQCGJXXPN9AUREQNXXGOZCYDVDJWVFDKMJG9CNGXUJQELTWJMRB9IEOGCKGE9RQDANXMTVMPXCEOEQNZG9YJCUC9HEC9QYZTNPPUO9IUKSNDAIAFIXPDONVZXIQJRQCBCTJXIDJGYHXXVUMYNFTGBOPRYRNQDVOXLDLDCACNLOJEOSDVZIDMOVPVKOARQUQNCKWKFHBSHBQXBUDBMZ9PUJBBWVSL9RPUDORRVIQCKADBUDIUVPZDHU9QHDHAWZCKNKVVHCRULLGJDSINCHUILZDWAACAIUVBIF9NRBSODKJGBMTWOBKJANMJLNDRN9FQNOGYQTMQNVS99LAIYNGSMIVRDGRRUJYZUEATJNGXBACDVHTKHGRQELJUPIUYLPFBRREZLFMFUOQGKJWJPSEAFJIALJCHPKZWGJAEVNPQCTGFJTNSBAOMUOXTURUCCKYZCAESRJHEMMYSADNYZKTMPFZAQRHYFMNXZYC9FAHDJPNSLWFUE9MRLUHQYBOLYYGMFJLCIECWPJIRAAZTB9YHLJNCVOUKKKBAHAVFOXSHLDMO9OAYLYCJWXINBHFLHGFBPIDIATUZAU9HCMQZFZLUROQQDTWPRUDEG9AUGBGFNUXIWGQZQAXQX9QFXQPJARKGEZRQFGQEEOUPCYVWHLBP9OCUZZSPOIWFJVXLWSMKORXPAYG9TVOCNNHDIS9CHZLZJBUQRKEA9BSWPYCEXKUGSXXVQAQSVVDWMEACSXHYFDRXLILR9Q9SK9VYJWQEJRJVWSL9KPEHGZPBQYNPQZVQPNYCOOJVCTOHOKQNFKDPEFMKDTTLJZTURRGOXEVUNEEKPNTQDPDWFANWZPBAJYMVYOUQYUZQWNEHEXCARMOKYQSKWEJKKKLDGKJBXQKODOGJXDSACUDHVREMWBSAUAAKUYVAHTUGVSUEVLWKQADVMKRNUYIBEO9BCSPSVFLWLTZBMFOFSGEKFTOAGHAVJ9YRSWFBXMMACGKKBLFPALET9ORLUPLQNQWWYW9EWRLSPTSPF9S9CAHGXEKDLVXFDTVVJDLQEOJNOZMUBJUHQXIUVD9ZFCIGCFCWUJUALQFDULVEHHOWWQXYHXXVSVCJCAXPTJBWOZRXNHBW9DRSBVEWHDDQJUPGZQVBDL9OATVSZKQQFNTHNFFPXJSQZXJJJZDEQZNZAMSOTXBCFPGLNJHEPJOP9IIIZXRHTMFEXXZUVKDXTEIUXKBFRTXZTMGSXRWBQQGKBSJWHEXVZL9EKECPAFTVMVVGKE9TGGTE9YLGGYMK9PKBERBILUCPIQZTKCXSATLRKBGGDSWORLQUKSMQLDLUMMML9VCMZUJZJVGHGAXDELKIAZYNAHPCYSPUYNNBZ9MBUQGRKBEKIHNIOGIWQLIS9NBBWDPWGABMIGADUMG9WKFZHQIPYKDMJTTYQRJWYXSBAPDJSKEIUJNOMNDNGUHEFBSDSNNKABHEJBKBRIRLKSQBQIRPCQJPRXWDDBIXANTCLWTNNTKUYYZVIOPMQHXIYKKZVN9PELGAKAUUGKCBYRQOZJT9NLVDEVFQXIZKXIF9MOYTJTDTOQJYQLQKXQCYZ9999999999999999999999999999999999999999999999999999NYBKIVD99C99999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input #1, Part 2 of 2 self.assertEqual( response['trytes'][2], - TryteString(b'EOWARUTCGMPDDIK9HLSBJUNJNKFQ9W9EHNWAWCVBOWZNPDPI9MDARRBMMCQTVNYKQYKO99FJY9ULJLRYZQRC9XTVDAFGNRNJHXBWCUQEUNJKTCXKIPHQWRV9KAGREYBHXIUFNS9DIQWJEN9FEAXBOZDNHSCLOSGKTDFLVVEDDRSXKSFOAIIDHDVEW9YWNQZQUHGCBYDZUZGINOLCFKHAPPSYMEIGRHZUVP9BLFFGHYWIOLYF9DXXYUKVSYMLDGMLKDEVERGZ9AWDXSOTVCWQVES9H9YE9LJJJQJCPUVFNCJCVHPAVMBVPODVWGZQJ9ZQWITDKH9DIRSGNGN9ZYJPVZOJAOXOPOQSZCSDILTOAUUMLGOIYG9MYSYBQUVDDDBCFTDWUMPXUDHZBDBAHTUXZWINNALMYDJHGJLCFCJ9KZZNTFPZGSLXGEVEGOWSOUAFBJAY9IOEVNLHFTIWEFURULVEFSDURVWBMNUTNAQAX9NYD9BSA9XKUOEKSSVI9HSAIXLG9PCZKWKSLGOBRKGHSPCTREBYTKUBUWRCCHTDQPFMQBIKTAVXVOCTGUEZCEHGXOGSBYYZFQ9WTBUKSJEUIXJVCWBWQILYUAZ9LBXRRQCQWGMEMU9YNU9RYUBEJQYDZOOFXBLWBRLIGVP9RZKMLPDCMKBEHY9CUBUDVPFHLOFPFOEHUCFFFKQC9NXTNDHGSVNVONLXUZANIAOUWDOUY9LFXGFFBFYPECHONGIXDXXRFAXZIJIXZRTXOOGLZKUVNPDSBSQPWZIOWQQQDQHZJRRXMPYVYHFAPYLESHJXJDGYHOGZUHDWVIXGJEIMQAQACAGJXDESBXPMZM9SOMNEWFVLWJHHBPQRCXVXDGQIAPNTPWNZEXTBZJGSKRXKJPMWPUSZYVUGRJHFHQBLLMGXZWWOQME9PUUEAQNZCZNNGN9LDHAQMDXTSRV9LDMGRXBLUIDEJPIDT9TZDHWYQZQWCUVKTUZGNZ9RHIBWMQNFRQL9BDBRACLIVCWLNZQNEADVMHAYFLMTGZSYRIZDWIWMVGU9TBFEC9XIHFK9GMGVGYBADQBGMQB9IWKASSSLC9OWZG9AZEYRPMHQGRCFKUOPEIOZXUHTUDDLIRHENPXFWOQMFBAKZHKOL9RZLCEKCFTOHWWTBVFOWDKUDWSSMDZEKPEBQUIE9TUSDAMHIRKRGHOGRURYOCTYSDRLIZIADWXZRPCBVHOFZCJLZTQZLPCDRNGBREQTKTPMWVDDNLKYPVCUGPBAQBYCQGDVOKBGMX9WHKNEDIJXEPIKPIQWZVO9UVYVG9QB9KPNHIDAMHTVVCHVKAJREZCZETYPQFKRCNDYGGLDYSMHBTUXGNFPHZVQOQQUBTADRQKZCVCVIABGGNPDGBVWC9FBPHVVUFBPPBBCLXLKYBFH9LH9AVKBIFKSPWZYKQPRGNKMAHQCTYFQWAKIY9KYSCFGZTTAOGWPMKDMQGQSVANQL9YLOQCCIATBEEOTELNTXVJTLOTZUPYJQEAQMDCCSU9ORYZBQJULDQVXPMDNBWFXFPEBIE9MFFPIIWKXDVCPKDGBJFWTICOBRUNKJEFBKXAAFWXYPSCVFRLUVKDSBSUYCIV9UPLJTFYWGFJ9ZFYNOM9YXMHOYWFDDPIJOMTD9KGA9XCXGQHLZVBEKEUWLSC9BFSUTFJGTUHNMKOJ9NQC9UXJXFQSBDOUZRTMPOMURVXUAYGFLGHNKRDDTCASPTBUIDLUHH9HBQHPBRIUICIGNYMGPVNUPIQZOVFHLTAENGAYPWLCQE9DQPLMNPCJUFBPKYGHPHBRTALLMFUHIATKTSQBNTHGRCZILLNCTSZKJHQNVYZ9LOVYYSEXJDBHBBXEKCJEUDDDTUBLWCWWRRGHSZFMJIIEMVABUFNTNLWMVYG9UUVONDX9AMEO9WEPWAJDLRISKO9YCBIYQGGDMJDFDERJNNIKRROFSVLEBYFRJJOOSEWWBYMTIQXBQBYMSFAFBXPMVZAKU9LOGBEHKMOZDMSYXRVEZHPPZPKWCTEEAPFLHOGHJPCFQFLSFHTKRMZEKNEYHQZHLG9E9EUHKKUYSAQTOZWVPQSGFPRAZT9VSYKWRBEEHWPDJUKDCDXUCQCRAGSNAMLCSFOBMIRJFINXNGTGHXSRGFQCI9JFWNBCM9WDEWDPDGMNXMNKLITPRVXYHHCMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB999999999999999999999999999999999999999999999999999999NYBKIVD99B99999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('KVTQSEYVEVEGDETHHKGCXAATAPNN9GDDCUFVOGJXFFC9HAGIMRLGXZMDUCNTJBMGDZWSGPPLZSUOKONNZKRMJQJHRNHPUX9YEIIPOKZLBZUZLDKPMVNVRLUTQFKQIRZLEBIIGBROFFMQVCPQQMGNC9RTZOURPDUNRXVDJUCLZFBEWJDVGCAEDFT9GQSRAAITNLENXSQDILMILGXYHEVCBWCWTHDAMST9IAXCLHDKKMJDWLZDGKD9SNZS9VIDJIFJNHNMHZCBINTWMWFTUPPCUAKEHAXLANHIBDSLPFLTRQSDWONBI9NYJFZVFCTRXOUMWOWDEIJBDBHIORZUVJXIIAXDWPNHXIBKPXFXMXRGWGXRQQG9NXHM9DDYUIOZMEHXTTIZQHNQGQVBKUMSCNABDWINNALMYDJHGJLCFCJ9KZZNTFPZGSLXGEVEGOWSOUAFBJAY9IOEVNLHFTIWEFURULVEFSDURVWBMNUTNAVCEOXRKBZTSCZN9IODZATCQUSPOWMWNBBNWXMA9HVAMYKYAQYHFFKFLBIWYDNDCTXPYVBNKREIGKGMTDCQKIHMAPQGWUMICACHQJODIQPVVWCPUBJC9NWAXSAXUHPMNJEJF9MQJCAJ9LMPCT9XLPLOLCDSAJYPZYUCMURTVZIOZSRMLKANEEYSJAGVVPBWTN9RDUJWEGBJSN9RDPWQDSKDXFXXIPUQATFRAFTZFUVKOKEISVCYZM9LRSLJ9BYNPLUMAQNUHXHPDLHQCUHJUNKRFSUSVWLEPCRIZHWKXVJCAPPGVMRXXXEPNELUREVCCNMEGA9LHXJZRCRWJIRYJPDRYOBG9YQUVIYJPAFQTMIKM9Y9MASZA9DALXZDXFUFJBMBPTNNENFPVGUNLXSNHTXSUVAMYEVRAHPLJDIMJCDUNN9QCJKHDXFSW9CEEAGXOUJLELTFGOQNCSSANOCDNMBMRDKNXAWLXWSTFKPYRRSBCWQJHWGPBRDQNKGHWIIJGZTANNFBUCGHJKCWPLFTVLYWBWTCASCSNHQKSOLKRJILIAVLBTYVWFMA9VWCLNQAMGUGXSLUJFDXZNMXZXNSTTQOZ9RTXF9QOUSFVTZOTRNZ9SUHXFAVITYCNYJGGOKYTWZQCFOQRCRGRSQVMZZNOIOJAELHG9JYUDLUTSOQLWNGIJTHGVELCK9VFZSFOTYHJWAFMMKDGGUSNSUCRKGYCRUFSPWEJLMLAHDNTCGVIEBSO9SC9NDIZYIMBRXCURBHYMAEB9JMAPWFUZRRCGRTLZRXJVLEPZ9QNKMERNSMFKAXPLZQIJXAAWY9SYMFXXOKGIGPF9UVTXEMSZZOINHKANZOVGSEZPGUSYKLAUJKZKNVDZJMS9CZRXCVGFUO9UMYVJZCUIKIXJTUFCRW9E9CJEPWLENSXWVMFA9PJZTLFFXYWRCWTDPICHS9IINY9ZOPNJWZ99IWJJQFRXTCEQAMBFQNXCFXNAPAGDMUJMKVDHGHSZZFQRUINOYWNXTT9FGWYAXWVXJ9YGZYEIKG9MWN99CBNOQWZVYYPZ9NPCYQQKVTWVKUBSTOYWRMFDUPDB9XGAOTEUPAFDVYAEIQHBPBHF9CXEDSOOF9DTGBJOAWHJYKNJ9CWRCATOWWAPTXQQTITZUQ9LXCFDQPCJHFVDPIVQHPJKSHRDOIOQBKECCNOOHDUYKYFYWUBJJGWQMIIMFNZZAOGXPSVZSZQPUPBVUTJNGQLRM9N9AYJJHBBINQJFNDATEPMKYDQNPKPJ9NXIUCXSOSQOC9M9SSLTBHGWLCQE9DQPLMNPCJUFBPKYGHPHBRTALLMFUHIATKTSQBNTHGRCZILLNCTSZKJHQNVYZ9LOVYYSEXJDBHBBXHOFKVWHVOKUAYPGNGRGARFGEINTOJVMDSJKENFJADXBOZMKEJGAMSQMMETTCTDWNQWKYIGVYQVFMC99N9MJDFDERJNNIKRROFSVLEBYFRJJOOSEWWBYMTIQXBQBYMSFAFBXPMVZAKU9LOGBEHKMOZDMSYXRVEZHPPZZCBNLPDUDVEPPYTCLKF9OE9YROSAJMJHNCWVYADGEYXIBPLDZBQMIESEYBJKONUUWGDDCD9SBPHTMJFBXPS9SOROVFBXDGFJFYWARMPRRMRYN9VDRKBDKHSZCPRDYBZOXCUWRZXXAYRHELLWMDTMV9VHVICXSRJVOCMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEB999999999999999999999999999999999999999999999999999999NYBKIVD99B99999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input #1, Part 1 of 2 self.assertEqual( response['trytes'][3], - TryteString(b'UZW99YV9GMPLXSPRTMJFFGOVNMUNUIPSIJTLBUZT9YCAXBKRWYDVKOMTKHW9STWCMHUBUQHZUGNFMALYCPTSOEEYANVTHWJRFHRYJ9D9JIBDVQLTQFDBYLXBJWAEJPPRHOXSZP9KWKNLQCUGMOKMHJQYODRVVYOZ9DEGJAFBQNIXYXJ9PFGAMZXOBZDQTKQGSTLSXEJBJ9IXICGUFPONWTRIPZXVUAJQIRXYMKONHSEFMCJML9DGQRGLMGLGKEHWTQZWOMIZIF9FWUUMVVWS9CWUMWCHZIRKTODTRLEJTRNA9CCRFJNCVCDCQID9UDQJHGN9YIFJZEFEDVMT9PUYWCABIHJMPNQTSQQEJBKRVQYLGHPYRCOLWKCTKMPFCMOMC9PABJNHFPNJVCYNPAIMCFDVHWOEJIVJOIKPMTCAQZZEFEL9YSOSRWWGBQEPFJNTLVWOXIEPZHHCIQF9DZOQGUKYOJSIFHARSBORDAJRVCTTIEBUD9ISDDLULQQQPHZJTNXOBSDGDWRGCBURMWUP9XQTYIYRLCGWGIWWDO9SQLQIUZOGXQQOZ9CZZINSZAYSLXJHVRQT9DGTLTIERBHIEYFGCHLFUEZJHUUKCZKRCOWSTYIGNFB9TZACBURMAGZQIPEKPHUZ9HIYGWZKOEECUJPKYFXMW9TDITMEOBNNQVJHECBQPXXAETVTHCYCKJGEYVSMWRAXBREMDKCHHVPAED9DYFFSRP9WOFAARRNLONJDNYLCBDKPUM9HYKRURNIOFJBIDJBKYNRVZKTAITEWNMZLA9XMJHIPNUJDWQ9ZRDBJXNZCXADAFREDEDG9EVDYWVFDOEZNFJKJVEXGVSUSOHKUFIGKRZWCVDAWBHVIAEGRENQJSPZMSJXK9VDSLNPWFEVZPFD9JRSV9YOOTJHYKV9ZWKPGBEAPATMINAESECJXMULWYQUENYNTAEYITFUZOTFXVCOWTPMCDKWBYOPWHJMUFRJYQNJLIXIBQHYKZTVGFRDMENVRUAGPBXHJEDVXPEEYWHALUAIFUCPTIFBHMYXSSYSPWOHRXDIKGLRHRHKXIOPBQFQBHQTKGPMYL9THJFRGIFBY9WKIMQSUHKUKFQRDHFUBGPWZNE9SWREBKNIOCAZXFSKEHYBZPWOLDTPVUNVUTURRERGDVEUOCE9NDEHIZWRQCSNUEWYMOAHJGEARXYYLGJGQGASBVJAYZCCUTXIFIHQUMKI9MPRXRZAFUYYSPZQWIDLHJ9NGU9WYNLNRWYKNGEZIKGSZEXL9BVIUNFUWMDLONJTFIIXWUETTMSPBUGHYTHJTJCCXQXLGMHUDJEBVQPCHKYTXJQBBIGRGRWPYCNCYRIOMNSCITUCWHIVOMKCXIW9UZAXRQLKUEH9PZBVPHB9VETTZWFIDEWCHJIHW9QVZHPVUSAEBTLUENJAMSYSDVNPVEDXJBGYYBQLQDXLUEAFJMDYEGDKRTUV9DCJNFZZSFMQX9DCZ9LQLVDOCNFDSNGR9PP9CNHAIAPFGVUUMSMOBUQJWDBAFJXHLZFZOCSK9OQIJYFBRVREMNRJDDHOPPITCXZYJYEAARBNUZYBVETPPZHMFCOIQLJRQYDZYBZCSHERQOZDKOSZWP9QHWMRSYESTDRPGW9HZKKBGHHPBHAUYXLE99OMBYHUFJUYGGWVUEPUXJVEVAEBFJRRFPTOIBPDXSIVJWPZYQVXY9VF9GFTRNRBZEHWFSCNUPGETVYGEJJJQEVFIUFMTFHMDWBTEIWFXGERGZLLMPMKNJSI9AGNZNXWYTJTXLUJHQHAUPZZIAXKCBAECERGTBPCKQZEGSRZIZTYRULGOAXETODFXIKBEZQETMZ99LLTUMLYWA9DREHWALIM9AYCBQQFRNNHUIKVJVIGTGIF9MUMSYJIZJAPOXHIFXH9PPOUOGAQWAKFGXNJDDISLFELAOKYBHMJUYHKXNZQAYWPHPICVMMQOSNOJFDOGPOPMZITNCRT9EXZPRYGOGDIZBWXRNLCGJCNGQDXYYGOFBARMWTPNNTLJBHHPKDDBULTHKEHDTTZUETG9LWVQCRWADOQFMIF9GOCZKBZSWECWORPZUXGLO9WXIZ9QOBANDWNBPMHBGCJ9TLS9WKPGCAJDPBUNU9OMCKMZJVLTUKPZLD9HYOAFKBKLFEVPJGPAVNGRMDYYBARNZHRKULBMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEBN99999999999999999999999999999999999999999999999999999NYBKIVD99A99999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('HSXQRKCIYXEEEEYMESAEWHGVRBNNFUPVHVHYDUFFDCAPYCLGTMMSYVZPGMVMGZFNDAKUFEKKKMMLCDLCYPTSOEEYANVTHWJRFHRYJ9D9JIBDVQLTQFDBYLXBJWAEJPPRHOXSZP9KWKNLQCUGMOKMHJQYODRVVYOZ9DMMYLMVBCNZSWASLFGJJY9NZO9XAIAIOWBYDHLNIBMQJLRBPZJGJUNOKYFYD9VNESPEZNIPUABKFNIAGEWGQRGLMGLGKEHWTQZWOMIZIF9FWUUMVVWS9CWUMWCHZIRKTODTRLEJTRNA9CCRFJNCVCDCQID9UDQJHGN9ZSGJGRSBVBYBKSBZNEJGZZHIECIVPPV99PVRHUBHLGHAZNJRY9LDB9SJGTXXHG99HQAOAI9JVPIYOOWHXFDVHWOEJIVJOIKPMTCAQZZEFEL9YSOSRWWGBQEPFJNTLVWOXIEPZHHCIQF9DZOQGUKYOJSIFHARSBORDAASWFIBAYHLPUTCUPJONWNQVKIHGKUFHSYKQJCNHYBKETAGEZKMPPCOECTMFZPXPLDHMVOSSU9RMQAQNJZYOXVJLKYZJDXUO9BKZBAK9M9RL9NGNUOVZBAJKCAEEBFFGZZJHLGL9KHOQQVKJYQZJYDTCYJXBJBUZZPACRUDDGXWKVRTVNOAVMYVGPEU9IPLHWFXZEHHUMJRQSQOILKMOKTSEBKEYSFRLH9YLDGGPPLSGFCJVINBCKIMXJKWLM9HTTAIVNKGUOHGJYPPDVSYAZLIFJBKQYQLLXBQUZJMEWUPLRVUOMXBHBUJYGDEGOPWNODYSZPQGBYZKQVXFPRAJNKIMMBWJWLIZLIHPWBSJINAPLU9NYHS9ANDORELEDICPYGWQQRGCMQXSWNBIHCSXPATVHEITSOTMKPSBBACQMKLTCDNTIYBXBCGFGIIPERFKHQKOONRHFEPMRIFJBNUEQEFCVMAXHARRHZZQGYALRQHZFBUTFQRVPWWPMWFQCNFDYKFDEGLGSILJRTSVGSLURIZPERJRLSGOMESSMZDUVPBXMOCFGBUWFZBCNYOBGZWGD9HQJOOLESVVAEIWHEKZXGHBEQHAMAPCLPQQRACGTWHMDCHSDGFEOISFMWWITNNDRLJ9TVIBAWKFLQIEHBRUQHYZYCGJWQIMODPIPHFELJCWRCIIKYEQNRSYCUGWXMJSOFUEBCKPXIOCXP9OTZOIDOSWPDNUTQXEHILCONJHHJFPAJEVEBVXROKKLJCZGXMOLB9U9NLCKZ9XUVHVUMWFFPAJZYTDJ9DIXFDQYRD9LPASBDIDHRHHUPOFWUAPVTCAAPNLDPLPN9XTEMOJSBBCHWBULFNHFMMPRSDQCNP9TFMFJFUON9ORDEORLGHZA9JZTRGUTOWLO9XWMAQZXHLUPVTFRSQUDDHYQRGPBLCOHDMLFKQVJAAKWFINZKCTFOESRDVWYWUAVGVBY9RLBQIC9GNXZIRQTY9VHAOIAXXIOVIMSVVIVONDRAXXGUAKFEXLUZYXVMZXOZKHJOKUSRVBUGZXFFDIYZOCSK9OQIJYFBRVREMNRJDDHOPPITCXZYJYEAARBNUZYBVETPPZHMFCOIQLJRQYDZYBZCSHERQOZDKOSZWQJFUMPXYZWLMDZJFYBNYFSKSJUHGOVSAIIIQVDFQWLCRVKTXRAORLNWKZEQRCCTJRMRYCXUJDWFPG9U9WODMOJKYJFMFINHBQSYVGJNNTJCNGOGKIUCDKTNMGFZZLZYYXNP9HPTGPINRDBDLQOJAEOYKAKBICWYZLDSZWZGNUHVOXYLMGCOLJSCXNPMVPPRSBRVEAQDAX9CEDRXRUAJSULVKAAKRMXMMWLPTYTYZZLOUFLBRUGDREHWALIM9AYCBQQFRNNHUIKVJVIGTGIF9MUMSYJIZJAPOXHIFXH9PPOUOGAQWAKFGXNJDDISLFELAOKYBAKBDTCTZDIOCPVXGTJILYQMPOKIVPJLGPEJFQE9SBVGBDPWMPWZPCNGBOVQSJLLHPKJIKPA9AIQZVHJYYDXSSNXAUDLKEGPCGZQZRXUWXTZMBXLUYJZBEPOTCHZGSLXUDI9PGFNHOZRQLQDWFURIXMDINYQDCSCUZBIDRQOKQYTXKSDTXT9YZDQBGJLVQAM9TWRHPKPJG9OAHJNRQIHPUSDLJHSTRHSTSQURNPOKQYVTIIOY9DDMQAKZPG9RTXSDGXWZRZJWGHEJIZLZWSMHBLHFFIXPQZOFFHNRIOQNJEBWZBDTZDJCUKSQDWR9ALZVDUEBN99999999999999999999999999999999999999999999999999999NYBKIVD99A99999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Spend Transaction, Part 1 of 1 self.assertEqual( response['trytes'][4], - TryteString(b'999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUETWO9DONTUSEINPRODUCTION99999XYYNXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOWOB9999999999999999999999999999999999999999999999999999NYBKIVD99999999999D99999999YBPL9FUHMJAALACSDMDFUKKBTUPCHTXNCASWTZJZMYLFPJH9MWDXUCNGAVYJWFFQNHCABKYIQBTJWSZID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUETWO9DONTUSEINPRODUCTION99999XYYNXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOWOB9999999999999999999999999OJ9999999999999999999999999NYBKIVD99999999999D99999999WNQNUFDDEVEKCLVLUJCFRRWBHSHXQQKSCWACHBLWXPEBWWEBJWJXQQBFJ9HSSDATPLVLL9SLSRFAVRE9Z999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) def test_pass_inputs_implicit_with_change(self): From a65c6e4d6a9ebb47c909fd97b14e5c99b3a989bd Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sun, 29 Oct 2017 10:19:03 +1300 Subject: [PATCH 07/10] [UNSTABLE][#84] Address failing unit test. --- .../extended/prepare_transfer_test.py | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/commands/extended/prepare_transfer_test.py b/test/commands/extended/prepare_transfer_test.py index f6570eb8..dbd83b03 100644 --- a/test/commands/extended/prepare_transfer_test.py +++ b/test/commands/extended/prepare_transfer_test.py @@ -907,8 +907,8 @@ def test_pass_inputs_implicit_with_change(self): 'inputs': [ Address( trytes = - b'UFHYUCWLLEHDLXJWUSPODWEIFMIURCMLSUZV9BMI' - b'VEAJZBSEWOVBUBC9DZNSQUBPMPTNDD9GTVSMMQBNX', + 'UFHYUCWLLEHDLXJWUSPODWEIFMIURCMLSUZV9BMI' + 'VEAJZBSEWOVBUBC9DZNSQUBPMPTNDD9GTVSMMQBNX', balance = 86, key_index = 6, @@ -927,16 +927,16 @@ def test_pass_inputs_implicit_with_change(self): response = self.command( seed = Seed( - b'TESTVALUEONE9DONTUSEINPRODUCTION99999C9V' - b'C9RHFCQAIGSFICL9HIY9ZEUATFVHFGAEUHSECGQAK', + 'TESTVALUEONE9DONTUSEINPRODUCTION99999C9V' + 'C9RHFCQAIGSFICL9HIY9ZEUATFVHFGAEUHSECGQAK', ), transfers = [ ProposedTransaction( address = Address( - b'TESTVALUETWO9DONTUSEINPRODUCTION99999XYY' - b'NXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOW' + 'TESTVALUETWO9DONTUSEINPRODUCTION99999XYY' + 'NXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOW' ), value = 42, @@ -945,8 +945,8 @@ def test_pass_inputs_implicit_with_change(self): changeAddress = Address( - b'TESTVALUEFOUR9DONTUSEINPRODUCTION99999WJ' - b'RBOSBIMNTGDYKUDYYFJFGZOHORYSQPCWJRKHIOVIY', + 'TESTVALUEFOUR9DONTUSEINPRODUCTION99999WJ' + 'RBOSBIMNTGDYKUDYYFJFGZOHORYSQPCWJRKHIOVIY', ), ) @@ -958,25 +958,25 @@ def test_pass_inputs_implicit_with_change(self): # Change transaction, Part 1 of 1 self.assertEqual( response['trytes'][0], - TryteString(b'999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUEFOUR9DONTUSEINPRODUCTION99999WJRBOSBIMNTGDYKUDYYFJFGZOHORYSQPCWJRKHIOVIYQB9999999999999999999999999999999999999999999999999999NYBKIVD99C99999999C99999999KBXWFFMA9LJHXBHJKCKMYUGRZVBREIPFWYBU9TQJYCQIU9FISPRP9B9SARHRCIZHTTOGZYKZLBSJCLCFC999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUEFOUR9DONTUSEINPRODUCTION99999WJRBOSBIMNTGDYKUDYYFJFGZOHORYSQPCWJRKHIOVIYQB9999999999999999999999999999999999999999999999999999NYBKIVD99C99999999C99999999FWVD9JAZQGWBOFXANTLCCUHZTKWDDTBRICCOXGWGDDZSXJXKYAJJSCRWSVWVLXKNGOBUJLASABZRJXKVX999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input #1, Part 2 of 2 self.assertEqual( response['trytes'][1], - TryteString(b'SUNYXMMYXSLOBXJAZOEGFTFDRABKOWLWNVNKWUQNNFAJZFUBLCSM9RHRNSEVRQYMXSUHLCBSTRAJ9MPKZHMGHRMSAOPOHZLNDZHOBMMNCFOVJLJJREPCHGDAUKHIOBXXNPPWAPDIFFLPJHTQKWBH9RVDKFHIOZFOJCMDRQQZQBPJBABWJKDZJQPA9CNLA9HONOGWCKOYSMLFTXU9QOXTTWARYURGLESFK9DLEL9ELNBOFTDJVRZSVFSZSYDZIAJXVPRAZPNWFEIQUBKOEUOOIJCWYBHBVQLYIDJ9QZMRXJEYXVFGJPMZHPQUPZZSDHNENXBZTWZCSNOUXM9OCAPCXAU9GSQSWDPLTKYBAORSAUAWCELG9TTRTP9JLXRXEINIQYJQMIYGNPECOFPRGYYXBWR9KXLEKBAKDHIAJUJUIDODRAAXJTDKQP9DCADLODZYULKHZABYG9NLTKGNPPBTGUTZBCVXAUNPYGPPQ9WAWB9PYZB9QJGVDCTWFJNAQQPA9NLJEQENMKMCZ9KIUZTFYDSFAQPUEVICSRPARJVCGHZBSISXA9IHAYXVAJNXJGRGLZPLSYOOEGKDFYRDLIXNLYVXSLISFLGQJDPPYYXTNNCGPCKYIZBYBHOGBVVWEXCJUJBW9RVAFLCJ9XWMIEVNBXTAPLZZRNZLNATFXRYHRXKIVETTJEMOSEEJHLVJVCMLCOSDVHDZPI9MKHKJEUBPNJOSWSCXOG9UMJAZMSXGBZWIYBBXUNUZQMKTKXASJDNPRRLFPVHW9SEJLDFZWWBVWSOFVPLPZUXCYUWTHODALXTVSCMKPKLFXXWBIANSBMLY9WWU9NESINMACVFAVUQNZVRFYIDCEJXUPAQMPWNITOWLJZWHHPFYBKULZM9POPHIMEFUXPZMAKZCQXFNQBPHGUMCHRRLSCUZYRUOAYLESIXRQHERYHM9NJUYMGYGBLBOVNYOLO9VBOAXXZPJGRDWQGQKRERHWDVIISUTJAVKLFYVKLZSUZYSABCGNHQEW9TTSPDVKLUKWRDDZCAR99DKTAVEBTTGYBHXXTYPSJISVCSXVOZVASWTSZTOSCTZCB9JOQSJXAYUNKCZZGUAXDLFZHPLGCCRCS9CHDSHWRVIEKTHU9PUANYYZWWHQISAWVVJPUXGTIVHIJSBOPPYBSRNKTDIHDEEAZOPTHSDGDRVCQLTXFOFNPPKJJXMTIOZAMADXDGWVNITQWGKLAKBG9NCRPJZMSNORPHQABNDBCTIP9UYDRXYRAXMSLKVPPG9YPSZHYXDHBKIZB9OHNMDSA9IVVHU9BCFU9PZQJAAFXGSHLPGLRJGZCHJRSXYNKCHLSJFYMQGTRWQNRGZWKBKVTGSRTOKWSAAKXZMCGEWSWCAXKOVOQMQTLAVXYXCPZTDCFXPOSXXIAYSIIHEZJ9DNYTKKYMWRTLWGWNXVJAYISGRDIGQGUTSQWWUWYSAHSOELZLPGAALRXCWFCCZMY9GGI9DEKPQMC9DTHQXQ99BJRKXYQUPSQUOO9YIWWWQO9RUFYZJOXYIOFYXHYADLICRBQ9WR9EWOCFQKQHSTAVURWXDVMZTKBDEIANACYAMNCUDAQPIJYOUFYNGWCFKVTWLKLMDDVBZLDHKOQSUZUUHGBOJYEL9NYWCHULZYVELSILWUREVAEKVFSKFFPYEBRUPQMWHHAEAHLPOGDPJDKHI9KTJFJVYN9KIRGO9UMQVASVOAHHMKL9NJVXHSBTLWUWLNOP9IRP9BHOLSXKSRZWNVUWQGQQWFOFYGDPCOWRPOWKYUPSBFPEGFPE9LBWMA9MIE9DQKTUJJCAHNQNDQJUOP9VFKSYBELBHULNQTRCHXGYIYWQCAYVLKKZMEPTEWTKMCGRABHAMQWWCVDGNGOWNVFTBGKPCPXOFRKJRQPSXZCO9MI9FVBZVBTBLEAWUJQGMROZATOUYEMRZBAWKMCAALRBTPBEOTV9RULJ9IUFXLUYEBSCNUJNC9MZTYKRFWSYFSUWOZIMX9SXCMHEDKWXBRUHFYUWDSHUEOLWG9K9VJEXO9QFKVFEZLCXQLQMRQ9DPD9S9PQZXCCUOK99VGDEGQSLPJUFRPWNULNVRYVUJUWIY9PAIYHMJDDGOWQRRTXWMTGMTUFR9NNHTZGAZHQKIHKABBNQIFVXYFCAXOGFVOX9MQEWDYTVXTAAGMIWUFHYUCWLLEHDLXJWUSPODWEIFMIURCMLSUZV9BMIVEAJZBSEWOVBUBC9DZNSQUBPMPTNDD9GTVSMMQBNX999999999999999999999999999999999999999999999999999999NYBKIVD99B99999999C99999999KBXWFFMA9LJHXBHJKCKMYUGRZVBREIPFWYBU9TQJYCQIU9FISPRP9B9SARHRCIZHTTOGZYKZLBSJCLCFC999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('RRRWOYADWJHJLPCMQLIFYTHXLKTAHTTGUZEWOLVYLQLNLTECZXWCYRKDYNHVTJKANOEJVDKRFQOWSKRSCHTOSWVIABTBYJOAGGPFHWTZXURZGZXSY9TRG9XQIZOSPSVIROZDYPKSPZANCKVFRSZWITVIGTFHQD9CRWPINACBPNKQIWLQSQRRWU9LJQNEYTHPAKOBFHEJNXCXFFMSQC99SEIPJYKNMTFVDFRHSHSBYHPAEFAAC9CQQXL9FUSXGERKHQQDNTJBSAHLKYWCCQEKFZOBJ9YDT9AJRMQLLKUOKCXBASRRAPTUCYCXDZWXSBODNTG9Z9IPZI9WBFVZVCJEBKFKKKXCVLY9SSGFSFALNMXLBNWNJPE9CLI9XGILJDJNKNOZZUB9RSMFLSNBEOAVZIZKWDRKOMVVRFZTLMMZHTZJDOBYD9ACJCJOVMIWLRCKXGLLYRTUCYIDUZZHKALZHWAWQJUPKGNBMAUFICSNDLJU99U9WWCWKTEWVNAQNWDPBA9EWREQWDJDNTUDXIZYXPTHNRJJHOJTSQOIE9KOUEOTDVMUCSNZUZXJYSIO9UMQVKOTMCM9VNLWMCLHLNJXOWJTBLYU9CWSHYWNPNBWZWZLXJUXNFTOKOSUGAPTXNKEJN9YRJYDCRHNHIWNRQEFAILFYCX9IZVFVXLJFVVRMRAUBTZAGMJBLMRJEPMHFAPGOAZFCNVFABVDL9OXHSOD9QHNYPHFHCYRZRG9PCQDTDPSWZPNSFFNLRLJU9YPOTNGZWGGASLOAGQNVTWNZBFZZDBCKMXPQQJYYNLROJWGKACUEEOOTZIC9R9BWFUJPTNAEFPCWRBNLVOFQLRKFJYNGLREKVVCROUSVJBTXOINRHPKISOIUOGFEBRTAZWCJTHTJGUEVPTENCYCKBJTPZN9KQQEFNDVVC9MALGIMMPCNUYWXXNSLJNLKGFK9RCWO9UKPEXTXEVRGEZWZGOLUPRKWJF9ZEITZDJDKZXKAUWBFCLGPCAGIYTTALOKVCIZ9DFFXEZJBRVLPJXOQHCTZQXPHYHRJEWWXPSFIOTJKJUOKBMOMGHVIAAHJVUJRVPGGTITOMFIMGQKJMBUOBBOCOTDKBMDVGENDEHBCNCCNKLDEYAZZC9PSTLIPZILITHGIRZVLTAYHZVYQYBZCXBCMUPBFUPXSZVECQDCEPAHFZHLOOZKWKSQGEIAFMKYPOVRKDDAXHJOARAJBJWDUNMINSUVUCPYEERXVPBXSBJONSFDBOZNO9BUIWRMTCWSGJFKIVGDDZHRUQXIHMMFYRVZBEPTZGLZZBHROEZSXHT9PVRO9O9F9ZUGCDQIKDQKUJFTDZI9EDITJMN9MSDNXXWVOKSDFLQYEOCTAJCCY9RXEPEQNYVYWUUCD9YLVPGLDXVHS9WEZXHJEEBTMWWZRDCVP9FMMC9VQAWMZXRMYTVMDUOICCQZSIUDBBVPXVQP9LTIDDV9ERMOIXSNIDIPJYSSVGNOTECEZKMOXXUO9VFVITXOFDZKELQUCBJOGBTGBEOXDFTUEMCVXAH9TKGLM9ISCWBUEWQLLIXXWEFMIIGTZYJVYPFNBXQZSMPIQWDTVXYJHMTTTXBBS9LXO9GJQVJAONI9CODDHZOKLFYQQLOKSIGSUCOCMXJRCB9OKNTOCPLXBEKZZLCOFERMEHXQNMJAXMOPXZHQB9MCDVQLYKYMDOMCWIVGJCZGUGIXKGWNYOILFQAMRQXMFUKXMILIOE9INLAPJMUXMOMOYILRFKURQMLQPVRZYXB9NRFNFCDWLRNTFNWCCWNUKZXGYYHNMYDX9GSLN9OUVPXQPIVLPXQTMWNGOFAMYCLCRNSWALVNYTUFYZAHYAHFDWYKLWQOSFOZAQSNSMMYNBBX9WSZMJ9NHK9FNVTLAKBBTGXVBCIHSFB99KHXMTUYPMOZJFCMFFIJMAHKKXXBASKBWREAWSFCLKKDOKHFFKLMFVXTIVEBBIQJRGZFTOLOT9MDAZQNQBWZDXUFTBHVYGLYHMSHEIFYVQMPXC9ZZBXYGQEUIXYNUPXNOLYKJKMJ9XXFWCOPAYBWZSEWLMXK9KTHHMSWDWXLFNQBXMOUMYVOSFMTOQWTGZYYRZSEAGHPVHFBPG9AQBPLC9IIIKGPKCXYLVA9RLCHOPJLONGSIAYCUETOMNGNFCRETLXPHMGKXZXVM9XUFHYUCWLLEHDLXJWUSPODWEIFMIURCMLSUZV9BMIVEAJZBSEWOVBUBC9DZNSQUBPMPTNDD9GTVSMMQBNX999999999999999999999999999999999999999999999999999999NYBKIVD99B99999999C99999999FWVD9JAZQGWBOFXANTLCCUHZTKWDDTBRICCOXGWGDDZSXJXKYAJJSCRWSVWVLXKNGOBUJLASABZRJXKVX999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Input #1, Part 1 of 2 self.assertEqual( response['trytes'][2], - TryteString(b'BUKUGOBJ9OGJGTXCAYHYGZOSYEIGBBXPNYEIBIYCTACBTKXDHGMHYJNREPKPIAZCUOZFWLUXNGMKHIDQXZSQEN9JHHNMYQFGXXYQQDLYQROXZIRRDEVBEJWIJGMDFJCIRTGFTAEPLJAQBWAJMIOMPWJBBK99UYXXVBQQIOPJHS9SVTWKJGLCEKQNDSBBCZOMIVDACSTJAJWEWEEMKZLNDNDZOOXGWFFNHDMYWOTMJUXFNXATB9WQZIZGMEVCNZMBRZZFKVTXHFQNNKMMLAPHTIYZGDDPCDYIZIRHSTHWTFLLIUTHDMSAGMTFUFORGEJVYSUWA9EF9GXJVJKJAYFJJVGIVNMYIQGRVGEOMPLFXVGCKQHUJVMQPGAHXYJYERPCGFLEEIBXFWJSQJBNXQDDWPJTVIQS9XDTCIQMCYBLQVIONVNBHREGRKXDNFALNNXRPAPXTPSXZAPPNKRHVLVEMFQSOBHSEAXLX9JLHYBMKNCFWHOWJYDOCCPBAAAYJVTMRZMXODUATBFE9ZUB9MSLLCELNVSNQIQ9QAACRYIU9IQDOQVLYJGJMOWXPGAOAHWKVFMVQKVLZXGODQZGQQFSILMRYROYKTJWJSSYXTXOMPRGSJNOYM9ZQJWFB9BIADZJBOWLKVODOFFAXQKCPGTTWPW9CUCBFC9ZUGVVZCHRAMNKWKEDMFIFFDKURRTITLNQUEHBCWEOFHKKHJVHHJISQNJFCCMZOQCGIMGZCKJMLDHAEHJMFCUCAZNERDQCFIWWAVFWBVOQUCAWOAA99ZAMBFHCZBQBPQHKQCMEHGPTJ9KKRZDCOZGQHRNPUMPZTGSNFPMRBKKPVA9CDKAQUIXSBYLTSJKNWZJCEFIVYTYHMUHAYGUCMJUMFZWDIEWAPFFXVS9FTVYENQKOCMLEJMGQKBVLEMCHHIQBYNGFRPXWZCARCVHXUOKFDYMSQYMGUKRJJGHQRGYLNXBDSOYDNLJGPGXWCFSNEWP9URDSOPSDRCNSQUIFHEJUSSNXWQGCEZCYBCNHKOOTSXNMYPRCRPBOAECXUNORAHAIUHAVLRUAU9PROLDHSXQLROIQZLSDW9NQRKFBIRNVMACMQPESHPUHSHG9ATAYMK9JPLETEJPFDLSPZYJLWNSEJZMZERZEIAJNU9AQLKKTYETEXYYNZ9DALLXGDLBSZJOSFG99HYSBYPOLGB9EFHGHFWEXOTPHPSAZR9FDSPBCZMBFTMKZMGALUARAMMPIPGILHTQRCHAYDEXMY9CTHBHJVZJJXWRAUHMNCHRQRXWYOFJG9DIZFAIYUJHNMYAWHGCEBTOH9QPLIYNDHEEJSOYZAEMGUWSAZUGPFFINPNQYARM9OTSCUTPDOZUGSJBADUQQCVESMDRKDFQICMTYBBICIADAFMVOA9IDYDZFJ9GMYQGCLAQCLIVOBANCGSLTAVWYLKWCPFBXXTNTDNKCBZZRKWLARIA9NACFGTOHYRY9SKEABGCOPOZGGQEFRDQSFWUYGDYNBJEIACRXNQSUBKMKSGSWWKSQOLAOWWDWICAHQTCZEGCUVZC9AWORNNRALONIZUIVYJSWBCCGBFJPEFDGOWRWJVZAVGEBGXZTJMVTTFTUVVE9AFXWZYBLHNVKJELEGLWJKCKSAGBUQSWZXY9IZUDOFSLDAIGGAILAKTLOHWFTNHJ9NSXGBTCSKGNSUEWQ9EEDXYEMVMQJPSITVWDCX9ZMGGHFQKPJAJHXAVWNBSNOJH9U9QWOLRYI9AQ9JIEYTSQ9BLFZSEB9PQTDGEHNUXCJKADKUEYUJOMSPKFANVQWOFHFWHVAOTBVRWSGSSKOIBJKNXTKHLCERGZLLGYOMGATPEPG9NTQUARULDWTCAHB9X99CVCWEJAHNZVZDESTMPAZVEWUDHTNGIYI9HXIYWLYMU9YKJVMERWGFBBUQKJ9JJEE9LLNPLZASNXRVGEHYAPVVQSSGGFB9UUVKFSKWTGB9AUYLNAZJ9WXORLNIRMBSEVIJENPNZNCZBJTLHZIQFMJMERPDMVFJFQYAWGGYHMSMZGNJKVZ9JW9DO9GQUTYEALMCYH9SMRMF9JAAHTI9UISSHFLAGXQQSXVEWELHPNS9WSULBQMHJMFERANBLXEDLXTWAUKKJJLHYDWSVAKTAASJLXMAMA9ECGOTCYRWBXLDXSINUPYUK9GLWIUODCUFHYUCWLLEHDLXJWUSPODWEIFMIURCMLSUZV9BMIVEAJZBSEWOVBUBC9DZNSQUBPMPTNDD9GTVSMMQBNXVX9999999999999999999999999999999999999999999999999999NYBKIVD99A99999999C99999999KBXWFFMA9LJHXBHJKCKMYUGRZVBREIPFWYBU9TQJYCQIU9FISPRP9B9SARHRCIZHTTOGZYKZLBSJCLCFC999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('JFSQQFKZLBCXAVCDQVFXRNSLJUQQIWCVDGWAUZLSKMYNHY9RUOKZILRZ9OW9ITKBTYHAYTTD9KEUGLCGYQJYMDAYHQMGUIOTVZXQJLTQAKV9PZLQIGDAZJTNQ9BLRMQBDVCAIBCTTNEAVECQBNUUIBVEMQAFSYUCNWQCRSICILWHWSGQCVPQBWESGVVAEWY9WLIIMUWYMGSMJORUMIJLMQIVMLBQXIWEZDYESPLXQOVJGCTRRNZEBBHHZOPAPFIWGNFOAPIR9ZSZSMHZODPTJCYVHQLTKAGU9UBA9URUOKBDUYFCTVHJXYDVVERKRPTOHNXBEG9BI9BSJSLOAWOLUUNBBWCRILOKWWD9FKOBPWXAJOLKVULWW9EEBMBPUBSRJHOMHEJJHOY9LKJCQZBZZX9KSXVHUBYXVEQJLYWGYNHDCKWHUDNAHHIJYCBADZMIIGZHOXYOQ9PNWCKZAZKWNRNM9ALALV9IOZYJSYHILATWVNKGIDTW9ONJTXFA9MXKUDPND9ONGJNMTYZUJKWRMFVNGRNIOPRWLUKMXHWKFKD9IKZSJBWBMQAXNTKERHEXELMAAXFHEJUUYCCBHNUGGE9TBJNABKO9RVFZSZNPEKBQHNIHMUCGBWDJEUXREV9YUSUVHXQXCPCPFFBZBEJMGLGVWDGINYLAJORMFTVNLSZBH9RIVOGRZKQSJYWRPHBPZ9MNVQJOFSUWZMOHUHVCNDIVDMCMWCTKEBQNKGFBRIQRRLZSQPQ9PVRKLHJODCWVPCHSLALPPOWVXCIXLDSUOL9COAPYBOVPVBUAUBCI9YKZRYMXEE9NCVYBNAIDPXIXMBLVLUXOTDUDQGNKPVJUDPPTIHCCIYQBSHNRIBBMFB9AGSNUZPSPNZEORZ9LGDEUELGFOZZEYZDT9A9XVZXLOKYL9GJXVAHEZNVYSWP9ZNWT9GOJLMELMXJDSDRMYTSVOOWMNUNQFPVXJVOXXJEVPSNPZGLGTALECVACGTBEP9FTYHWFKRCEXOKTUIFYWYRLJPJZEP9RICV9EVAFLTAXSGCRRMPEAVIGRPVPTHWKMNMNWPLTVJIRMPIUFLAIWIFTCAZOVBDQEEB9TQEPBPIJINMHQBBUBDDQDOW9RYJBAFUKZZZBTBEKVWIXMMIVHGMPDLT9FDPKFDCZGQLCJUDZXNDLIRPKAPDGCYEWPOWLSKGRAARVVHC9ZZ9QNVJGFV9IFTUQOSOXPOOMRFKNKWLANREIMEEPSRRRIELVF9UMPZNFBALDOQWALSFUGZECVFKIOIHZOVQKJAKXCCVWWWMPLLRWZXQFPQZDLOHIETRUI9HRKLFOAVEH9M9EOD9LKDY9TDZRZPAPBIUVLFJAUFDDRRTSAGRE9QDRXWFUTOR9WWWQFPBROYRCQCZEFKH9FOGTLQXJHBSKO9ADIGFZLJVOATVIHXVX9ZEVLLLWYFTHRMTVDGAFMXDSUIMXMUDDUVMSIXLCMYIDTLEO9ZGBRSAYRINB9EGDMUNFLD9GKZVLNWADRTGHNJIWWCCHH9WILBUBGDWUEOUZFRCHHHMFOFHWTQTKPXHNZQPXWEPRLGEDZTRHDXUVBGONUDXTZYFCUNCJTVGRFGUWXNZGBWYKCYTCDSJ99MSHKMKBLFZYZQQWPAAKZYKVSOYBWOHBFM9IKDLXR9WDXQFUEW9D9FQCXZJZSLAOKRBVEAYQBSFIXYEMVMQJPSITVWDCX9ZMGGHFQKPJAJHXAVWNBSNOJH9U9QWOLRYI9AQ9JIEYTSQ9BLFZSEB9PQTDGEHNUXPAHQONJRBBNWAS9CEAPIGPRFCTYCPRDUC9GQOXBIOAVCEPUSXCXDGUKCPCM9IJJHWDEOJJPL9GXIRNOMYUTPAOXEVCIWORREAKHYGAG9QCJLPKTA9SYEWLFARCXUMYMXIUAWPM9HBU9FR9XRIYJIJUILXUJETIIFFZZENYOIPQKQSFGFJHGAYXUSEMUJYKHDIKOAKGTMAZFKFN9NTUECRU9EXC9DFVCVPDGRDYVOHUSETERJWT9MGVHNV9WBVXFFIISMAVTIGESBJBHGTT9CJPROCGJZYSVGFJTJOVOMFLROFRMQVNNCXTNUIYMKWRDMFMOYYSTFKIOAEIOPZZLBDLP9WTFLDSBENOONPETOS9QHLOSPYDPRHKCIGUAGKQXVBVUSJTIOAMNAXICQ9CLPCUFHYUCWLLEHDLXJWUSPODWEIFMIURCMLSUZV9BMIVEAJZBSEWOVBUBC9DZNSQUBPMPTNDD9GTVSMMQBNXVX9999999999999999999999999999999999999999999999999999NYBKIVD99A99999999C99999999FWVD9JAZQGWBOFXANTLCCUHZTKWDDTBRICCOXGWGDDZSXJXKYAJJSCRWSVWVLXKNGOBUJLASABZRJXKVX999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) # Spend transaction, Part 1 of 1 self.assertEqual( response['trytes'][3], - TryteString(b'999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUETWO9DONTUSEINPRODUCTION99999XYYNXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOWOB9999999999999999999999999999999999999999999999999999NYBKIVD99999999999C99999999KBXWFFMA9LJHXBHJKCKMYUGRZVBREIPFWYBU9TQJYCQIU9FISPRP9B9SARHRCIZHTTOGZYKZLBSJCLCFC999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), + TryteString('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUETWO9DONTUSEINPRODUCTION99999XYYNXZLKBYNFPXA9RUGZVEGVPLLFJEM9ZZOUINE9ONOWOB9999999999999999999999999BI9999999999999999999999999NYBKIVD99999999999C99999999FWVD9JAZQGWBOFXANTLCCUHZTKWDDTBRICCOXGWGDDZSXJXKYAJJSCRWSVWVLXKNGOBUJLASABZRJXKVX999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'), ) def test_fail_inputs_implicit_insufficient(self): From d5e5268feab56f50f2ec532082b4cbbdf6664bdc Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sun, 29 Oct 2017 10:25:36 +1300 Subject: [PATCH 08/10] [UNSTABLE][#84] Addressed failing unit test. --- .../commands/extended/prepare_transfer_test.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/test/commands/extended/prepare_transfer_test.py b/test/commands/extended/prepare_transfer_test.py index dbd83b03..5f3d8d0f 100644 --- a/test/commands/extended/prepare_transfer_test.py +++ b/test/commands/extended/prepare_transfer_test.py @@ -1149,14 +1149,18 @@ def test_pass_message_long(self): """ response =\ self.command( - seed = Seed.random(), + seed = + Seed( + 'TESTVALUE9DONTUSEINPRODUCTION99999HORPYY' + 'TGKQQTQSNMSZBXYLAFXFHZVPWVGCPRGXKXREJKI9B', + ), transfers = [ ProposedTransaction( address = Address( - b'TESTVALUE9DONTUSEINPRODUCTION99999YMSWGX' - b'VNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN' + 'TESTVALUE9DONTUSEINPRODUCTION99999YMSWGX' + 'VNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN' ), message = @@ -1184,7 +1188,7 @@ def test_pass_message_long(self): 'я не наплевать, что вы думаете, что вы имеете право!', ), - tag = Tag(b'PYOTA9UNIT9TESTS9'), + tag = Tag('PYOTA9UNIT9TESTS9'), value = 0, ), ], @@ -1196,15 +1200,15 @@ def test_pass_message_long(self): # Note that the transactions are returned in reverse order. self.assertEqual( response['trytes'][0], - TryteString(b'EASGBGTGTDSGNFSGPFSGAGFA999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99B99999999B99999999WNFMWSPCSGGIFVNVMLOFYLWQXKIRFEVEHVNBSCRHJ9XLSWYSKAO9LIZSYRJAGNNLBJBZKGCVPZEWKYXAW999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), + TryteString('EASGBGTGTDSGNFSGPFSGAGFA999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99B99999999B99999999EKHBGESJFZXE9PY9UVFIPRHGGFKDFKQOQFKQAYISJOWCXIVBSGHOZGT9DZEQPPLTYHKTWBQZOFX9BEAID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), ) self.assertEqual( response['trytes'][1], - TryteString(b'FSG9GTGHEEASG9GSGNFEATGFETGVDSGAGSGWFEATGUDTGVDSGSFSG9GSGSFSAEASGKETGDEEASGRFSGAGSGYFSGTFSG9GTGDEEASGZFSGSFSG9GTGHEEASG9GSGNFEATGFETGVDSGAGSGWFEATGUDTGVDSGSFSG9GSGSFSAEASGUETGDEEASGVFTGUDSGBGSGAGSGYFTGEESGUFTGWDSGSFSGZFEATGVDSGNFSGXFSGVFSGSFEATGUDSGYFSGAGSGPFSGNFQAEASGXFSGNFSGXFEATG9ESGSFTGUDTGVDTGEEQAEASGXFSGAGSGRFQAEASGPFSGSFTGTDSG9GSGAGTGUDTGVDTGEEEASASASAEASGZFTGDEEASGVFTGUDSGBGSGAGSGYFTGEESGUFTGWDSGSFSGZFEATGFETGVDSGVFEATGUDSGYFSGAGSGPFSGNFEASGPFEASGXFSGNFTG9ESGSFTGUDTGVDSGPFSGSFEASGAGTGUDSG9GSGAGSGPFTGDEEASGXFEASGTFSGVFSGUFSG9GSGVFEASGBGTGTDSGAGSGPFSGSFSGYFQAEASGUFSGNFTGBESGVFTGBESGNFTGHEEATG9ETGVDSGAGRATGVDSGAGSAEASGKETGDEEASGZFSGAGSGTFSGSFTGVDSGSFEASGVFTGUDSGBGSGAGSGYFTGEESGUFSGAGSGPFSGNFTGVDTGEEEASGVFSGZFQAEASGXFSGNFSGXFEASGBGTGWDSGNFSG9GTGVDSGNFSAEASGAFEASGZFSGSFSG9GTGHEEASG9GSGSFTGVDEASG9GSGVFEASGPFTGTDSGSFSGZFSGSFSG9GSGVFQAEASG9GSGVFEASGTFSGSFSGYFSGNFSG9GSGVFTGHEQAEATG9ETGVDSGAGSGOFTGDEEASGAGSGOFTGCETGHETGUDSG9GSGVFTGVDTGEETGUDTGHEEATGUDEATG9ESGSFSGYFSGAGSGPFSGSFSGXFSGAGSGZFQAEASGXFSGAGTGVDSGAGTGTDTGDESGWFEASGBGSGAGSGRFSG9GSGVFSGZFSGNFSGSFTGVDTGUDTGHEEASGVFEATGUDSGBGSGVFTGVDEASGBGSGAGSGRFEASGAGSGRFSGSFTGHESGYFSGAGSGZFEATGUDSGNFSGZFSGAGSGWFEATGUDSGPFSGAGSGOFSGAGSGRFTGDEEATGHEEASGAGSGOFSGSFTGUDSGBGSGSFTG9ESGVFSGPFSGNFTGGEQAEATGVDSGAGEATGUDTGVDSGNFSGPFSGVFTGVDEASGBGSGAGSGRFEATGUDSGAGSGZFSG9GSGSFSG9GSGVFSGSFEATGVDSGAGQAEASGXFSGNFSGXFSGVFSGZFEASGAGSGOFTGTDSGNFSGUFSGAGSGZFEATGHEEASGBGTGTDSGSFSGRFSGAGTGUDTGVDSGNFSGPFSGVFTGVDTGEEEASGSFSGZFTGWDFAEASGMFEASGOFTGDEEASGBGTGTDSGSFSGRFSGBGSGAGTG9ESGSFSGYFQAEATG9ETGVDSGAGSGOFTGDEEASGPFTGDEEASGBGTGTDSGAGTGUDTGVDSGAGEATGUDSGXFSGNFSGUFSGNFSGYFEATGUDSGBGSGNFTGUDSGVFSGOFSGAGEASGVFEASGBGSGAGTGAESGSFSGYFEASG9GSGNFEATGUDSGPFSGAGSGSFSGZFEASGBGTGWDTGVDSGVFSAEASGKEEASGBGTGTDSGAGTGVDSGVFSGPFSG9GSGAGSGZFEATGUDSGYFTGWDTG9ESGNFSGSFQAEATGHEEASGBGTGTDSGSFSGRFSGYFSGNFSGQFSGNFTGGEEASGPFSGNFSGZFEASGBGSGAGSGRFSGAGSGOFTGTDSGNFTGVDTGEEEASGAGTGTDTGWDSGTFSGVFSGSFEASGVFEASGPFTGUDTGVDSGNFTGVDTGEEEASGBGSGAGTGUDTGVDSAEASGKEEASGYFTGGESGOFSGAGSGZFEATGUDSGYFTGWDTG9ESGNFSGSFQAEATGHEEASG9GSGSFEASG9GSGNFSGBGSGYFSGSFSGPFSGNFTGVDTGEEQAEATG9ETGVDSGAGEASGPFTGDEEASGRFTGWDSGZFSGNFSGSFTGVDSGSFQAEATG9ETGVDSGAGEASGPFTGDEEASGVFSGZFSGSFSGSFTGVDSGSFTESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99A99999999B99999999WNFMWSPCSGGIFVNVMLOFYLWQXKIRFEVEHVNBSCRHJ9XLSWYSKAO9LIZSYRJAGNNLBJBZKGCVPZEWKYXAW999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), + TryteString('FSG9GTGHEEASG9GSGNFEATGFETGVDSGAGSGWFEATGUDTGVDSGSFSG9GSGSFSAEASGKETGDEEASGRFSGAGSGYFSGTFSG9GTGDEEASGZFSGSFSG9GTGHEEASG9GSGNFEATGFETGVDSGAGSGWFEATGUDTGVDSGSFSG9GSGSFSAEASGUETGDEEASGVFTGUDSGBGSGAGSGYFTGEESGUFTGWDSGSFSGZFEATGVDSGNFSGXFSGVFSGSFEATGUDSGYFSGAGSGPFSGNFQAEASGXFSGNFSGXFEATG9ESGSFTGUDTGVDTGEEQAEASGXFSGAGSGRFQAEASGPFSGSFTGTDSG9GSGAGTGUDTGVDTGEEEASASASAEASGZFTGDEEASGVFTGUDSGBGSGAGSGYFTGEESGUFTGWDSGSFSGZFEATGFETGVDSGVFEATGUDSGYFSGAGSGPFSGNFEASGPFEASGXFSGNFTG9ESGSFTGUDTGVDSGPFSGSFEASGAGTGUDSG9GSGAGSGPFTGDEEASGXFEASGTFSGVFSGUFSG9GSGVFEASGBGTGTDSGAGSGPFSGSFSGYFQAEASGUFSGNFTGBESGVFTGBESGNFTGHEEATG9ETGVDSGAGRATGVDSGAGSAEASGKETGDEEASGZFSGAGSGTFSGSFTGVDSGSFEASGVFTGUDSGBGSGAGSGYFTGEESGUFSGAGSGPFSGNFTGVDTGEEEASGVFSGZFQAEASGXFSGNFSGXFEASGBGTGWDSGNFSG9GTGVDSGNFSAEASGAFEASGZFSGSFSG9GTGHEEASG9GSGSFTGVDEASG9GSGVFEASGPFTGTDSGSFSGZFSGSFSG9GSGVFQAEASG9GSGVFEASGTFSGSFSGYFSGNFSG9GSGVFTGHEQAEATG9ETGVDSGAGSGOFTGDEEASGAGSGOFTGCETGHETGUDSG9GSGVFTGVDTGEETGUDTGHEEATGUDEATG9ESGSFSGYFSGAGSGPFSGSFSGXFSGAGSGZFQAEASGXFSGAGTGVDSGAGTGTDTGDESGWFEASGBGSGAGSGRFSG9GSGVFSGZFSGNFSGSFTGVDTGUDTGHEEASGVFEATGUDSGBGSGVFTGVDEASGBGSGAGSGRFEASGAGSGRFSGSFTGHESGYFSGAGSGZFEATGUDSGNFSGZFSGAGSGWFEATGUDSGPFSGAGSGOFSGAGSGRFTGDEEATGHEEASGAGSGOFSGSFTGUDSGBGSGSFTG9ESGVFSGPFSGNFTGGEQAEATGVDSGAGEATGUDTGVDSGNFSGPFSGVFTGVDEASGBGSGAGSGRFEATGUDSGAGSGZFSG9GSGSFSG9GSGVFSGSFEATGVDSGAGQAEASGXFSGNFSGXFSGVFSGZFEASGAGSGOFTGTDSGNFSGUFSGAGSGZFEATGHEEASGBGTGTDSGSFSGRFSGAGTGUDTGVDSGNFSGPFSGVFTGVDTGEEEASGSFSGZFTGWDFAEASGMFEASGOFTGDEEASGBGTGTDSGSFSGRFSGBGSGAGTG9ESGSFSGYFQAEATG9ETGVDSGAGSGOFTGDEEASGPFTGDEEASGBGTGTDSGAGTGUDTGVDSGAGEATGUDSGXFSGNFSGUFSGNFSGYFEATGUDSGBGSGNFTGUDSGVFSGOFSGAGEASGVFEASGBGSGAGTGAESGSFSGYFEASG9GSGNFEATGUDSGPFSGAGSGSFSGZFEASGBGTGWDTGVDSGVFSAEASGKEEASGBGTGTDSGAGTGVDSGVFSGPFSG9GSGAGSGZFEATGUDSGYFTGWDTG9ESGNFSGSFQAEATGHEEASGBGTGTDSGSFSGRFSGYFSGNFSGQFSGNFTGGEEASGPFSGNFSGZFEASGBGSGAGSGRFSGAGSGOFTGTDSGNFTGVDTGEEEASGAGTGTDTGWDSGTFSGVFSGSFEASGVFEASGPFTGUDTGVDSGNFTGVDTGEEEASGBGSGAGTGUDTGVDSAEASGKEEASGYFTGGESGOFSGAGSGZFEATGUDSGYFTGWDTG9ESGNFSGSFQAEATGHEEASG9GSGSFEASG9GSGNFSGBGSGYFSGSFSGPFSGNFTGVDTGEEQAEATG9ETGVDSGAGEASGPFTGDEEASGRFTGWDSGZFSGNFSGSFTGVDSGSFQAEATG9ETGVDSGAGEASGPFTGDEEASGVFSGZFSGSFSGSFTGVDSGSFTESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99A99999999B99999999EKHBGESJFZXE9PY9UVFIPRHGGFKDFKQOQFKQAYISJOWCXIVBSGHOZGT9DZEQPPLTYHKTWBQZOFX9BEAID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), ) self.assertEqual( response['trytes'][2], - TryteString(b'SGKETGDEEASG9GSGSFEASGZFSGAGSGTFSGSFTGVDSGSFEATGUDSGBGTGTDSGNFSGPFSGVFTGVDTGEETGUDTGHEEASGBGTGTDSGNFSGPFSGRFTGWDFAEASGZETGDESG9GQAEASGZFTGDEEASGTFSGVFSGPFSGSFSGZFEASGPFEASGZFSGVFTGTDSGSFQAEASGXFSGAGTGVDSGAGTGTDTGDESGWFEASGVFSGZFSGSFSGSFTGVDEATGUDTGVDSGSFSG9GTGDESAEASGQEEATGFETGVDSGVFEATGUDTGVDSGSFSG9GTGDEEASGRFSGAGSGYFSGTFSG9GTGDEEASGOFTGDETGVDTGEEEASGAGTGYDTGTDSGNFSG9GTGHETGGETGVDEASGYFTGGESGRFSGVFEATGUDEASGAGTGTDTGWDSGTFSGVFSGSFSGZFSAEASGSETGVDSGAGEASGOFTGWDSGRFSGSFTGVDEATGFETGVDSGAGEASGRFSGSFSGYFSGNFTGVDTGEEIBEASGKETGDEIBEASGKETGDEQAEASGYFSGSFSGWFTGVDSGSFSG9GSGNFSG9GTGVDEAFCTCXCBDQCTCFDVCIBEASGAFEASGZFSGSFSG9GTGHEEASGSFTGUDTGVDTGEEEASGOFSGAGSGYFTGEETGAESGNFTGHEEASGAGTGVDSGPFSGSFTGVDTGUDTGVDSGPFSGSFSG9GSG9GSGAGTGUDTGVDTGEEQAEATG9ESGSFSGZFEASGPFTGDEEASGZFSGAGSGTFSGSFTGVDSGSFEASGBGSGAGSG9GTGHETGVDTGEESAEASG9FTGDEEASGBGSGYFSGNFTG9ESGSFTGAETGEEEASGZESGNFSG9GTGVDTGEETGHESGQFSGAGEASGVFEASGBGTGTDSGAGSGXFSGYFTGHESG9GSGVFEASGZFSGAGTGTDTGUDSGXFSGVFTGYDEASGBGSGSFTGYDSGAGTGVDSGVFSG9GTGZDSGSFSGPFSAEASGAFEASGPFSGNFTGUDEASGSFTGUDTGVDTGEEEATGVDSGNFSGXFSGAGSGWFEATGTDSGAGTGUDSGXFSGAGTGAESGVFSAEASGAFEASGPFSGNFTGUDEASGSFTGUDTGVDTGEEEATGTDSGAGTGUDSGXFSGAGTGAETGEEQAEASG9GSGSFEASGUFSG9GSGNFTGHEQAEATG9ETGVDSGAGEATGHEEASGUFSG9GSGNFTGGEDBEATG9ETGVDSGAGEATGUDSGZFSGSFTGTDTGVDTGEEEASGZESGNFSG9GTGVDTGEETGHESGQFSGAGQAEASGPFEATGVDSGAGEASGPFTGTDSGSFSGZFTGHEEASGXFSGNFSGXFEATGVDTGTDSGNFSGQFSGVFTG9ESGSFTGUDSGXFSGVFSGWFQAEASGPFSGSFTGTDSGAGTGHETGVDSG9GSGAGQAEATGUDSGBGSGNFTGUDEASGTFSGVFSGUFSG9GTGEESAEASGQEEASGZFSGAGSGSFEATGUDTGWDTGBESGSFTGUDTGVDSGPFSGAGSGPFSGNFSG9GSGVFSGSFQAEASGPFEATGVDSGAGEASGPFTGTDSGSFSGZFTGHEEASGXFSGNFSGXFEASGQFTGTDSGAGTGVDSGSFTGUDSGXFEASGVFEASG9GSGSFSGBGSGAGSG9GTGHETGVDSG9GTGDESGZFSGVFEASGRFSGYFTGHEEASGPFSGNFTGUDQAEATGUDSGBGSGNFTGUDSGNFSGSFTGVDEASGTFSGVFSGUFSG9GSGVFEASASASAEASGKETGDEEASG9GSGSFEATGYDSGAGTGVDSGVFTGVDSGSFEASGUFSG9GSGNFTGVDTGEEEASGBGTGTDSGNFSGPFSGRFTGWDSAEASGXESGAGTGVDSGAGSGZFTGWDEATG9ETGVDSGAGEASGPFEASGQFSGYFTGWDSGOFSGVFSG9GSGSFEASGRFTGWDTGAESGVFQAEASGPFEATGVDSGSFTGYDEASGZFSGSFTGUDTGVDSGNFTGYDQAEASGPFTGDEEASG9GSGSFEASGQFSGAGSGPFSGAGTGTDSGVFTGVDSGSFEASGAGEASG9GSGNFEASGPFSGSFTG9ESGSFTGTDSGVFSG9GSGXFSGNFTGYDQAEASGPFTGDEEATGYDSGAGTGVDSGVFTGVDSGSFEASGZFSGSTESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99999999999B99999999WNFMWSPCSGGIFVNVMLOFYLWQXKIRFEVEHVNBSCRHJ9XLSWYSKAO9LIZSYRJAGNNLBJBZKGCVPZEWKYXAW999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), + TryteString('SGKETGDEEASG9GSGSFEASGZFSGAGSGTFSGSFTGVDSGSFEATGUDSGBGTGTDSGNFSGPFSGVFTGVDTGEETGUDTGHEEASGBGTGTDSGNFSGPFSGRFTGWDFAEASGZETGDESG9GQAEASGZFTGDEEASGTFSGVFSGPFSGSFSGZFEASGPFEASGZFSGVFTGTDSGSFQAEASGXFSGAGTGVDSGAGTGTDTGDESGWFEASGVFSGZFSGSFSGSFTGVDEATGUDTGVDSGSFSG9GTGDESAEASGQEEATGFETGVDSGVFEATGUDTGVDSGSFSG9GTGDEEASGRFSGAGSGYFSGTFSG9GTGDEEASGOFTGDETGVDTGEEEASGAGTGYDTGTDSGNFSG9GTGHETGGETGVDEASGYFTGGESGRFSGVFEATGUDEASGAGTGTDTGWDSGTFSGVFSGSFSGZFSAEASGSETGVDSGAGEASGOFTGWDSGRFSGSFTGVDEATGFETGVDSGAGEASGRFSGSFSGYFSGNFTGVDTGEEIBEASGKETGDEIBEASGKETGDEQAEASGYFSGSFSGWFTGVDSGSFSG9GSGNFSG9GTGVDEAFCTCXCBDQCTCFDVCIBEASGAFEASGZFSGSFSG9GTGHEEASGSFTGUDTGVDTGEEEASGOFSGAGSGYFTGEETGAESGNFTGHEEASGAGTGVDSGPFSGSFTGVDTGUDTGVDSGPFSGSFSG9GSG9GSGAGTGUDTGVDTGEEQAEATG9ESGSFSGZFEASGPFTGDEEASGZFSGAGSGTFSGSFTGVDSGSFEASGBGSGAGSG9GTGHETGVDTGEESAEASG9FTGDEEASGBGSGYFSGNFTG9ESGSFTGAETGEEEASGZESGNFSG9GTGVDTGEETGHESGQFSGAGEASGVFEASGBGTGTDSGAGSGXFSGYFTGHESG9GSGVFEASGZFSGAGTGTDTGUDSGXFSGVFTGYDEASGBGSGSFTGYDSGAGTGVDSGVFSG9GTGZDSGSFSGPFSAEASGAFEASGPFSGNFTGUDEASGSFTGUDTGVDTGEEEATGVDSGNFSGXFSGAGSGWFEATGTDSGAGTGUDSGXFSGAGTGAESGVFSAEASGAFEASGPFSGNFTGUDEASGSFTGUDTGVDTGEEEATGTDSGAGTGUDSGXFSGAGTGAETGEEQAEASG9GSGSFEASGUFSG9GSGNFTGHEQAEATG9ETGVDSGAGEATGHEEASGUFSG9GSGNFTGGEDBEATG9ETGVDSGAGEATGUDSGZFSGSFTGTDTGVDTGEEEASGZESGNFSG9GTGVDTGEETGHESGQFSGAGQAEASGPFEATGVDSGAGEASGPFTGTDSGSFSGZFTGHEEASGXFSGNFSGXFEATGVDTGTDSGNFSGQFSGVFTG9ESGSFTGUDSGXFSGVFSGWFQAEASGPFSGSFTGTDSGAGTGHETGVDSG9GSGAGQAEATGUDSGBGSGNFTGUDEASGTFSGVFSGUFSG9GTGEESAEASGQEEASGZFSGAGSGSFEATGUDTGWDTGBESGSFTGUDTGVDSGPFSGAGSGPFSGNFSG9GSGVFSGSFQAEASGPFEATGVDSGAGEASGPFTGTDSGSFSGZFTGHEEASGXFSGNFSGXFEASGQFTGTDSGAGTGVDSGSFTGUDSGXFEASGVFEASG9GSGSFSGBGSGAGSG9GTGHETGVDSG9GTGDESGZFSGVFEASGRFSGYFTGHEEASGPFSGNFTGUDQAEATGUDSGBGSGNFTGUDSGNFSGSFTGVDEASGTFSGVFSGUFSG9GSGVFEASASASAEASGKETGDEEASG9GSGSFEATGYDSGAGTGVDSGVFTGVDSGSFEASGUFSG9GSGNFTGVDTGEEEASGBGTGTDSGNFSGPFSGRFTGWDSAEASGXESGAGTGVDSGAGSGZFTGWDEATG9ETGVDSGAGEASGPFEASGQFSGYFTGWDSGOFSGVFSG9GSGSFEASGRFTGWDTGAESGVFQAEASGPFEATGVDSGSFTGYDEASGZFSGSFTGUDTGVDSGNFTGYDQAEASGPFTGDEEASG9GSGSFEASGQFSGAGSGPFSGAGTGTDSGVFTGVDSGSFEASGAGEASG9GSGNFEASGPFSGSFTG9ESGSFTGTDSGVFSG9GSGXFSGNFTGYDQAEASGPFTGDEEATGYDSGAGTGVDSGVFTGVDSGSFEASGZFSGSTESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999GFOTA9UNIT9TESTS99999999999NYBKIVD99999999999B99999999EKHBGESJFZXE9PY9UVFIPRHGGFKDFKQOQFKQAYISJOWCXIVBSGHOZGT9DZEQPPLTYHKTWBQZOFX9BEAID999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), ) From 88f28750507be441f2bf265ee8813f487edcc116 Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sun, 29 Oct 2017 10:29:46 +1300 Subject: [PATCH 09/10] [#84] Addressed remaining unit test failure. --- test/commands/extended/prepare_transfer_test.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/test/commands/extended/prepare_transfer_test.py b/test/commands/extended/prepare_transfer_test.py index 5f3d8d0f..5fc3c92f 100644 --- a/test/commands/extended/prepare_transfer_test.py +++ b/test/commands/extended/prepare_transfer_test.py @@ -1118,18 +1118,22 @@ def test_pass_message_short(self): Adding a message to a transaction. """ response = self.command( - seed = Seed.random(), + seed = + Seed( + 'TESTVALUE9DONTUSEINPRODUCTION99999HORPYY' + 'TGKQQTQSNMSZBXYLAFXFHZVPWVGCPRGXKXREJKI9B', + ), transfers = [ ProposedTransaction( address = Address( - b'TESTVALUE9DONTUSEINPRODUCTION99999YMSWGX' - b'VNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN' + 'TESTVALUE9DONTUSEINPRODUCTION99999YMSWGX' + 'VNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN' ), message = TryteString.from_string('สวัสดีชาวโลก!'), - tag = Tag(b'PYOTA9UNIT9TESTS9'), + tag = Tag('PYOTA9UNIT9TESTS9'), value = 0, ), ], @@ -1140,7 +1144,7 @@ def test_pass_message_short(self): self.assertEqual( response['trytes'][0], - TryteString(b'HHVFHFHHVFEFHHVFOFHHVFHFHHVFMEHHVFSFHHVFCEHHVFPFHHVFEFHHWFVDHHVFCFHHVFUDFA9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999PYOTA9UNIT9TESTS99999999999NYBKIVD99999999999999999999XYAMEGAPMZ9HQCPAOUEQLDKHPMLJGJFEOGDAHWNSMRETQRKBKFNBVSEESVOIGRFDRMXWOG9LARRSIZ9QD999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), + TryteString('HHVFHFHHVFEFHHVFOFHHVFHFHHVFMEHHVFSFHHVFCEHHVFPFHHVFEFHHWFVDHHVFCFHHVFUDFA9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999TESTVALUE9DONTUSEINPRODUCTION99999YMSWGXVNDMLXPT9HMVAOWUUZMLSJZFWGKDVGXPSQAWAEBJN999999999999999999999999999YAOTA9UNIT9TESTS99999999999NYBKIVD999999999999999999999DRTUWFTZIDCUOAWLSDGIAWAIOGDYWFZNJHCEXDGAHCPKOIUIICUWGPXTGCRJWZBV9AXBCBRAKLDPRKQW999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999PYOTA9UNIT9TESTS99999999999999999999999999999999999999999999999999999999999999999'), ) def test_pass_message_long(self): From f870b59b222e2f1c4f2c24fb23230000ee01f579 Mon Sep 17 00:00:00 2001 From: Phoenix Zerin Date: Sun, 29 Oct 2017 10:42:24 +1300 Subject: [PATCH 10/10] Fixed technically-incorrect variable name. --- iota/transaction/creation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iota/transaction/creation.py b/iota/transaction/creation.py index e4f34ec3..9d08829f 100644 --- a/iota/transaction/creation.py +++ b/iota/transaction/creation.py @@ -351,7 +351,7 @@ def finalize(self): # Check that we generated a secure bundle hash. # https://github.com/iotaledger/iota.lib.py/issues/84 - if any(13 in fragment for fragment in normalize(bundle_hash)): + if any(13 in part for part in normalize(bundle_hash)): # Increment the legacy tag and try again. tail_transaction = self.tail_transaction # type: ProposedTransaction tail_transaction.increment_legacy_tag()