Skip to content

Commit f0ce6d9

Browse files
committed
Add test for send_all_to_address behavior
1 parent 442b24c commit f0ce6d9

File tree

1 file changed

+54
-11
lines changed

1 file changed

+54
-11
lines changed

tests/integration_tests_rust.rs

+54-11
Original file line numberDiff line numberDiff line change
@@ -271,26 +271,45 @@ fn start_stop_reinit() {
271271
#[test]
272272
fn onchain_spend_receive() {
273273
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
274-
let chain_source = TestChainSource::Esplora(&electrsd);
274+
let chain_source = TestChainSource::BitcoindRpc(&bitcoind);
275275
let (node_a, node_b) = setup_two_nodes(&chain_source, false, true, false);
276276

277277
let addr_a = node_a.onchain_payment().new_address().unwrap();
278278
let addr_b = node_b.onchain_payment().new_address().unwrap();
279279

280+
let premine_amount_sat = 1_100_000;
280281
premine_and_distribute_funds(
281282
&bitcoind.client,
282283
&electrsd.client,
283-
vec![addr_b.clone()],
284-
Amount::from_sat(100000),
284+
vec![addr_a.clone(), addr_b.clone()],
285+
Amount::from_sat(premine_amount_sat),
285286
);
286287

287288
node_a.sync_wallets().unwrap();
288289
node_b.sync_wallets().unwrap();
289-
assert_eq!(node_b.list_balances().spendable_onchain_balance_sats, 100000);
290+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, premine_amount_sat);
291+
assert_eq!(node_b.list_balances().spendable_onchain_balance_sats, premine_amount_sat);
292+
293+
let channel_amount_sat = 1_000_000;
294+
let reserve_amount_sat = 25_000;
295+
open_channel(&node_b, &node_a, channel_amount_sat, true, &electrsd);
296+
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
297+
298+
node_a.sync_wallets().unwrap();
299+
node_b.sync_wallets().unwrap();
300+
expect_channel_ready_event!(node_a, node_b.node_id());
301+
expect_channel_ready_event!(node_b, node_a.node_id());
302+
303+
let node_a_balance = premine_amount_sat - reserve_amount_sat;
304+
let node_b_balance_lower = premine_amount_sat - channel_amount_sat - reserve_amount_sat - 1000;
305+
let node_b_balance_upper = premine_amount_sat - channel_amount_sat - reserve_amount_sat;
306+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, node_a_balance);
307+
assert!(node_b.list_balances().spendable_onchain_balance_sats > node_b_balance_lower);
308+
assert!(node_b.list_balances().spendable_onchain_balance_sats < node_b_balance_upper);
290309

291310
assert_eq!(
292311
Err(NodeError::InsufficientFunds),
293-
node_a.onchain_payment().send_to_address(&addr_b, 1000)
312+
node_a.onchain_payment().send_to_address(&addr_b, node_a_balance + 1)
294313
);
295314

296315
let txid = node_b.onchain_payment().send_to_address(&addr_a, 1000).unwrap();
@@ -300,9 +319,28 @@ fn onchain_spend_receive() {
300319
node_a.sync_wallets().unwrap();
301320
node_b.sync_wallets().unwrap();
302321

303-
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, 1000);
304-
assert!(node_b.list_balances().spendable_onchain_balance_sats > 98000);
305-
assert!(node_b.list_balances().spendable_onchain_balance_sats < 100000);
322+
let node_a_balance = node_a_balance + 1000;
323+
let node_b_balance_lower = node_b_balance_lower - 1000;
324+
let node_b_balance_upper = node_b_balance_upper - 1000;
325+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, node_a_balance);
326+
assert!(node_b.list_balances().spendable_onchain_balance_sats > node_b_balance_lower);
327+
assert!(node_b.list_balances().spendable_onchain_balance_sats < node_b_balance_upper);
328+
329+
let addr_b = node_b.onchain_payment().new_address().unwrap();
330+
let txid = node_a.onchain_payment().send_all_to_address(&addr_b, true).unwrap();
331+
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
332+
wait_for_tx(&electrsd.client, txid);
333+
334+
node_a.sync_wallets().unwrap();
335+
node_b.sync_wallets().unwrap();
336+
337+
let node_b_balance_lower = node_b_balance_lower + node_a_balance;
338+
let node_b_balance_upper = node_b_balance_upper + node_a_balance;
339+
let node_a_balance = 0;
340+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, node_a_balance);
341+
assert_eq!(node_a.list_balances().total_onchain_balance_sats, reserve_amount_sat);
342+
assert!(node_b.list_balances().spendable_onchain_balance_sats > node_b_balance_lower);
343+
assert!(node_b.list_balances().spendable_onchain_balance_sats < node_b_balance_upper);
306344

307345
let addr_b = node_b.onchain_payment().new_address().unwrap();
308346
let txid = node_a.onchain_payment().send_all_to_address(&addr_b, false).unwrap();
@@ -312,9 +350,14 @@ fn onchain_spend_receive() {
312350
node_a.sync_wallets().unwrap();
313351
node_b.sync_wallets().unwrap();
314352

315-
assert_eq!(node_a.list_balances().total_onchain_balance_sats, 0);
316-
assert!(node_b.list_balances().spendable_onchain_balance_sats > 99000);
317-
assert!(node_b.list_balances().spendable_onchain_balance_sats < 100000);
353+
let node_b_balance_lower = node_b_balance_lower + reserve_amount_sat;
354+
let node_b_balance_upper = node_b_balance_upper + reserve_amount_sat;
355+
let node_a_balance = 0;
356+
357+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, node_a_balance);
358+
assert_eq!(node_a.list_balances().total_onchain_balance_sats, node_a_balance);
359+
assert!(node_b.list_balances().spendable_onchain_balance_sats > node_b_balance_lower);
360+
assert!(node_b.list_balances().spendable_onchain_balance_sats < node_b_balance_upper);
318361
}
319362

320363
#[test]

0 commit comments

Comments
 (0)