mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2024-12-25 23:49:31 -05:00
50ed74319f
- Make it the same for Alice and Bob. - Make it contain a wallet client instead of the `Monero` struct. Also: Remove `Container` from inside `Monero` struct. The caller of `new` can simply ensure that `Container` is not dropped to keep the container alive. This makes the `Monero` struct easier to work with, as it just holds the data necessary to create the different clients created during `init`, and does not have any lifetime restrictions.
89 lines
2.2 KiB
Rust
89 lines
2.2 KiB
Rust
use monero_harness::Monero;
|
|
use spectral::prelude::*;
|
|
use testcontainers::clients::Cli;
|
|
|
|
#[tokio::test]
|
|
async fn wallet_and_accounts() {
|
|
let tc = Cli::default();
|
|
let (monero, _container) = Monero::new(&tc);
|
|
let cli = monero.miner_wallet_rpc_client();
|
|
|
|
println!("creating wallet ...");
|
|
|
|
let _ = cli
|
|
.create_wallet("wallet")
|
|
.await
|
|
.expect("failed to create wallet");
|
|
|
|
let got = cli.get_balance(0).await.expect("failed to get balance");
|
|
let want = 0;
|
|
|
|
assert_that!(got).is_equal_to(want);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn create_account_and_retrieve_it() {
|
|
let tc = Cli::default();
|
|
let (monero, _container) = Monero::new(&tc);
|
|
let cli = monero.miner_wallet_rpc_client();
|
|
|
|
let label = "Iron Man"; // This is intentionally _not_ Alice or Bob.
|
|
|
|
let _ = cli
|
|
.create_wallet("wallet")
|
|
.await
|
|
.expect("failed to create wallet");
|
|
|
|
let _ = cli
|
|
.create_account(label)
|
|
.await
|
|
.expect("failed to create account");
|
|
|
|
let mut found: bool = false;
|
|
let accounts = cli
|
|
.get_accounts("") // Empty filter.
|
|
.await
|
|
.expect("failed to get accounts");
|
|
for account in accounts.subaddress_accounts {
|
|
if account.label == label {
|
|
found = true;
|
|
}
|
|
}
|
|
assert!(found);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn transfer_and_check_tx_key() {
|
|
let fund_alice = 1_000_000_000_000;
|
|
let fund_bob = 0;
|
|
|
|
let tc = Cli::default();
|
|
let (monero, _container) = Monero::new(&tc);
|
|
let _ = monero.init(fund_alice, fund_bob).await;
|
|
|
|
let address_bob = monero
|
|
.bob_wallet_rpc_client()
|
|
.get_address(0)
|
|
.await
|
|
.expect("failed to get Bob's address")
|
|
.address;
|
|
|
|
let transfer_amount = 100;
|
|
let transfer = monero
|
|
.alice_wallet_rpc_client()
|
|
.transfer(0, transfer_amount, &address_bob)
|
|
.await
|
|
.expect("transfer failed");
|
|
|
|
let tx_id = transfer.tx_hash;
|
|
let tx_key = transfer.tx_key;
|
|
|
|
let cli = monero.miner_wallet_rpc_client();
|
|
let res = cli
|
|
.check_tx_key(&tx_id, &tx_key, &address_bob)
|
|
.await
|
|
.expect("failed to check tx by key");
|
|
|
|
assert_that!(res.received).is_equal_to(transfer_amount);
|
|
}
|