Skip to content

Commit 8d957e3

Browse files
committed
tests: Tests for migrating wallets by name, and providing passphrase
1 parent b443422 commit 8d957e3

File tree

1 file changed

+39
-2
lines changed

1 file changed

+39
-2
lines changed

test/functional/wallet_migration.py

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,11 +399,47 @@ def test_pk_coinbases(self):
399399
def test_encrypted(self):
400400
self.log.info("Test migration of an encrypted wallet")
401401
wallet = self.create_legacy_wallet("encrypted")
402+
default = self.nodes[0].get_wallet_rpc(self.default_wallet_name)
402403

403404
wallet.encryptwallet("pass")
405+
addr = wallet.getnewaddress()
406+
txid = default.sendtoaddress(addr, 1)
407+
self.generate(self.nodes[0], 1)
408+
bals = wallet.getbalances()
409+
410+
assert_raises_rpc_error(-4, "Error: Unable to produce descriptors for this legacy wallet. Make sure to provide the wallet's passphrase if it is encrypted.", wallet.migratewallet)
411+
412+
wallet.migratewallet(passphrase="pass")
404413

405-
assert_raises_rpc_error(-15, "Error: migratewallet on encrypted wallets is currently unsupported.", wallet.migratewallet)
406-
# TODO: Fix migratewallet so that we can actually migrate encrypted wallets
414+
info = wallet.getwalletinfo()
415+
assert_equal(info["descriptors"], True)
416+
assert_equal(info["format"], "sqlite")
417+
wallet.gettransaction(txid)
418+
419+
assert_equal(bals, wallet.getbalances())
420+
421+
def test_unloaded(self):
422+
self.log.info("Test migration of a wallet that isn't loaded")
423+
wallet = self.create_legacy_wallet("notloaded")
424+
default = self.nodes[0].get_wallet_rpc(self.default_wallet_name)
425+
426+
addr = wallet.getnewaddress()
427+
txid = default.sendtoaddress(addr, 1)
428+
self.generate(self.nodes[0], 1)
429+
bals = wallet.getbalances()
430+
431+
wallet.unloadwallet()
432+
433+
assert_raises_rpc_error(-8, "RPC endpoint wallet and wallet_name parameter specify different wallets", wallet.migratewallet, "someotherwallet")
434+
assert_raises_rpc_error(-8, "Either RPC endpoint wallet or wallet_name parameter must be provided", self.nodes[0].migratewallet)
435+
self.nodes[0].migratewallet("notloaded")
436+
437+
info = wallet.getwalletinfo()
438+
assert_equal(info["descriptors"], True)
439+
assert_equal(info["format"], "sqlite")
440+
wallet.gettransaction(txid)
441+
442+
assert_equal(bals, wallet.getbalances())
407443

408444
def run_test(self):
409445
self.generate(self.nodes[0], 101)
@@ -415,6 +451,7 @@ def run_test(self):
415451
self.test_no_privkeys()
416452
self.test_pk_coinbases()
417453
self.test_encrypted()
454+
self.test_unloaded()
418455

419456
if __name__ == '__main__':
420457
WalletMigrationTest().main()

0 commit comments

Comments
 (0)