Skip to content

Commit b0f8d6c

Browse files
committed
Add test for send_all_to_address behavior
1 parent 156a970 commit b0f8d6c

File tree

1 file changed

+53
-10
lines changed

1 file changed

+53
-10
lines changed

tests/integration_tests_rust.rs

+53-10
Original file line numberDiff line numberDiff line change
@@ -258,20 +258,39 @@ fn onchain_spend_receive() {
258258
let addr_a = node_a.onchain_payment().new_address().unwrap();
259259
let addr_b = node_b.onchain_payment().new_address().unwrap();
260260

261+
let premine_amount_sat = 1_100_000;
261262
premine_and_distribute_funds(
262263
&bitcoind.client,
263264
&electrsd.client,
264-
vec![addr_b.clone()],
265-
Amount::from_sat(100000),
265+
vec![addr_a.clone(), addr_b.clone()],
266+
Amount::from_sat(premine_amount_sat),
266267
);
267268

268269
node_a.sync_wallets().unwrap();
269270
node_b.sync_wallets().unwrap();
270-
assert_eq!(node_b.list_balances().spendable_onchain_balance_sats, 100000);
271+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, premine_amount_sat);
272+
assert_eq!(node_b.list_balances().spendable_onchain_balance_sats, premine_amount_sat);
273+
274+
let channel_amount_sat = 1_000_000;
275+
let reserve_amount_sat = 25_000;
276+
open_channel(&node_b, &node_a, channel_amount_sat, true, &electrsd);
277+
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
278+
279+
node_a.sync_wallets().unwrap();
280+
node_b.sync_wallets().unwrap();
281+
expect_channel_ready_event!(node_a, node_b.node_id());
282+
expect_channel_ready_event!(node_b, node_a.node_id());
283+
284+
let node_a_balance = premine_amount_sat - reserve_amount_sat;
285+
let node_b_balance_lower = premine_amount_sat - channel_amount_sat - reserve_amount_sat - 1000;
286+
let node_b_balance_upper = premine_amount_sat - channel_amount_sat - reserve_amount_sat;
287+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, node_a_balance);
288+
assert!(node_b.list_balances().spendable_onchain_balance_sats > node_b_balance_lower);
289+
assert!(node_b.list_balances().spendable_onchain_balance_sats < node_b_balance_upper);
271290

272291
assert_eq!(
273292
Err(NodeError::InsufficientFunds),
274-
node_a.onchain_payment().send_to_address(&addr_b, 1000)
293+
node_a.onchain_payment().send_to_address(&addr_b, node_a_balance + 1)
275294
);
276295

277296
let txid = node_b.onchain_payment().send_to_address(&addr_a, 1000).unwrap();
@@ -281,9 +300,28 @@ fn onchain_spend_receive() {
281300
node_a.sync_wallets().unwrap();
282301
node_b.sync_wallets().unwrap();
283302

284-
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, 1000);
285-
assert!(node_b.list_balances().spendable_onchain_balance_sats > 98000);
286-
assert!(node_b.list_balances().spendable_onchain_balance_sats < 100000);
303+
let node_a_balance = node_a_balance + 1000;
304+
let node_b_balance_lower = node_b_balance_lower - 1000;
305+
let node_b_balance_upper = node_b_balance_upper - 1000;
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);
309+
310+
let addr_b = node_b.onchain_payment().new_address().unwrap();
311+
let txid = node_a.onchain_payment().send_all_to_address(&addr_b, true).unwrap();
312+
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
313+
wait_for_tx(&electrsd.client, txid);
314+
315+
node_a.sync_wallets().unwrap();
316+
node_b.sync_wallets().unwrap();
317+
318+
let node_b_balance_lower = node_b_balance_lower + node_a_balance;
319+
let node_b_balance_upper = node_b_balance_upper + node_a_balance;
320+
let node_a_balance = 0;
321+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, node_a_balance);
322+
assert_eq!(node_a.list_balances().total_onchain_balance_sats, reserve_amount_sat);
323+
assert!(node_b.list_balances().spendable_onchain_balance_sats > node_b_balance_lower);
324+
assert!(node_b.list_balances().spendable_onchain_balance_sats < node_b_balance_upper);
287325

288326
let addr_b = node_b.onchain_payment().new_address().unwrap();
289327
let txid = node_a.onchain_payment().send_all_to_address(&addr_b, false).unwrap();
@@ -293,9 +331,14 @@ fn onchain_spend_receive() {
293331
node_a.sync_wallets().unwrap();
294332
node_b.sync_wallets().unwrap();
295333

296-
assert_eq!(node_a.list_balances().total_onchain_balance_sats, 0);
297-
assert!(node_b.list_balances().spendable_onchain_balance_sats > 99000);
298-
assert!(node_b.list_balances().spendable_onchain_balance_sats < 100000);
334+
let node_b_balance_lower = node_b_balance_lower + reserve_amount_sat;
335+
let node_b_balance_upper = node_b_balance_upper + reserve_amount_sat;
336+
let node_a_balance = 0;
337+
338+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, node_a_balance);
339+
assert_eq!(node_a.list_balances().total_onchain_balance_sats, node_a_balance);
340+
assert!(node_b.list_balances().spendable_onchain_balance_sats > node_b_balance_lower);
341+
assert!(node_b.list_balances().spendable_onchain_balance_sats < node_b_balance_upper);
299342
}
300343

301344
#[test]

0 commit comments

Comments
 (0)