[descriptor] Comment out incomplete ExtractPolicy trait tests

This commit is contained in:
Steve Myers 2020-10-26 12:41:22 -07:00
parent 3a80e87ccb
commit 8927d68a69
No known key found for this signature in database
GPG Key ID: 8105A46B22C2D051

View File

@ -859,63 +859,63 @@ mod test {
}
// 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]
@ -1074,57 +1074,57 @@ mod 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?
// }
}