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