|
| 1 | +#!/usr/bin/env python3 |
| 2 | +# Copyright (c) 2023 The Dash Core developers |
| 3 | +# Distributed under the MIT software license, see the accompanying |
| 4 | +# file COPYING or http://www.opensource.org/licenses/mit-license.php. |
| 5 | +"""Test -mnemonicbits wallet option.""" |
| 6 | + |
| 7 | +from test_framework.test_framework import BitcoinTestFramework |
| 8 | +from test_framework.util import ( |
| 9 | + assert_equal, |
| 10 | +) |
| 11 | + |
| 12 | +class WalletMnemonicbitsTest(BitcoinTestFramework): |
| 13 | + def set_test_params(self): |
| 14 | + self.setup_clean_chain = True |
| 15 | + self.num_nodes = 1 |
| 16 | + self.extra_args = [['-usehd=1']] |
| 17 | + |
| 18 | + def skip_test_if_missing_module(self): |
| 19 | + self.skip_if_no_wallet() |
| 20 | + |
| 21 | + def run_test(self): |
| 22 | + self.log.info("Test -mnemonicbits") |
| 23 | + |
| 24 | + self.log.info("Invalid -mnemonicbits should rise an error") |
| 25 | + self.stop_node(0) |
| 26 | + self.nodes[0].assert_start_raises_init_error(self.extra_args[0] + ['-mnemonicbits=123'], "Error: Invalid '-mnemonicbits'. Allowed values: 128, 160, 192, 224, 256.") |
| 27 | + self.start_node(0) |
| 28 | + assert_equal(len(self.nodes[0].dumphdinfo()["mnemonic"].split()), 12) # 12 words by default |
| 29 | + |
| 30 | + self.log.info("Can have multiple wallets with different mnemonic length loaded at the same time") |
| 31 | + self.restart_node(0, extra_args=self.extra_args[0] + ["-mnemonicbits=160"]) |
| 32 | + self.nodes[0].createwallet("wallet_160") |
| 33 | + self.restart_node(0, extra_args=self.extra_args[0] + ["-mnemonicbits=192"]) |
| 34 | + self.nodes[0].createwallet("wallet_192") |
| 35 | + self.restart_node(0, extra_args=self.extra_args[0] + ["-mnemonicbits=224"]) |
| 36 | + self.nodes[0].createwallet("wallet_224") |
| 37 | + self.restart_node(0, extra_args=self.extra_args[0] + ["-mnemonicbits=256"]) |
| 38 | + self.nodes[0].loadwallet("wallet_160") |
| 39 | + self.nodes[0].loadwallet("wallet_192") |
| 40 | + self.nodes[0].loadwallet("wallet_224") |
| 41 | + self.nodes[0].createwallet("wallet_256", False, True) # blank |
| 42 | + self.nodes[0].get_wallet_rpc("wallet_256").upgradetohd() |
| 43 | + assert_equal(len(self.nodes[0].get_wallet_rpc(self.default_wallet_name).dumphdinfo()["mnemonic"].split()), 12) # 12 words by default |
| 44 | + assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_160").dumphdinfo()["mnemonic"].split()), 15) # 15 words |
| 45 | + assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_192").dumphdinfo()["mnemonic"].split()), 18) # 18 words |
| 46 | + assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_224").dumphdinfo()["mnemonic"].split()), 21) # 21 words |
| 47 | + assert_equal(len(self.nodes[0].get_wallet_rpc("wallet_256").dumphdinfo()["mnemonic"].split()), 24) # 24 words |
| 48 | + |
| 49 | + |
| 50 | +if __name__ == '__main__': |
| 51 | + WalletMnemonicbitsTest().main () |
0 commit comments