Skip to content

Commit 1630b71

Browse files
committed
test: refine wallet constructor flows
1 parent 0037a49 commit 1630b71

File tree

1 file changed

+33
-9
lines changed

1 file changed

+33
-9
lines changed

bdk-ffi/src/tests/wallet.rs

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use std::sync::Arc;
99

1010
const EXTERNAL_DESCRIPTOR: &str = "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/1h/0/*)";
1111
const INTERNAL_DESCRIPTOR: &str = "wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/1h/1/*)";
12+
const TWO_PATH_DESCRIPTOR: &str = "wpkh([9a6a2580/84'/1'/0']tpubDDnGNapGEY6AZAdQbfRJgMg9fvz8pUBrLwvyvUqEgcUfgzM6zc2eVK4vY9x9L5FJWdX8WumXuLEDV5zDZnTfbn87vLe9XceCFwTu9so9Kks/<0;1>/*)";
1213
const EXPECTED_FIRST_ADDRESS: &str = "tb1qhjys9wxlfykmte7ftryptx975uqgd6kcm6a7z4";
1314

1415
fn external_descriptor() -> Arc<Descriptor> {
@@ -19,6 +20,10 @@ fn internal_descriptor() -> Arc<Descriptor> {
1920
Arc::new(Descriptor::new(INTERNAL_DESCRIPTOR.to_string(), Network::Signet).unwrap())
2021
}
2122

23+
fn two_path_descriptor() -> Arc<Descriptor> {
24+
Arc::new(Descriptor::new(TWO_PATH_DESCRIPTOR.to_string(), Network::Signet).unwrap())
25+
}
26+
2227
fn build_wallet() -> Wallet {
2328
Wallet::new(
2429
external_descriptor(),
@@ -58,26 +63,45 @@ fn test_reveal_next_address() {
5863

5964
#[test]
6065
fn test_create_single_wallet() {
61-
let descriptor = external_descriptor();
6266
let wallet = Wallet::create_single(
63-
descriptor.clone(),
67+
external_descriptor(),
6468
Network::Signet,
6569
Arc::new(Persister::new_in_memory().unwrap()),
6670
25,
6771
)
6872
.unwrap();
6973

70-
assert_eq!(wallet.derivation_index(KeychainKind::External), None);
71-
7274
let address_info = wallet.reveal_next_address(KeychainKind::External);
7375

7476
assert_eq!(address_info.index, 0);
7577
assert_eq!(address_info.keychain, KeychainKind::External);
7678
assert_eq!(address_info.address.to_string(), EXPECTED_FIRST_ADDRESS);
77-
assert_eq!(wallet.derivation_index(KeychainKind::External), Some(0));
78-
assert_eq!(wallet.next_derivation_index(KeychainKind::External), 1);
79-
assert_eq!(
80-
wallet.public_descriptor(KeychainKind::External),
81-
descriptor.to_string()
79+
}
80+
81+
#[test]
82+
fn test_create_two_path_wallet() {
83+
let wallet = Wallet::create_from_two_path_descriptor(
84+
two_path_descriptor(),
85+
Network::Signet,
86+
Arc::new(Persister::new_in_memory().unwrap()),
87+
25,
88+
)
89+
.unwrap();
90+
91+
assert_eq!(wallet.derivation_index(KeychainKind::External), None);
92+
assert_eq!(wallet.derivation_index(KeychainKind::Internal), None);
93+
94+
let external_address = wallet.reveal_next_address(KeychainKind::External);
95+
let internal_address = wallet.reveal_next_address(KeychainKind::Internal);
96+
97+
assert_eq!(external_address.index, 0);
98+
assert_eq!(external_address.keychain, KeychainKind::External);
99+
assert_eq!(internal_address.index, 0);
100+
assert_eq!(internal_address.keychain, KeychainKind::Internal);
101+
assert_ne!(
102+
external_address.address.to_string(),
103+
internal_address.address.to_string()
82104
);
105+
assert_eq!(wallet.derivation_index(KeychainKind::External), Some(0));
106+
assert_eq!(wallet.derivation_index(KeychainKind::Internal), Some(0));
83107
}

0 commit comments

Comments
 (0)