Skip to content

Commit

Permalink
test: make functional test wallet_mnemonicbits.py works for descripto…
Browse files Browse the repository at this point in the history
…r wallets
  • Loading branch information
knst committed Feb 21, 2025
1 parent e3df697 commit f80cd34
Showing 1 changed file with 45 additions and 8 deletions.
53 changes: 45 additions & 8 deletions test/functional/wallet_mnemonicbits.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,31 @@ def run_test(self):
self.stop_node(0)
self.nodes[0].assert_start_raises_init_error(['-mnemonicbits=123'], "Error: Invalid '-mnemonicbits'. Allowed values: 128, 160, 192, 224, 256.")
self.start_node(0)
assert_equal(len(self.nodes[0].dumphdinfo()["mnemonic"].split()), 12) # 12 words by default

mnemonic_pre = self.nodes[0].listdescriptors(True)['descriptors'][1]["mnemonic"] if self.options.descriptors else self.nodes[0].dumphdinfo()["mnemonic"]

self.nodes[0].encryptwallet('pass')
self.nodes[0].walletpassphrase('pass', 100)
mnemonic = self.nodes[0].listdescriptors(True)['descriptors'][1]["mnemonic"] if self.options.descriptors else self.nodes[0].dumphdinfo()["mnemonic"]
assert_equal(mnemonic, mnemonic_pre)

if self.options.descriptors:
assert not "mnemonic" in self.nodes[0].listdescriptors()['descriptors'][0]
assert "mnemonic" in self.nodes[0].listdescriptors(True)['descriptors'][0]
descriptors = self.nodes[0].listdescriptors(True)['descriptors']
assert_equal(len(descriptors[0]['mnemonic'].split()), 12)
assert_equal(len(descriptors[1]['mnemonic'].split()), 12)
assert_equal(descriptors[0]['mnemonic'], descriptors[1]['mnemonic'])

mnemonic_count = 0
for desc in descriptors:
if 'mnemonic' in desc:
mnemonic_count += 1
# Coinbase imported private key doesn't have mnemonic; there should be 2 active and 2 inactive mnemonic
assert_equal(mnemonic_count, 4)
assert_equal(len(descriptors), 5)
else:
assert_equal(len(self.nodes[0].dumphdinfo()["mnemonic"].split()), 12) # 12 words by default

self.log.info("Can have multiple wallets with different mnemonic length loaded at the same time")
self.restart_node(0, extra_args=["-mnemonicbits=160"])
Expand All @@ -34,17 +58,30 @@ def run_test(self):
self.restart_node(0, extra_args=["-mnemonicbits=224"])
self.nodes[0].createwallet("wallet_224")
self.restart_node(0, extra_args=["-mnemonicbits=256"])
self.nodes[0].get_wallet_rpc(self.default_wallet_name).walletpassphrase('pass', 100)
self.nodes[0].loadwallet("wallet_160")
self.nodes[0].loadwallet("wallet_192")
self.nodes[0].loadwallet("wallet_224")
self.nodes[0].createwallet("wallet_256", False, True) # blank
self.nodes[0].get_wallet_rpc("wallet_256").upgradetohd()
assert_equal(len(self.nodes[0].get_wallet_rpc(self.default_wallet_name).dumphdinfo()["mnemonic"].split()), 12) # 12 words by default
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_160").dumphdinfo()["mnemonic"].split()), 15) # 15 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_192").dumphdinfo()["mnemonic"].split()), 18) # 18 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_224").dumphdinfo()["mnemonic"].split()), 21) # 21 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_256").dumphdinfo()["mnemonic"].split()), 24) # 24 words
if self.options.descriptors:
self.nodes[0].createwallet("wallet_256", False, True, "", False, True) # blank Descriptors
self.nodes[0].get_wallet_rpc("wallet_256").upgradetohd()
# first descriptor is private key with no mnemonic for CbTx (see node.importprivkey), we use number#1 here instead
assert_equal(len(self.nodes[0].get_wallet_rpc(self.default_wallet_name).listdescriptors(True)["descriptors"][1]["mnemonic"].split()), 12) # 12 words by default
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_160").listdescriptors(True)["descriptors"][0]["mnemonic"].split()), 15) # 15 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_192").listdescriptors(True)["descriptors"][0]["mnemonic"].split()), 18) # 18 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_224").listdescriptors(True)["descriptors"][0]["mnemonic"].split()), 21) # 21 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_256").listdescriptors(True)["descriptors"][0]["mnemonic"].split()), 24) # 24 words
else:
self.nodes[0].createwallet("wallet_256", False, True) # blank HD legacy
self.nodes[0].get_wallet_rpc("wallet_256").upgradetohd()
assert_equal(len(self.nodes[0].get_wallet_rpc(self.default_wallet_name).dumphdinfo()["mnemonic"].split()), 12) # 12 words by default
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_160").dumphdinfo()["mnemonic"].split()), 15) # 15 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_192").dumphdinfo()["mnemonic"].split()), 18) # 18 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_224").dumphdinfo()["mnemonic"].split()), 21) # 21 words
assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_256").dumphdinfo()["mnemonic"].split()), 24) # 24 words

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"]
assert_equal(mnemonic, mnemonic_pre)

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

0 comments on commit f80cd34

Please sign in to comment.