@@ -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
4986if __name__ == '__main__' :
5087 WalletMnemonicbitsTest ().main ()
0 commit comments