Skip to content

Commit a46aeb6

Browse files
committed
[wallet] [tests] Test loadwallet
Add testcases to wallet_multiwallet.py to test the new `loadwallet` RPC method.
1 parent 5d15260 commit a46aeb6

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

test/functional/wallet_multiwallet.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,5 +170,46 @@ def run_test(self):
170170
assert_equal(w1.getwalletinfo()['paytxfee'], 0)
171171
assert_equal(w2.getwalletinfo()['paytxfee'], 4.0)
172172

173+
self.log.info("Test dynamic wallet loading")
174+
175+
self.restart_node(0, ['-nowallet'])
176+
assert_equal(node.listwallets(), [])
177+
assert_raises_rpc_error(-32601, "Method not found", node.getwalletinfo)
178+
179+
self.log.info("Load first wallet")
180+
loadwallet_name = node.loadwallet(wallet_names[0])
181+
assert_equal(loadwallet_name['name'], wallet_names[0])
182+
assert_equal(node.listwallets(), wallet_names[0:1])
183+
node.getwalletinfo()
184+
w1 = node.get_wallet_rpc(wallet_names[0])
185+
w1.getwalletinfo()
186+
187+
self.log.info("Load second wallet")
188+
loadwallet_name = node.loadwallet(wallet_names[1])
189+
assert_equal(loadwallet_name['name'], wallet_names[1])
190+
assert_equal(node.listwallets(), wallet_names[0:2])
191+
assert_raises_rpc_error(-19, "Wallet file not specified", node.getwalletinfo)
192+
w2 = node.get_wallet_rpc(wallet_names[1])
193+
w2.getwalletinfo()
194+
195+
self.log.info("Load remaining wallets")
196+
for wallet_name in wallet_names[2:]:
197+
loadwallet_name = self.nodes[0].loadwallet(wallet_name)
198+
assert_equal(loadwallet_name['name'], wallet_name)
199+
200+
assert_equal(set(self.nodes[0].listwallets()), set(wallet_names))
201+
202+
# Fail to load if wallet doesn't exist
203+
assert_raises_rpc_error(-18, 'Wallet wallets not found.', self.nodes[0].loadwallet, 'wallets')
204+
205+
# Fail to load duplicate wallets
206+
assert_raises_rpc_error(-4, 'Wallet file verification failed: Error loading wallet w1. Duplicate -wallet filename specified.', self.nodes[0].loadwallet, wallet_names[0])
207+
208+
# Fail to load if one wallet is a copy of another
209+
assert_raises_rpc_error(-1, "BerkeleyBatch: Can't open database w8_copy (duplicates fileid", self.nodes[0].loadwallet, 'w8_copy')
210+
211+
# Fail to load if wallet file is a symlink
212+
assert_raises_rpc_error(-4, "Wallet file verification failed: Invalid -wallet path 'w8_symlink'", self.nodes[0].loadwallet, 'w8_symlink')
213+
173214
if __name__ == '__main__':
174215
MultiWalletTest().main()

0 commit comments

Comments
 (0)