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)
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
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