Skip to content

Commit 28d8061

Browse files
committed
test(wallet): fix test descriptor getters
- `get_funded_wallet` requires two descriptors - `get_funded_wallet_single` returns a single-descriptor wallet
1 parent 3135e29 commit 28d8061

File tree

3 files changed

+104
-106
lines changed

3 files changed

+104
-106
lines changed

crates/wallet/src/test_utils.rs

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,18 @@ use crate::{KeychainKind, Update, Wallet};
1717
/// The funded wallet contains a tx with a 76_000 sats input and two outputs, one spending 25_000
1818
/// to a foreign address and one returning 50_000 back to the wallet. The remaining 1000
1919
/// sats are the transaction fee.
20-
pub fn get_funded_wallet_with_change(descriptor: &str, change: &str) -> (Wallet, bitcoin::Txid) {
21-
let mut wallet = Wallet::create(descriptor.to_string(), change.to_string())
20+
pub fn get_funded_wallet(descriptor: &str, change_descriptor: &str) -> (Wallet, bitcoin::Txid) {
21+
new_funded_wallet(descriptor, Some(change_descriptor))
22+
}
23+
24+
fn new_funded_wallet(descriptor: &str, change_descriptor: Option<&str>) -> (Wallet, bitcoin::Txid) {
25+
let params = if let Some(change_desc) = change_descriptor {
26+
Wallet::create(descriptor.to_string(), change_desc.to_string())
27+
} else {
28+
Wallet::create_single(descriptor.to_string())
29+
};
30+
31+
let mut wallet = params
2232
.network(Network::Regtest)
2333
.create_wallet_no_persist()
2434
.expect("descriptors must be valid");
@@ -124,36 +134,25 @@ pub fn get_funded_wallet_with_change(descriptor: &str, change: &str) -> (Wallet,
124134
/// The funded wallet contains a tx with a 76_000 sats input and two outputs, one spending 25_000
125135
/// to a foreign address and one returning 50_000 back to the wallet. The remaining 1000
126136
/// sats are the transaction fee.
127-
///
128-
/// Note: the change descriptor will have script type `p2wpkh`. If passing some other script type
129-
/// as argument, make sure you're ok with getting a wallet where the keychains have potentially
130-
/// different script types. Otherwise, use `get_funded_wallet_with_change`.
131-
pub fn get_funded_wallet(descriptor: &str) -> (Wallet, bitcoin::Txid) {
132-
let change = get_test_wpkh_change();
133-
get_funded_wallet_with_change(descriptor, change)
137+
pub fn get_funded_wallet_single(descriptor: &str) -> (Wallet, bitcoin::Txid) {
138+
new_funded_wallet(descriptor, None)
134139
}
135140

136141
/// Get funded segwit wallet
137142
pub fn get_funded_wallet_wpkh() -> (Wallet, bitcoin::Txid) {
138-
get_funded_wallet_with_change(get_test_wpkh(), get_test_wpkh_change())
143+
let (desc, change_desc) = get_test_wpkh_and_change_desc();
144+
get_funded_wallet(desc, change_desc)
139145
}
140146

141147
/// `wpkh` single key descriptor
142148
pub fn get_test_wpkh() -> &'static str {
143149
"wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)"
144150
}
145151

146-
/// `wpkh` descriptor and change descriptor
147-
pub fn get_test_wpkh_with_change_desc() -> (&'static str, &'static str) {
148-
(
149-
"wpkh(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)",
150-
get_test_wpkh_change(),
151-
)
152-
}
153-
154-
/// `wpkh` change descriptor
155-
fn get_test_wpkh_change() -> &'static str {
156-
"wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/0)"
152+
/// `wpkh` xpriv and change descriptor
153+
pub fn get_test_wpkh_and_change_desc() -> (&'static str, &'static str) {
154+
("wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)",
155+
"wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)")
157156
}
158157

159158
/// `wsh` descriptor with policy `and(pk(A),older(6))`
@@ -197,7 +196,7 @@ pub fn get_test_tr_single_sig_xprv() -> &'static str {
197196
}
198197

199198
/// taproot xpriv and change descriptor
200-
pub fn get_test_tr_single_sig_xprv_with_change_desc() -> (&'static str, &'static str) {
199+
pub fn get_test_tr_single_sig_xprv_and_change_desc() -> (&'static str, &'static str) {
201200
("tr(tprv8ZgxMBicQKsPdDArR4xSAECuVxeX1jwwSXR4ApKbkYgZiziDc4LdBy2WvJeGDfUSE4UT4hHhbgEwbdq8ajjUHiKDegkwrNU6V55CxcxonVN/0/*)",
202201
"tr(tprv8ZgxMBicQKsPdDArR4xSAECuVxeX1jwwSXR4ApKbkYgZiziDc4LdBy2WvJeGDfUSE4UT4hHhbgEwbdq8ajjUHiKDegkwrNU6V55CxcxonVN/1/*)")
203202
}

crates/wallet/tests/psbt.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const PSBT_STR: &str = "cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6
1010
#[should_panic(expected = "InputIndexOutOfRange")]
1111
fn test_psbt_malformed_psbt_input_legacy() {
1212
let psbt_bip = Psbt::from_str(PSBT_STR).unwrap();
13-
let (mut wallet, _) = get_funded_wallet(get_test_wpkh());
13+
let (mut wallet, _) = get_funded_wallet_single(get_test_wpkh());
1414
let send_to = wallet.peek_address(KeychainKind::External, 0);
1515
let mut builder = wallet.build_tx();
1616
builder.add_recipient(send_to.script_pubkey(), Amount::from_sat(10_000));
@@ -27,7 +27,7 @@ fn test_psbt_malformed_psbt_input_legacy() {
2727
#[should_panic(expected = "InputIndexOutOfRange")]
2828
fn test_psbt_malformed_psbt_input_segwit() {
2929
let psbt_bip = Psbt::from_str(PSBT_STR).unwrap();
30-
let (mut wallet, _) = get_funded_wallet(get_test_wpkh());
30+
let (mut wallet, _) = get_funded_wallet_single(get_test_wpkh());
3131
let send_to = wallet.peek_address(KeychainKind::External, 0);
3232
let mut builder = wallet.build_tx();
3333
builder.add_recipient(send_to.script_pubkey(), Amount::from_sat(10_000));
@@ -43,7 +43,7 @@ fn test_psbt_malformed_psbt_input_segwit() {
4343
#[test]
4444
#[should_panic(expected = "InputIndexOutOfRange")]
4545
fn test_psbt_malformed_tx_input() {
46-
let (mut wallet, _) = get_funded_wallet(get_test_wpkh());
46+
let (mut wallet, _) = get_funded_wallet_single(get_test_wpkh());
4747
let send_to = wallet.peek_address(KeychainKind::External, 0);
4848
let mut builder = wallet.build_tx();
4949
builder.add_recipient(send_to.script_pubkey(), Amount::from_sat(10_000));
@@ -59,7 +59,7 @@ fn test_psbt_malformed_tx_input() {
5959
#[test]
6060
fn test_psbt_sign_with_finalized() {
6161
let psbt_bip = Psbt::from_str(PSBT_STR).unwrap();
62-
let (mut wallet, _) = get_funded_wallet(get_test_wpkh());
62+
let (mut wallet, _) = get_funded_wallet_wpkh();
6363
let send_to = wallet.peek_address(KeychainKind::External, 0);
6464
let mut builder = wallet.build_tx();
6565
builder.add_recipient(send_to.script_pubkey(), Amount::from_sat(10_000));
@@ -80,7 +80,7 @@ fn test_psbt_fee_rate_with_witness_utxo() {
8080

8181
let expected_fee_rate = FeeRate::from_sat_per_kwu(310);
8282

83-
let (mut wallet, _) = get_funded_wallet("wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)");
83+
let (mut wallet, _) = get_funded_wallet_single("wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)");
8484
let addr = wallet.peek_address(KeychainKind::External, 0);
8585
let mut builder = wallet.build_tx();
8686
builder.drain_to(addr.script_pubkey()).drain_wallet();
@@ -105,7 +105,7 @@ fn test_psbt_fee_rate_with_nonwitness_utxo() {
105105

106106
let expected_fee_rate = FeeRate::from_sat_per_kwu(310);
107107

108-
let (mut wallet, _) = get_funded_wallet("pkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)");
108+
let (mut wallet, _) = get_funded_wallet_single("pkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)");
109109
let addr = wallet.peek_address(KeychainKind::External, 0);
110110
let mut builder = wallet.build_tx();
111111
builder.drain_to(addr.script_pubkey()).drain_wallet();
@@ -129,7 +129,7 @@ fn test_psbt_fee_rate_with_missing_txout() {
129129

130130
let expected_fee_rate = FeeRate::from_sat_per_kwu(310);
131131

132-
let (mut wpkh_wallet, _) = get_funded_wallet("wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)");
132+
let (mut wpkh_wallet, _) = get_funded_wallet_single("wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)");
133133
let addr = wpkh_wallet.peek_address(KeychainKind::External, 0);
134134
let mut builder = wpkh_wallet.build_tx();
135135
builder.drain_to(addr.script_pubkey()).drain_wallet();
@@ -143,7 +143,7 @@ fn test_psbt_fee_rate_with_missing_txout() {
143143

144144
let desc = "pkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/0)";
145145
let change_desc = "pkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/1)";
146-
let (mut pkh_wallet, _) = get_funded_wallet_with_change(desc, change_desc);
146+
let (mut pkh_wallet, _) = get_funded_wallet(desc, change_desc);
147147
let addr = pkh_wallet.peek_address(KeychainKind::External, 0);
148148
let mut builder = pkh_wallet.build_tx();
149149
builder.drain_to(addr.script_pubkey()).drain_wallet();
@@ -172,7 +172,7 @@ fn test_psbt_multiple_internalkey_signers() {
172172
let keypair = Keypair::from_secret_key(&secp, &prv.inner);
173173

174174
let change_desc = "tr(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW)";
175-
let (mut wallet, _) = get_funded_wallet_with_change(&desc, change_desc);
175+
let (mut wallet, _) = get_funded_wallet(&desc, change_desc);
176176
let to_spend = wallet.balance().total();
177177
let send_to = wallet.peek_address(KeychainKind::External, 0);
178178
let mut builder = wallet.build_tx();

0 commit comments

Comments
 (0)