Skip to content

Commit f80cd34

Browse files
committed
test: make functional test wallet_mnemonicbits.py works for descriptor wallets
1 parent e3df697 commit f80cd34

File tree

1 file changed

+45
-8
lines changed

1 file changed

+45
-8
lines changed

test/functional/wallet_mnemonicbits.py

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,31 @@ def run_test(self):
2424
self.stop_node(0)
2525
self.nodes[0].assert_start_raises_init_error(['-mnemonicbits=123'], "Error: Invalid '-mnemonicbits'. Allowed values: 128, 160, 192, 224, 256.")
2626
self.start_node(0)
27-
assert_equal(len(self.nodes[0].dumphdinfo()["mnemonic"].split()), 12) # 12 words by default
27+
28+
mnemonic_pre = self.nodes[0].listdescriptors(True)['descriptors'][1]["mnemonic"] if self.options.descriptors else self.nodes[0].dumphdinfo()["mnemonic"]
29+
30+
self.nodes[0].encryptwallet('pass')
31+
self.nodes[0].walletpassphrase('pass', 100)
32+
mnemonic = self.nodes[0].listdescriptors(True)['descriptors'][1]["mnemonic"] if self.options.descriptors else self.nodes[0].dumphdinfo()["mnemonic"]
33+
assert_equal(mnemonic, mnemonic_pre)
34+
35+
if self.options.descriptors:
36+
assert not "mnemonic" in self.nodes[0].listdescriptors()['descriptors'][0]
37+
assert "mnemonic" in self.nodes[0].listdescriptors(True)['descriptors'][0]
38+
descriptors = self.nodes[0].listdescriptors(True)['descriptors']
39+
assert_equal(len(descriptors[0]['mnemonic'].split()), 12)
40+
assert_equal(len(descriptors[1]['mnemonic'].split()), 12)
41+
assert_equal(descriptors[0]['mnemonic'], descriptors[1]['mnemonic'])
42+
43+
mnemonic_count = 0
44+
for desc in descriptors:
45+
if 'mnemonic' in desc:
46+
mnemonic_count += 1
47+
# Coinbase imported private key doesn't have mnemonic; there should be 2 active and 2 inactive mnemonic
48+
assert_equal(mnemonic_count, 4)
49+
assert_equal(len(descriptors), 5)
50+
else:
51+
assert_equal(len(self.nodes[0].dumphdinfo()["mnemonic"].split()), 12) # 12 words by default
2852

2953
self.log.info("Can have multiple wallets with different mnemonic length loaded at the same time")
3054
self.restart_node(0, extra_args=["-mnemonicbits=160"])
@@ -34,17 +58,30 @@ def run_test(self):
3458
self.restart_node(0, extra_args=["-mnemonicbits=224"])
3559
self.nodes[0].createwallet("wallet_224")
3660
self.restart_node(0, extra_args=["-mnemonicbits=256"])
61+
self.nodes[0].get_wallet_rpc(self.default_wallet_name).walletpassphrase('pass', 100)
3762
self.nodes[0].loadwallet("wallet_160")
3863
self.nodes[0].loadwallet("wallet_192")
3964
self.nodes[0].loadwallet("wallet_224")
40-
self.nodes[0].createwallet("wallet_256", False, True) # blank
41-
self.nodes[0].get_wallet_rpc("wallet_256").upgradetohd()
42-
assert_equal(len(self.nodes[0].get_wallet_rpc(self.default_wallet_name).dumphdinfo()["mnemonic"].split()), 12) # 12 words by default
43-
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_160").dumphdinfo()["mnemonic"].split()), 15) # 15 words
44-
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_192").dumphdinfo()["mnemonic"].split()), 18) # 18 words
45-
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_224").dumphdinfo()["mnemonic"].split()), 21) # 21 words
46-
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_256").dumphdinfo()["mnemonic"].split()), 24) # 24 words
65+
if self.options.descriptors:
66+
self.nodes[0].createwallet("wallet_256", False, True, "", False, True) # blank Descriptors
67+
self.nodes[0].get_wallet_rpc("wallet_256").upgradetohd()
68+
# first descriptor is private key with no mnemonic for CbTx (see node.importprivkey), we use number#1 here instead
69+
assert_equal(len(self.nodes[0].get_wallet_rpc(self.default_wallet_name).listdescriptors(True)["descriptors"][1]["mnemonic"].split()), 12) # 12 words by default
70+
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_160").listdescriptors(True)["descriptors"][0]["mnemonic"].split()), 15) # 15 words
71+
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_192").listdescriptors(True)["descriptors"][0]["mnemonic"].split()), 18) # 18 words
72+
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_224").listdescriptors(True)["descriptors"][0]["mnemonic"].split()), 21) # 21 words
73+
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_256").listdescriptors(True)["descriptors"][0]["mnemonic"].split()), 24) # 24 words
74+
else:
75+
self.nodes[0].createwallet("wallet_256", False, True) # blank HD legacy
76+
self.nodes[0].get_wallet_rpc("wallet_256").upgradetohd()
77+
assert_equal(len(self.nodes[0].get_wallet_rpc(self.default_wallet_name).dumphdinfo()["mnemonic"].split()), 12) # 12 words by default
78+
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_160").dumphdinfo()["mnemonic"].split()), 15) # 15 words
79+
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_192").dumphdinfo()["mnemonic"].split()), 18) # 18 words
80+
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_224").dumphdinfo()["mnemonic"].split()), 21) # 21 words
81+
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_256").dumphdinfo()["mnemonic"].split()), 24) # 24 words
4782

83+
mnemonic = self.nodes[0].get_wallet_rpc(self.default_wallet_name).listdescriptors(True)["descriptors"][1]["mnemonic"] if self.options.descriptors else self.nodes[0].get_wallet_rpc(self.default_wallet_name).dumphdinfo()["mnemonic"]
84+
assert_equal(mnemonic, mnemonic_pre)
4885

4986
if __name__ == '__main__':
5087
WalletMnemonicbitsTest().main ()

0 commit comments

Comments
 (0)