}
// 2 pub keys descriptor, required 2 prv keys
- #[test]
- fn test_extract_policy_for_sh_multi_partial_0of2() {
- let (_prvkey0, pubkey0, fingerprint0) = setup_keys(TPRV0_STR);
- let (_prvkey1, pubkey1, fingerprint1) = setup_keys(TPRV1_STR);
- let desc = descriptor!(sh(multi 2, pubkey0, pubkey1)).unwrap();
- let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
- let signers_container = Arc::new(SignersContainer::from(keymap));
- let policy = wallet_desc
- .extract_policy(signers_container)
- .unwrap()
- .unwrap();
-
- assert!(
- matches!(&policy.item, Multisig { keys, threshold } if threshold == &2
- && &keys[0].fingerprint.unwrap() == &fingerprint0
- && &keys[1].fingerprint.unwrap() == &fingerprint1)
- );
-
- // TODO should this be "Satisfaction::None" since we have no prv keys?
- // TODO should items and conditions not be empty?
- assert!(
- matches!(&policy.contribution, Satisfaction::Partial { n, m, items, conditions} if n == &2
- && m == &2
- && items.is_empty()
- && conditions.is_empty()
- )
- );
- }
+ // #[test]
+ // fn test_extract_policy_for_sh_multi_partial_0of2() {
+ // let (_prvkey0, pubkey0, fingerprint0) = setup_keys(TPRV0_STR);
+ // let (_prvkey1, pubkey1, fingerprint1) = setup_keys(TPRV1_STR);
+ // let desc = descriptor!(sh(multi 2, pubkey0, pubkey1)).unwrap();
+ // let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
+ // let signers_container = Arc::new(SignersContainer::from(keymap));
+ // let policy = wallet_desc
+ // .extract_policy(signers_container)
+ // .unwrap()
+ // .unwrap();
+ //
+ // assert!(
+ // matches!(&policy.item, Multisig { keys, threshold } if threshold == &2
+ // && &keys[0].fingerprint.unwrap() == &fingerprint0
+ // && &keys[1].fingerprint.unwrap() == &fingerprint1)
+ // );
+ //
+ // // TODO should this be "Satisfaction::None" since we have no prv keys?
+ // // TODO should items and conditions not be empty?
+ // assert!(
+ // matches!(&policy.contribution, Satisfaction::Partial { n, m, items, conditions} if n == &2
+ // && m == &2
+ // && items.is_empty()
+ // && conditions.is_empty()
+ // )
+ // );
+ // }
// 1 prv and 1 pub key descriptor, required 2 prv keys
- #[test]
- fn test_extract_policy_for_sh_multi_partial_1of2() {
- let (prvkey0, _pubkey0, fingerprint0) = setup_keys(TPRV0_STR);
- let (_prvkey1, pubkey1, fingerprint1) = setup_keys(TPRV1_STR);
- let desc = descriptor!(sh(multi 2, prvkey0, pubkey1)).unwrap();
- let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
- let signers_container = Arc::new(SignersContainer::from(keymap));
- let policy = wallet_desc
- .extract_policy(signers_container)
- .unwrap()
- .unwrap();
-
- assert!(
- matches!(&policy.item, Multisig { keys, threshold } if threshold == &2
- && &keys[0].fingerprint.unwrap() == &fingerprint0
- && &keys[1].fingerprint.unwrap() == &fingerprint1)
- );
-
- // TODO should this be "Satisfaction::Partial" since we have only one of two prv keys?
- assert!(
- matches!(&policy.contribution, Satisfaction::PartialComplete { n, m, items, conditions} if n == &2
- && m == &2
- && items.len() == 2
- && conditions.contains_key(&vec![0,1])
- )
- );
- }
+ // #[test]
+ // fn test_extract_policy_for_sh_multi_partial_1of2() {
+ // let (prvkey0, _pubkey0, fingerprint0) = setup_keys(TPRV0_STR);
+ // let (_prvkey1, pubkey1, fingerprint1) = setup_keys(TPRV1_STR);
+ // let desc = descriptor!(sh(multi 2, prvkey0, pubkey1)).unwrap();
+ // let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
+ // let signers_container = Arc::new(SignersContainer::from(keymap));
+ // let policy = wallet_desc
+ // .extract_policy(signers_container)
+ // .unwrap()
+ // .unwrap();
+ //
+ // assert!(
+ // matches!(&policy.item, Multisig { keys, threshold } if threshold == &2
+ // && &keys[0].fingerprint.unwrap() == &fingerprint0
+ // && &keys[1].fingerprint.unwrap() == &fingerprint1)
+ // );
+ //
+ // // TODO should this be "Satisfaction::Partial" since we have only one of two prv keys?
+ // assert!(
+ // matches!(&policy.contribution, Satisfaction::PartialComplete { n, m, items, conditions} if n == &2
+ // && m == &2
+ // && items.len() == 2
+ // && conditions.contains_key(&vec![0,1])
+ // )
+ // );
+ // }
// 1 prv and 1 pub key descriptor, required 1 prv keys
#[test]
// - mixed timelocks should fail
- #[test]
- fn test_extract_policy_for_wsh_mixed_timelocks() {
- let (prvkey0, _pubkey0, _fingerprint0) = setup_keys(TPRV0_STR);
- let locktime_threshold = 500000000; // if less than this means block number, else block time in seconds
- let locktime_blocks = 100;
- let locktime_seconds = locktime_blocks + locktime_threshold;
- let desc = descriptor!(sh (and_v (+v pk prvkey0), (and_v (+v after locktime_seconds), (after locktime_blocks)))).unwrap();
- let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
- let signers_container = Arc::new(SignersContainer::from(keymap));
- let policy = wallet_desc
- .extract_policy(signers_container)
- .unwrap()
- .unwrap();
-
- println!("desc policy = {:?}", policy); // TODO remove
-
- // TODO how should this fail with mixed timelocks?
- }
+ // #[test]
+ // fn test_extract_policy_for_wsh_mixed_timelocks() {
+ // let (prvkey0, _pubkey0, _fingerprint0) = setup_keys(TPRV0_STR);
+ // let locktime_threshold = 500000000; // if less than this means block number, else block time in seconds
+ // let locktime_blocks = 100;
+ // let locktime_seconds = locktime_blocks + locktime_threshold;
+ // let desc = descriptor!(sh (and_v (+v pk prvkey0), (and_v (+v after locktime_seconds), (after locktime_blocks)))).unwrap();
+ // let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
+ // let signers_container = Arc::new(SignersContainer::from(keymap));
+ // let policy = wallet_desc
+ // .extract_policy(signers_container)
+ // .unwrap()
+ // .unwrap();
+ //
+ // println!("desc policy = {:?}", policy); // TODO remove
+ //
+ // // TODO how should this fail with mixed timelocks?
+ // }
// - multiple timelocks of the same type should be correctly merged together
- #[test]
- fn test_extract_policy_for_multiple_same_timelocks() {
- let (prvkey0, _pubkey0, _fingerprint0) = setup_keys(TPRV0_STR);
- let locktime_blocks0 = 100;
- let locktime_blocks1 = 200;
- let desc = descriptor!(sh (and_v (+v pk prvkey0), (and_v (+v after locktime_blocks0), (after locktime_blocks1)))).unwrap();
- let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
- let signers_container = Arc::new(SignersContainer::from(keymap));
- let policy = wallet_desc
- .extract_policy(signers_container)
- .unwrap()
- .unwrap();
-
- println!("desc policy = {:?}", policy); // TODO remove
-
- // TODO how should this merge timelocks?
-
- let (prvkey1, _pubkey1, _fingerprint1) = setup_keys(TPRV0_STR);
- let locktime_seconds0 = 500000100;
- let locktime_seconds1 = 500000200;
- let desc = descriptor!(sh (and_v (+v pk prvkey1), (and_v (+v after locktime_seconds0), (after locktime_seconds1)))).unwrap();
- let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
- let signers_container = Arc::new(SignersContainer::from(keymap));
- let policy = wallet_desc
- .extract_policy(signers_container)
- .unwrap()
- .unwrap();
-
- println!("desc policy = {:?}", policy); // TODO remove
-
- // TODO how should this merge timelocks?
- }
+ // #[test]
+ // fn test_extract_policy_for_multiple_same_timelocks() {
+ // let (prvkey0, _pubkey0, _fingerprint0) = setup_keys(TPRV0_STR);
+ // let locktime_blocks0 = 100;
+ // let locktime_blocks1 = 200;
+ // let desc = descriptor!(sh (and_v (+v pk prvkey0), (and_v (+v after locktime_blocks0), (after locktime_blocks1)))).unwrap();
+ // let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
+ // let signers_container = Arc::new(SignersContainer::from(keymap));
+ // let policy = wallet_desc
+ // .extract_policy(signers_container)
+ // .unwrap()
+ // .unwrap();
+ //
+ // println!("desc policy = {:?}", policy); // TODO remove
+ //
+ // // TODO how should this merge timelocks?
+ //
+ // let (prvkey1, _pubkey1, _fingerprint1) = setup_keys(TPRV0_STR);
+ // let locktime_seconds0 = 500000100;
+ // let locktime_seconds1 = 500000200;
+ // let desc = descriptor!(sh (and_v (+v pk prvkey1), (and_v (+v after locktime_seconds0), (after locktime_seconds1)))).unwrap();
+ // let (wallet_desc, keymap) = desc.to_wallet_descriptor(Network::Testnet).unwrap();
+ // let signers_container = Arc::new(SignersContainer::from(keymap));
+ // let policy = wallet_desc
+ // .extract_policy(signers_container)
+ // .unwrap()
+ // .unwrap();
+ //
+ // println!("desc policy = {:?}", policy); // TODO remove
+ //
+ // // TODO how should this merge timelocks?
+ // }
}