def test_refund_metadata_from_event(): from_sub_address = "8f8b82153010a1bd" to_sub_address = "111111153010a111" reference_event_seq = 324 metadata = txnmetadata.general_metadata( utils.sub_address(from_sub_address), utils.sub_address(to_sub_address)) event = jsonrpc.Event( data=jsonrpc.EventData(metadata=metadata.hex(), ), sequence_number=reference_event_seq, ) ret = txnmetadata.refund_metadata_from_event(event) assert ret is not None gm = diem_types.Metadata__GeneralMetadata.bcs_deserialize(ret) assert gm is not None assert gm.value.value.from_subaddress.hex() == to_sub_address assert gm.value.value.to_subaddress.hex() == from_sub_address assert int(gm.value.value.referenced_event) == reference_event_seq
def test_intent_identifier(): child_vasp_address = "d738a0b9851305dfe1d17707f0841dbc" user_sub_address = "9072d012034a880f" currency_code = "XUS" amount = 10_000_000 account_id = identifier.encode_account( child_vasp_address, utils.sub_address(user_sub_address), identifier.TDM # testnet HRP ) intent_id = identifier.encode_intent(account_id, currency_code, amount) assert intent_id == "diem://tdm1p6uu2pwv9zvzalcw3wurlppqahjg895qjqd9gsrcr9dqh8?c=XUS&am=10000000"
def test_sub_address(): with pytest.raises(InvalidSubAddressError): utils.sub_address(bytes.fromhex("aa")) assert utils.sub_address(bytes.fromhex("aaaaaaaaaaaaaaaa")) is not None with pytest.raises(InvalidSubAddressError): utils.sub_address("aa") sub_address = utils.sub_address("aaaaaaaaaaaaaaaa") assert sub_address is not None assert isinstance(sub_address, bytes)
def test_encode_addr_success(hrp_addresses): hrp, enocded_addr_with_none_subaddr, enocded_addr_with_subaddr = hrp_addresses # test with none sub_address enocded_addr = identifier.encode_account(test_onchain_address, None, hrp) assert enocded_addr == enocded_addr_with_none_subaddr # even with zero sub_address, expected should not change from above enocded_addr = identifier.encode_account(test_onchain_address, zero_sub_address, hrp) assert enocded_addr == enocded_addr_with_none_subaddr # test with some subaddress enocded_addr = identifier.encode_account(test_onchain_address, test_sub_address, hrp) assert enocded_addr == enocded_addr_with_subaddr # accept AccountAddress and bytes sub-address as params too enocded_addr = identifier.encode_account( utils.account_address(test_onchain_address), utils.sub_address(test_sub_address), hrp ) assert enocded_addr == enocded_addr_with_subaddr
def test_process_incoming_general_txn() -> None: account = create_account("fake_account") sender_addr = "46db232847705e05525db0336fd9f337" subaddr = generate_new_subaddress(account.id) meta = general_metadata(to_subaddress=sub_address(subaddr)) process_incoming_transaction( sender_address=sender_addr, receiver_address="lrw_vasp", sequence=1, amount=100, currency=DiemCurrency.XUS, metadata=diem_types.Metadata__GeneralMetadata.bcs_deserialize(meta), blockchain_version=1, ) # successfully parse meta and sequence tx = storage.get_transaction_by_details(source_address=sender_addr, source_subaddress=None, sequence=1) assert tx is not None
def test_new_general_metadata_from_to_sub_address(): from_sub_address = utils.sub_address("8f8b82153010a1bd") to_sub_address = utils.sub_address("111111153010a111") ret = txnmetadata.general_metadata(from_sub_address, to_sub_address) assert ret.hex() == "01000108111111153010a11101088f8b82153010a1bd00"
def test_new_general_metadata_to_sub_address(): sub_address = utils.sub_address("8f8b82153010a1bd") ret = txnmetadata.general_metadata(None, sub_address) assert ret.hex() == "010001088f8b82153010a1bd0000"