Skip to content

Commit 91da460

Browse files
committed
Add test for send_all_to_address behavior
1 parent f33a69c commit 91da460

File tree

1 file changed

+58
-11
lines changed

1 file changed

+58
-11
lines changed

tests/integration_tests_rust.rs

+58-11
Original file line numberDiff line numberDiff line change
@@ -277,32 +277,74 @@ fn onchain_spend_receive() {
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 onchain_fee_buffer_sat = 1000;
304+
let expected_node_a_balance = premine_amount_sat - reserve_amount_sat;
305+
let expected_node_b_balance_lower =
306+
premine_amount_sat - channel_amount_sat - reserve_amount_sat - onchain_fee_buffer_sat;
307+
let expected_node_b_balance_upper =
308+
premine_amount_sat - channel_amount_sat - reserve_amount_sat;
309+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, expected_node_a_balance);
310+
assert!(node_b.list_balances().spendable_onchain_balance_sats > expected_node_b_balance_lower);
311+
assert!(node_b.list_balances().spendable_onchain_balance_sats < expected_node_b_balance_upper);
290312

291313
assert_eq!(
292314
Err(NodeError::InsufficientFunds),
293-
node_a.onchain_payment().send_to_address(&addr_b, 1000)
315+
node_a.onchain_payment().send_to_address(&addr_b, expected_node_a_balance + 1)
294316
);
295317

296-
let txid = node_b.onchain_payment().send_to_address(&addr_a, 1000).unwrap();
318+
let amount_to_send_sats = 1000;
319+
let txid = node_b.onchain_payment().send_to_address(&addr_a, amount_to_send_sats).unwrap();
320+
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
321+
wait_for_tx(&electrsd.client, txid);
322+
323+
node_a.sync_wallets().unwrap();
324+
node_b.sync_wallets().unwrap();
325+
326+
let expected_node_a_balance = expected_node_a_balance + amount_to_send_sats;
327+
let expected_node_b_balance_lower = expected_node_b_balance_lower - amount_to_send_sats;
328+
let expected_node_b_balance_upper = expected_node_b_balance_upper - amount_to_send_sats;
329+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, expected_node_a_balance);
330+
assert!(node_b.list_balances().spendable_onchain_balance_sats > expected_node_b_balance_lower);
331+
assert!(node_b.list_balances().spendable_onchain_balance_sats < expected_node_b_balance_upper);
332+
333+
let addr_b = node_b.onchain_payment().new_address().unwrap();
334+
let txid = node_a.onchain_payment().send_all_to_address(&addr_b, true).unwrap();
297335
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
298336
wait_for_tx(&electrsd.client, txid);
299337

300338
node_a.sync_wallets().unwrap();
301339
node_b.sync_wallets().unwrap();
302340

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);
341+
let expected_node_b_balance_lower = expected_node_b_balance_lower + expected_node_a_balance;
342+
let expected_node_b_balance_upper = expected_node_b_balance_upper + expected_node_a_balance;
343+
let expected_node_a_balance = 0;
344+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, expected_node_a_balance);
345+
assert_eq!(node_a.list_balances().total_onchain_balance_sats, reserve_amount_sat);
346+
assert!(node_b.list_balances().spendable_onchain_balance_sats > expected_node_b_balance_lower);
347+
assert!(node_b.list_balances().spendable_onchain_balance_sats < expected_node_b_balance_upper);
306348

307349
let addr_b = node_b.onchain_payment().new_address().unwrap();
308350
let txid = node_a.onchain_payment().send_all_to_address(&addr_b, false).unwrap();
@@ -312,9 +354,14 @@ fn onchain_spend_receive() {
312354
node_a.sync_wallets().unwrap();
313355
node_b.sync_wallets().unwrap();
314356

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);
357+
let expected_node_b_balance_lower = expected_node_b_balance_lower + reserve_amount_sat;
358+
let expected_node_b_balance_upper = expected_node_b_balance_upper + reserve_amount_sat;
359+
let expected_node_a_balance = 0;
360+
361+
assert_eq!(node_a.list_balances().spendable_onchain_balance_sats, expected_node_a_balance);
362+
assert_eq!(node_a.list_balances().total_onchain_balance_sats, expected_node_a_balance);
363+
assert!(node_b.list_balances().spendable_onchain_balance_sats > expected_node_b_balance_lower);
364+
assert!(node_b.list_balances().spendable_onchain_balance_sats < expected_node_b_balance_upper);
318365
}
319366

320367
#[test]

0 commit comments

Comments
 (0)