Skip to content

Commit 687e615

Browse files
committed
Add getdescriptorinfo and deriveaddresses integration tests.
1 parent 2f8898d commit 687e615

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

integration_test/src/main.rs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,10 +211,10 @@ fn main() {
211211
test_backupwallet(&cl);
212212
test_wait_for_new_block(&cl);
213213
test_wait_for_block(&cl);
214+
test_get_descriptor_info(&cl);
215+
test_derive_addresses(&cl);
214216
//TODO import_multi(
215217
//TODO verify_message(
216-
//TODO get_descriptor_info(&self, desc: &str) -> Result<json::GetDescriptorInfoResult> {
217-
//TODO derive_addresses(&self, descriptor: &str, range: Option<[u32; 2]>) -> Result<Vec<Address>> {
218218
//TODO encrypt_wallet(&self, passphrase: &str) -> Result<()> {
219219
//TODO get_by_id<T: queryable::Queryable<Self>>(
220220
//TODO add_multisig_address(
@@ -1327,6 +1327,33 @@ fn test_wait_for_block(cl: &Client) {
13271327
assert_eq!(cl.wait_for_block(&hash, 0).unwrap(), json::BlockRef{hash, height});
13281328
}
13291329

1330+
fn test_get_descriptor_info(cl: &Client) {
1331+
let res = cl.get_descriptor_info(r"pkh(cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR)").unwrap();
1332+
assert_eq!(res.descriptor, r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x");
1333+
assert_eq!(res.checksum, "37v3lm8x");
1334+
assert_eq!(res.is_range, false);
1335+
assert_eq!(res.is_solvable, true);
1336+
assert_eq!(res.has_private_keys, true);
1337+
1338+
assert!(cl.get_descriptor_info("abcdef").is_err());
1339+
}
1340+
1341+
fn test_derive_addresses(cl: &Client) {
1342+
let descriptor = r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x";
1343+
assert_eq!(cl.derive_addresses(descriptor, None).unwrap(), vec!["mrkwtj5xpYQjHeJe5wsweNjVeTKkvR5fCr".parse().unwrap()]);
1344+
assert!(cl.derive_addresses(descriptor, Some([0, 1])).is_err()); // Range should not be specified for an unranged descriptor
1345+
1346+
let descriptor = std::concat!(
1347+
r"wpkh([1004658e/84'/1'/0']tpubDCBEcmVKbfC9KfdydyLbJ2gfNL88grZu1XcWSW9ytTM6fi",
1348+
r"tvaRmVyr8Ddf7SjZ2ZfMx9RicjYAXhuh3fmLiVLPodPEqnQQURUfrBKiiVZc8/0/*)#g8l47ngv",
1349+
);
1350+
assert_eq!(cl.derive_addresses(descriptor, Some([0, 1])).unwrap(), vec![
1351+
"bcrt1q5n5tjkpva8v5s0uadu2y5f0g7pn4h5eqaq2ux2".parse().unwrap(),
1352+
"bcrt1qcgl303ht03ja2e0hudpwk7ypcxk5t478wspzlt".parse().unwrap(),
1353+
]);
1354+
assert!(cl.derive_addresses(descriptor, None).is_err()); // Range must be specified for a ranged descriptor
1355+
}
1356+
13301357
fn test_get_index_info(cl: &Client) {
13311358
if version() >= 210000 {
13321359
let gii = cl.get_index_info().unwrap();

0 commit comments

Comments
 (0)