Skip to content

Commit 0a58e58

Browse files
committed
test: improve utxo tests
1 parent fa2205b commit 0a58e58

File tree

1 file changed

+45
-4
lines changed

1 file changed

+45
-4
lines changed

testnet/stacks-node/src/burnchains/bitcoin_regtest_controller.rs

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3034,7 +3034,7 @@ mod tests {
30343034
}
30353035

30363036
#[test]
3037-
fn test_get_all_utxos() {
3037+
fn test_get_all_utxos_with_one_confirmed() {
30383038
let miner_seed = vec![1, 1, 1, 1];
30393039
let keychain = Keychain::default(miner_seed.clone());
30403040
let miner_pubkey = keychain.get_pub_key();
@@ -3055,11 +3055,13 @@ mod tests {
30553055

30563056
let utxos = btc_controller.get_all_utxos(&miner_pubkey);
30573057
assert_eq!(1, utxos.len());
3058+
let utxo = &utxos[0];
3059+
assert_eq!(101, utxo.confirmations);
3060+
assert_eq!(5000000000, utxo.amount);
30583061
}
30593062

30603063
#[test]
3061-
//NOTE: STALL if burn block at block_height doesn't exist....
3062-
fn test_get_utxos() {
3064+
fn test_get_utxos_ok() {
30633065
let miner_seed = vec![1, 1, 1, 1];
30643066
let keychain = Keychain::default(miner_seed.clone());
30653067
let miner_pubkey = keychain.get_pub_key();
@@ -3078,7 +3080,7 @@ mod tests {
30783080
let btc_controller = BitcoinRegtestController::new(config.clone(), None);
30793081
btc_controller.bootstrap_chain(101);
30803082

3081-
let utxos = btc_controller.get_utxos(StacksEpochId::Epoch31, &miner_pubkey, 19000, None, 0);
3083+
let utxos = btc_controller.get_utxos(StacksEpochId::Epoch31, &miner_pubkey, 10000, None, 0);
30823084

30833085
let uxto_set = utxos.expect("Shouldn't be None!");
30843086
assert_eq!(1, uxto_set.num_utxos());
@@ -3088,6 +3090,45 @@ mod tests {
30883090
assert_eq!(5000000000, utxo.amount);
30893091
}
30903092

3093+
3094+
#[test]
3095+
//NOTE: STALL if burn block at block_height doesn't exist....
3096+
fn test_get_utxos_fails_due_to_filtering() {
3097+
let miner_seed = vec![1, 1, 1, 1];
3098+
let keychain = Keychain::default(miner_seed.clone());
3099+
let miner_pubkey = keychain.get_pub_key();
3100+
3101+
let mut config = Config::default();
3102+
config.burnchain.magic_bytes = "T3".as_bytes().into();
3103+
config.burnchain.local_mining_public_key = Some(miner_pubkey.to_hex());
3104+
config.burnchain.username = Some("user".to_owned());
3105+
config.burnchain.password = Some("12345".to_owned());
3106+
3107+
let mut btcd_controller = BitcoinCoreController::new(config.clone());
3108+
btcd_controller
3109+
.start_bitcoind()
3110+
.expect("bitcoind should be started!");
3111+
3112+
let btc_controller = BitcoinRegtestController::new(config.clone(), None);
3113+
btc_controller.bootstrap_chain(101);
3114+
3115+
let too_much_required = 1000000000000000000_u64;
3116+
let utxos = btc_controller.get_utxos(StacksEpochId::Epoch31, &miner_pubkey, too_much_required, None, 0);
3117+
assert!(utxos.is_none(), "None because too much required");
3118+
3119+
let other_pubkey = Secp256k1PublicKey::from_hex("01010101010101100101010101").unwrap();
3120+
let utxos = btc_controller.get_utxos(StacksEpochId::Epoch31, &other_pubkey, too_much_required, None, 0);
3121+
assert!(utxos.is_none(), "None because utxos for other pubkey don't exist");
3122+
3123+
let future_block_height = 1000;
3124+
let utxos = btc_controller.get_utxos(StacksEpochId::Epoch31, &miner_pubkey, too_much_required, None, future_block_height);
3125+
assert!(utxos.is_none(), "None because utxos for future block height don't exist");
3126+
3127+
let existent_utxo = btc_controller.get_utxos(StacksEpochId::Epoch31, &miner_pubkey, 0, None, 0).expect("utxo set should exist");
3128+
let utxos = btc_controller.get_utxos(StacksEpochId::Epoch31, &miner_pubkey, 0, Some(existent_utxo), 0);
3129+
assert!(utxos.is_none(), "None because utxos filtering out existent utxo set");
3130+
}
3131+
30913132
#[test]
30923133
fn test_build_leader_block_commit_tx_ok_with_new_block_commit() {
30933134
let miner_seed = vec![1, 1, 1, 1];

0 commit comments

Comments
 (0)