def test_deposit_completed(dbsession, eth_network_id, eth_service: MockEthereumService, eth_asset_id, topped_up_user, captured_registry_events):
    """We receive completed event on deposit."""

    with transaction.manager:
        user_address = dbsession.query(UserCryptoAddress).first()
        do_faux_deposit(user_address.address, eth_asset_id, 10)

    eth_service.run_test_ops()

    # We get performed event on
    events = captured_registry_events
    assert len(events) == 3
    assert isinstance(events[0], CryptoOperationPerformed)
    assert isinstance(events[1], IncomingCryptoDeposit)
    assert isinstance(events[2], CryptoOperationCompleted)
Beispiel #2
0
def give_eth(event):
    """Feed user some test ETH from coinbase."""
    user = event.user

    # TODO: Rework this
    from websauna.wallet.tests.eth.utils import send_balance_to_address, do_faux_deposit

    amount = event.network.other_data["initial_assets"].get("eth_amount")
    if not amount:
        return

    # Supply eth from coinbase
    address = bin_to_eth_address(event.address.address)
    if event.web3:
        txid = send_balance_to_address(event.web3, address, Decimal(amount))
    else:
        # MockEthreumService test
        dbsession = Session.object_session(event.address)
        network = event.address.network
        asset = get_ether_asset(dbsession, network)
        op = do_faux_deposit(event.address, asset.id, Decimal(amount))
        txid = bin_to_txid(op.txid)

    # Record this operation in user data so we can verify it later
    op_txs = user.user_data.get("starter_asset_txs", [])
    op_txs.append({"eth": txid})
    user.user_data["starter_asset_txs"] = op_txs
Beispiel #3
0
def give_toybox(event):
    from websauna.wallet.tests.eth.utils import send_balance_to_address, do_faux_deposit

    user = event.user

    toybox = get_toy_box(event.network)
    if not toybox:
        return

    amount = event.network.other_data["initial_assets"].get("toybox_amount")
    if not amount:
        return

    if not event.web3:
        # MockEthreumService test shortcut
        dbsession = Session.object_session(event.address)
        network = event.address.network
        house_holdings = get_house_holdings(toybox)
        op = do_faux_deposit(event.address, house_holdings.account.asset.id, Decimal(amount))
    else:
        # Generate initial operation to supply the user
        house_holdings = get_house_holdings(toybox)
        op = house_holdings.withdraw(Decimal(amount), event.address.address, "Starter assets for user {}".format(user.friendly_name))

        # Generate op.id
        dbsession = Session.object_session(user)
        dbsession.flush()

    assert op.id

    # Record this operation in user data so we can verify it later
    op_txs = user.user_data.get("starter_asset_txs", [])
    op_txs.append({"toybox": str(op.id)})
    user.user_data["starter_asset_txs"] = op_txs
Beispiel #4
0
def test_deposit_completed(dbsession, eth_network_id,
                           eth_service: MockEthereumService, eth_asset_id,
                           topped_up_user, captured_registry_events):
    """We receive completed event on deposit."""

    with transaction.manager:
        user_address = dbsession.query(UserCryptoAddress).first()
        do_faux_deposit(user_address.address, eth_asset_id, 10)

    eth_service.run_test_ops()

    # We get performed event on
    events = captured_registry_events
    assert len(events) == 3
    assert isinstance(events[0], CryptoOperationPerformed)
    assert isinstance(events[1], IncomingCryptoDeposit)
    assert isinstance(events[2], CryptoOperationCompleted)