Skip to content

Commit 87d4720

Browse files
committed
test drain_to_begin with dry_run=false
1 parent fce0ee2 commit 87d4720

2 files changed

Lines changed: 33 additions & 3 deletions

File tree

src/wallet/test/drain_to.rs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ fn fail() {
206206
fn reservation_interaction() {
207207
initialize();
208208

209-
// wallet with several vanilla UTXOs so send_btc_begin can reserve a subset
209+
// wallet with several vanilla UTXOs so they can be reserved
210210
let (mut wallet, online) = get_empty_wallet!();
211211
for _ in 0..3 {
212212
fund_wallet(test_get_address(&mut wallet));
@@ -216,6 +216,32 @@ fn reservation_interaction() {
216216
let (mut rcv_wallet, _rcv_online) = get_empty_wallet!();
217217
let (mut drain_wallet, _drain_online) = get_empty_wallet!();
218218

219+
// reserve all vanilla UTXO via drain_to_begin(dry_run=false)
220+
let psbt = wallet
221+
.drain_to_begin(online, test_get_address(&mut rcv_wallet), FEE_RATE, false)
222+
.unwrap();
223+
224+
// check send_btc cannot spend the reserved UTXOs
225+
let res = wallet.send_btc_begin(
226+
online,
227+
test_get_address(&mut rcv_wallet),
228+
1000,
229+
FEE_RATE,
230+
true,
231+
false,
232+
);
233+
assert_matches!(
234+
res,
235+
Err(Error::InsufficientBitcoins {
236+
needed: _,
237+
available: _
238+
})
239+
);
240+
241+
// cancel pending drain_to to unlock the reserved inputs
242+
let txid = Psbt::from_str(&psbt).unwrap().get_txid().to_string();
243+
wallet.abort_pending_vanilla_tx(txid).unwrap();
244+
219245
// reserve one (or more) vanilla UTXO via send_btc_begin(dry_run=false)
220246
let send_psbt_str = wallet
221247
.send_btc_begin(

src/wallet/test/send_btc.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,10 +427,14 @@ fn send_btc_end_twice() {
427427

428428
// prepare PSBT
429429
let address = test_get_address(&mut wallet);
430-
let unsigned_psbt = wallet.send_btc_begin(online, address, 1000, FEE_RATE, false, false).unwrap();
430+
let unsigned_psbt = wallet
431+
.send_btc_begin(online, address, 1000, FEE_RATE, false, false)
432+
.unwrap();
431433
let signed_psbt = wallet.sign_psbt(unsigned_psbt, None).unwrap();
432434

433435
// call send_btc_end twice with the same PSBT, which should work (idempotent)
434-
wallet.send_btc_end(online, signed_psbt.clone(), false).unwrap();
436+
wallet
437+
.send_btc_end(online, signed_psbt.clone(), false)
438+
.unwrap();
435439
wallet.send_btc_end(online, signed_psbt, false).unwrap();
436440
}

0 commit comments

Comments
 (0)