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
示例#2
0
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)
示例#4
0
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
示例#5
0
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"