Exemplo n.º 1
0
def verify_kyc(user_id: int) -> None:
    user = get_user(user_id)
    if _is_verified(user):
        user_service.update_user(
            user_id=user_id, registration_status=RegistrationStatus.Approved)

    if user.first_name == "doctor" and user.last_name == "evil":
        user_service.update_user(
            user_id=user_id, registration_status=RegistrationStatus.Rejected)
    else:
        user_service.update_user(
            user_id=user_id, registration_status=RegistrationStatus.Approved)
        account_service.create_account(account_name=f"{user.username}-account",
                                       user_id=user.id)
Exemplo n.º 2
0
def setup_inventory_account():
    inventory_account = get_account(account_name=INVENTORY_ACCOUNT_NAME)
    if inventory_account:
        return

    create_account(account_name=INVENTORY_ACCOUNT_NAME)

    currency_pairs = [
        CurrencyPairs[f"{Currency.Coin1}_{INVENTORY_COVER_CURRENCY}"],
    ]

    for currency_pair in currency_pairs:
        retries = 10
        polling_interval_s = 2

        for _ in range(retries):
            try:
                buy_funds(currency_pair)

            except Exception as e:
                logger.exception("trade and execute quote failed")
                time.sleep(polling_interval_s)
Exemplo n.º 3
0
def test_process_incoming_travel_rule_txn() -> None:
    account = create_account("fake_account")
    sender_addr = "46db232847705e05525db0336fd9f337"
    receiver_addr = "lrw_vasp"
    sender_subaddr = generate_new_subaddress(account.id)
    amount = 1000 * 1_000_000
    sender = account_address(sender_addr)
    sequence = 1
    currency = DiemCurrency.XUS
    blockchain_version = 1

    off_chain_reference_id = "off_chain_reference_id"
    metadata, _ = travel_rule(off_chain_reference_id, sender, amount)

    storage.add_transaction(
        amount=amount,
        currency=currency,
        payment_type=TransactionType.OFFCHAIN,
        status=TransactionStatus.OFF_CHAIN_READY,
        source_id=account.id,
        source_address=sender_addr,
        source_subaddress=sender_subaddr,
        destination_address=receiver_addr,
        reference_id=off_chain_reference_id,
    )

    process_incoming_transaction(
        sender_address=sender_addr,
        receiver_address=receiver_addr,
        sequence=sequence,
        amount=amount,
        currency=currency,
        metadata=diem_types.Metadata__TravelRuleMetadata.bcs_deserialize(
            metadata),
        blockchain_version=blockchain_version,
    )

    # successfully parse meta and sequence
    tx = storage.get_transaction_by_details(source_address=sender_addr,
                                            source_subaddress=sender_subaddr,
                                            sequence=sequence)
    assert tx is not None
    assert tx.sequence == sequence
    assert tx.blockchain_version == blockchain_version
Exemplo n.º 4
0
def test_process_incoming_refund_txn() -> None:
    initial_sender_account = create_account("fake_account")
    initial_sender_subaddr = generate_new_subaddress(initial_sender_account.id)
    initial_sender_addr = "lrw_vasp"
    initial_receiver_addr = "46db232847705e05525db0336fd9f337"

    meta = refund_metadata(
        original_transaction_version=1,
        reason=diem_types.RefundReason__InvalidSubaddress(),
    )

    initial_tx = storage.add_transaction(
        amount=500,
        currency=DiemCurrency.XUS,
        payment_type=TransactionType.EXTERNAL,
        status=TransactionStatus.COMPLETED,
        source_id=initial_sender_account.id,
        source_address=initial_sender_addr,
        source_subaddress=initial_sender_subaddr,
        destination_address=initial_receiver_addr,
        blockchain_version=1,
    )

    assert initial_tx is not None
    assert initial_tx.blockchain_version == 1
    assert storage.get_transaction_by_blockchain_version(1) is not None

    process_incoming_transaction(
        sender_address=initial_receiver_addr,
        receiver_address=initial_sender_addr,
        sequence=1,
        amount=500,
        currency=DiemCurrency.XUS,
        metadata=diem_types.Metadata__RefundMetadata.bcs_deserialize(meta),
        blockchain_version=2,
    )

    tx = storage.get_transaction_by_blockchain_version(2)
    assert tx is not None
    assert tx.type == TransactionType.REFUND
    assert tx.original_txn_id == initial_tx.id
Exemplo n.º 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
Exemplo n.º 6
0
def test_subaddr_map() -> None:
    account = create_account(account_name="fake_account")

    subaddr = generate_new_subaddress(account.id)

    assert get_account_id_from_subaddr(subaddr) == account.id