From 326b64de3ae5233fb76a14cfac38f50a20ff7a65 Mon Sep 17 00:00:00 2001 From: Alekos Filini Date: Wed, 15 Sep 2021 10:36:50 +0200 Subject: [PATCH] [descriptor] Add a test for `extract_policy()` on `pk_h()` operands --- src/descriptor/policy.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/descriptor/policy.rs b/src/descriptor/policy.rs index 6184365c..f3baa3e0 100644 --- a/src/descriptor/policy.rs +++ b/src/descriptor/policy.rs @@ -1416,6 +1416,7 @@ mod test { const ALICE_TPRV_STR:&str = "tprv8ZgxMBicQKsPf6T5X327efHnvJDr45Xnb8W4JifNWtEoqXu9MRYS4v1oYe6DFcMVETxy5w3bqpubYRqvcVTqovG1LifFcVUuJcbwJwrhYzP"; const BOB_TPRV_STR:&str = "tprv8ZgxMBicQKsPeinZ155cJAn117KYhbaN6MV3WeG6sWhxWzcvX1eg1awd4C9GpUN1ncLEM2rzEvunAg3GizdZD4QPPCkisTz99tXXB4wZArp"; + const CAROL_TPRV_STR:&str = "tprv8ZgxMBicQKsPdC3CicFifuLCEyVVdXVUNYorxUWj3iGZ6nimnLAYAY9SYB7ib8rKzRxrCKFcEytCt6szwd2GHnGPRCBLAEAoSVDefSNk4Bt"; const ALICE_BOB_PATH: &str = "m/0'"; #[test] @@ -1574,4 +1575,28 @@ mod test { ); //println!("{}", serde_json::to_string(&policy_expired_signed).unwrap()); } + + #[test] + fn test_extract_pkh() { + let secp = Secp256k1::new(); + + let (prvkey_alice, _, _) = setup_keys(ALICE_TPRV_STR, ALICE_BOB_PATH, &secp); + let (prvkey_bob, _, _) = setup_keys(BOB_TPRV_STR, ALICE_BOB_PATH, &secp); + let (prvkey_carol, _, _) = setup_keys(CAROL_TPRV_STR, ALICE_BOB_PATH, &secp); + + let desc = descriptor!(wsh(c: andor( + pk(prvkey_alice), + pk_k(prvkey_bob), + pk_h(prvkey_carol), + ))) + .unwrap(); + + let (wallet_desc, keymap) = desc + .into_wallet_descriptor(&secp, Network::Testnet) + .unwrap(); + let signers_container = Arc::new(SignersContainer::from(keymap)); + + let policy = wallet_desc.extract_policy(&signers_container, BuildSatisfaction::None, &secp); + assert!(policy.is_ok()); + } }