Skip to content

Commit 0c5795d

Browse files
committed
Fixes nbv unit tests
1 parent 6023885 commit 0c5795d

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

pallets/bitcoin-vaults/src/tests.rs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11

2-
use crate::{mock::*, Error, types::ProposalStatus};
2+
use crate::{mock::*, Error, types::{ProposalStatus, BDKStatus, Descriptors}, Vaults, Proposals};
3+
use core::convert::TryFrom;
34
use codec::{Encode};
45
use frame_support::{
56
assert_noop, assert_ok,
6-
//traits::{ConstU32,},
77
BoundedVec,
88
};
99
use sp_io::hashing::blake2_256;
10+
1011
fn dummy_xpub() -> BoundedVec<u8,XPubLen >{
1112
BoundedVec::<u8,XPubLen >::try_from(
1213
b"[adc450e3/84'/1'/0'/0]tpubDEMkzn5sBo8Nct35y2BEFhJTqhsa72yeUf5S6ymb85G6LW2okSh1fDkrMhgCtYsrsCAuspm4yVjC63VUA6qrcQ54tVm5TKwhWFBLyyCjabX/*"
@@ -49,6 +50,29 @@ fn dummy_psbt() -> BoundedVec<u8, PSBTMaxLen>{
4950
.encode()).unwrap_or_default()
5051
}
5152

53+
fn dummy_descriptor()->BoundedVec<u8, OutputDescriptorMaxLen>{
54+
let d_size: usize = OutputDescriptorMaxLen::get().try_into().unwrap();
55+
BoundedVec::<u8, OutputDescriptorMaxLen>::try_from(vec![0; d_size]).unwrap()
56+
}
57+
fn make_vault_valid(vault_id: [u8;32]){
58+
59+
Vaults::<Test>::mutate(vault_id, |v_option|{
60+
let v= v_option.as_mut().unwrap();
61+
v.offchain_status.clone_from(&BDKStatus::Valid);
62+
v.descriptors.clone_from(&Descriptors{
63+
output_descriptor: dummy_descriptor(),
64+
change_descriptor: Some(dummy_descriptor()),
65+
});
66+
});
67+
}
68+
69+
fn make_proposal_valid(proposal_id: [u8;32]){
70+
Proposals::<Test>::mutate(proposal_id, |p_option|{
71+
let p = p_option.as_mut().unwrap();
72+
p.offchain_status.clone_from(&BDKStatus::Valid);
73+
});
74+
}
75+
5276
#[test]
5377
fn set_xpub_identity_works() {
5478
new_test_ext().execute_with(|| {
@@ -314,6 +338,7 @@ fn proposing_should_work(){
314338
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 2, dummy_description(), true, cosigners) );
315339
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
316340
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
341+
make_vault_valid(vault_id);
317342
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
318343
});
319344
}
@@ -346,6 +371,7 @@ fn proposing_twice_shouldnt_work(){
346371
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 2, dummy_description(), true, cosigners) );
347372
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
348373
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
374+
make_vault_valid(vault_id);
349375
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
350376
assert_noop!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()),
351377
Error::<Test>::AlreadyProposed);
@@ -363,6 +389,7 @@ fn exceeding_max_proposals_per_vault_shouldnt_work(){
363389
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 2, dummy_description(), true, cosigners) );
364390
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
365391
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
392+
make_vault_valid(vault_id);
366393
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
367394
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1001,dummy_description()));
368395
assert_noop!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1002,dummy_description()),
@@ -381,6 +408,7 @@ fn saving_psbt_should_work(){
381408
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 2, dummy_description(), true, cosigners) );
382409
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
383410
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
411+
make_vault_valid(vault_id);
384412
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
385413
// obtaining proposal id and saving a psbt
386414
let proposal_id = BitcoinVaults::proposals_by_vault(vault_id).pop().unwrap();
@@ -415,6 +443,7 @@ fn saving_psbt_form_external_user_shouldnt_work(){
415443
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 2, dummy_description(), true, cosigners) );
416444
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
417445
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
446+
make_vault_valid(vault_id);
418447
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
419448
// obtaining proposal id and saving a psbt with a user that is not in the vault
420449
let proposal_id = BitcoinVaults::proposals_by_vault(vault_id).pop().unwrap();
@@ -434,6 +463,7 @@ fn saving_twice_psbt_shouldnt_work(){
434463
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 2, dummy_description(), true, cosigners) );
435464
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
436465
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
466+
make_vault_valid(vault_id);
437467
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
438468
// obtaining proposal id and saving a psbt with a user that is not in the vault
439469
let proposal_id = BitcoinVaults::proposals_by_vault(vault_id).pop().unwrap();
@@ -455,9 +485,11 @@ fn finalize_psbt_should_work(){
455485
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 1, dummy_description(), true, cosigners) );
456486
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
457487
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
488+
make_vault_valid(vault_id);
458489
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
459490
// obtaining proposal id and saving a psbt with a user that is not in the vault
460491
let proposal_id = BitcoinVaults::proposals_by_vault(vault_id).pop().unwrap();
492+
make_proposal_valid(proposal_id);
461493

462494
assert_ok!(BitcoinVaults::save_psbt(Origin::signed(test_pub(1)), proposal_id, dummy_psbt()) );
463495
assert_ok!(BitcoinVaults::finalize_psbt(Origin::signed(test_pub(1)), proposal_id,false));
@@ -476,9 +508,11 @@ fn finalize_psbt_twice_shouldnt_work(){
476508
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 1, dummy_description(), true, cosigners) );
477509
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
478510
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
511+
make_vault_valid(vault_id);
479512
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
480513
// obtaining proposal id and saving a psbt with a user that is not in the vault
481514
let proposal_id = BitcoinVaults::proposals_by_vault(vault_id).pop().unwrap();
515+
make_proposal_valid(proposal_id);
482516

483517
assert_ok!(BitcoinVaults::save_psbt(Origin::signed(test_pub(1)), proposal_id, dummy_psbt()) );
484518
assert_ok!(BitcoinVaults::finalize_psbt(Origin::signed(test_pub(1)), proposal_id,false));
@@ -498,9 +532,11 @@ fn finalize_psbt_without_signatures_shouldnt_work(){
498532
assert_ok!(BitcoinVaults::create_vault( Origin::signed(test_pub(1)) , 1, dummy_description(), true, cosigners) );
499533
assert!(!BitcoinVaults::vaults_by_signer(test_pub(1)).is_empty());
500534
let vault_id = BitcoinVaults::vaults_by_signer(test_pub(1)).pop().unwrap();
535+
make_vault_valid(vault_id);
501536
assert_ok!(BitcoinVaults::propose(Origin::signed(test_pub(1)),vault_id,dummy_testnet_recipient_address(),1000,dummy_description()));
502537
// obtaining proposal id and saving a psbt with a user that is not in the vault
503538
let proposal_id = BitcoinVaults::proposals_by_vault(vault_id).pop().unwrap();
539+
make_proposal_valid(proposal_id);
504540

505541
assert_noop!(BitcoinVaults::finalize_psbt(Origin::signed(test_pub(1)), proposal_id,false), Error::<Test>::NotEnoughSignatures);
506542
});

0 commit comments

Comments
 (0)