Esempio n. 1
0
    def test_hashing_not_equal(self):
        entity1 = Entity()
        entity2 = Entity()
        addr1 = Address(entity1)
        addr2 = Address(entity2)

        self.assertNotEqual(hash(addr1), hash(addr2))
Esempio n. 2
0
    def test_hex_display(self):
        entity = Entity()
        address = Address(entity)

        address_bytes = bytes(address)
        hex_address = binascii.hexlify(address_bytes).decode()

        self.assertEqual(hex_address, address.to_hex())
Esempio n. 3
0
    def test_hex_display(self):
        entity = Entity()
        address = Address(entity)

        address_bytes = bytes(address)
        hex_address = address_bytes.hex()

        self.assertEqual(hex_address, address.to_hex())
Esempio n. 4
0
    def test_invalid_display(self):
        entity = Entity()
        address = Address(entity)
        address_bytes = bytes(address)
        invalid_checksum = bytes([0] * Address.CHECKSUM_SIZE)
        invalid_display = base58.b58encode(address_bytes + invalid_checksum).decode()

        with self.assertRaises(ValueError):
            _ = Address(invalid_display)
Esempio n. 5
0
    def test_smart_contract(self):
        EXPECTED_DIGEST = "9ea094e71cbe846192429db3d7e8b02b649730c8b525c3268eb9ff5633c27130"
        EXPECTED_PAYLOAD = \
            "a1604000532398dd883d1990f7dad3fde6a53a53347afc2680a04748f7f15ad03cadc4d400c103e8c2000f424080" \
            "e6672a9d98da667e5dc25b2bca8acf9644a7ac0797f01cb5968abf39de011df2066c61756e636802676f00000000" \
            "000000000418c2a33af8bd2cba7fa714a840a308a217aa4483880b1ef14b4fdffe08ab956e3f4b921cec33be7c25" \
            "8cfd7025a2b9a942770e5b17758bcc4961bbdc75a0251c"

        # build the payload bytes for the transaction
        with mock.patch('random.getrandbits') as mock_counter:
            mock_counter.side_effect = [0]
            payload = Transaction()
        payload.from_address = IDENTITIES[0]
        payload.add_signer(IDENTITIES[0])
        payload.charge_rate = 1000
        payload.charge_limit = 1000000
        payload.target_contract(Address(IDENTITIES[4]), BitVector())
        payload.action = 'launch'
        payload.data = 'go'.encode('ascii')

        # sign the final transaction
        payload.sign(ENTITIES[0])
        transaction_bytes = transaction.encode_transaction(payload)

        self.assertIsExpectedTx(payload, transaction_bytes, EXPECTED_PAYLOAD)

        # attempt to decode a transaction from the generated bytes
        buffer = io.BytesIO(transaction_bytes)
        success, tx = transaction.decode_transaction(buffer)

        self.assertTrue(success)
        self.assertTxAreEqual(payload, tx)

        # Check payload digest
        self.assertEqual(sha256_hex(payload.encode_payload()), EXPECTED_DIGEST)
Esempio n. 6
0
    def test_construction_from_identity(self):
        entity = Entity()
        address = Address(entity)

        # manually compute the address value
        expected_address_bytes, expected_display = _calc_address(entity.public_key_bytes)

        self.assertEqual(expected_address_bytes, bytes(address))
        self.assertEqual(expected_display, str(address))
Esempio n. 7
0
    def test_construction_from_string(self):
        entity = Entity()

        # manually compute the address value
        expected_address_bytes, expected_display = _calc_address(entity.public_key_bytes)

        # re-create the address from the display string
        address = Address(expected_display)

        self.assertEqual(bytes(address), expected_address_bytes)
        self.assertEqual(str(address), expected_display)
Esempio n. 8
0
    def test_synergetic_data_submission(self):
        EXPECTED_DIGEST = "261ba516c9b7b4d3ecb39f349dbb0a35db0d9fc362f2b9cc81c7d844be4d0081"
        EXPECTED_PAYLOAD = \
            "a160c000532398dd883d1990f7dad3fde6a53a53347afc2680a04748f7f15ad03cadc4d4c1271001c3000000e8d4" \
            "a5100080e6672a9d98da667e5dc25b2bca8acf9644a7ac0797f01cb5968abf39de011df204646174610f7b227661" \
            "6c7565223a20313233347d00000000000000000418c2a33af8bd2cba7fa714a840a308a217aa4483880b1ef14b4f" \
            "dffe08ab956e3f4b921cec33be7c258cfd7025a2b9a942770e5b17758bcc4961bbdc75a0251c"

        # build the payload bytes for the transaction
        with mock.patch('random.getrandbits') as mock_counter:
            mock_counter.side_effect = [0]
            payload = Transaction()

        payload.from_address = IDENTITIES[0]
        payload.valid_until = 10000
        payload.target_synergetic_data(Address(IDENTITIES[4]), BitVector())
        payload.charge_rate = 1
        payload.charge_limit = 1000000000000
        payload.action = 'data'
        payload.data = json.dumps({'value': 1234}).encode('ascii')
        payload.add_signer(IDENTITIES[0])

        # sign the final transaction
        payload.sign(ENTITIES[0])

        transaction_bytes = transaction.encode_transaction(payload)
        self.assertIsExpectedTx(payload, transaction_bytes, EXPECTED_PAYLOAD)

        # attempt to decode a transaction from the generated bytes
        buffer = io.BytesIO(transaction_bytes)
        success, tx = transaction.decode_transaction(buffer)

        self.assertTrue(success)
        self.assertTxAreEqual(payload, tx)

        # Check payload digest
        self.assertEqual(sha256_hex(payload.encode_payload()), EXPECTED_DIGEST)
Esempio n. 9
0
 def test_not_equal(self):
     addr1 = Address(bytes(range(32)))
     addr2 = Address(bytes(range(1, 33)))
     self.assertTrue(addr1 != addr2)
Esempio n. 10
0
 def test_invalid_length_bytes(self):
     with self.assertRaises(ValueError):
         _ = Address(bytes())
Esempio n. 11
0
 def test_invalid_type(self):
     with self.assertRaises(RuntimeError):
         _ = Address(int(42))
Esempio n. 12
0
 def test_invalid_length_string(self):
     with self.assertRaises(RuntimeError):
         _ = Address(str())
Esempio n. 13
0
    def test_construction_from_address(self):
        entity = Entity()
        address1 = Address(entity)
        address2 = Address(address1)

        self.assertEqual(bytes(address1), bytes(address2))
Esempio n. 14
0
    def test_construction_from_bytes(self):
        dummy_address = bytes(list(range(32)))
        address = Address(dummy_address)

        self.assertEqual(dummy_address, bytes(address))
Esempio n. 15
0
 def test_invalid_type(self):
     with self.assertRaises(ValueError):
         _ = Address(42)
Esempio n. 16
0
    def test_equality(self):
        entity = Entity()
        addr1 = Address(entity)
        addr2 = Address(entity)

        self.assertEqual(addr1, addr2)
Esempio n. 17
0
    def test_hashing_equal(self):
        entity = Entity()
        addr1 = Address(entity)
        addr2 = Address(entity)

        self.assertEqual(hash(addr1), hash(addr2))