mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-28 14:59:22 +01:00
test: Add Wallet Unlock Context Manager
Add Context Manager to manage wallet locking/unlocking with passphrase
This commit is contained in:
@@ -12,6 +12,7 @@ from test_framework.util import (
|
||||
assert_equal,
|
||||
assert_raises_rpc_error,
|
||||
)
|
||||
from test_framework.wallet_util import WalletUnlock
|
||||
|
||||
|
||||
def read_dump(file_name, addrs, script_addrs, hd_master_addr_old):
|
||||
@@ -173,26 +174,26 @@ class WalletDumpTest(BitcoinTestFramework):
|
||||
|
||||
# encrypt wallet, restart, unlock and dump
|
||||
self.nodes[0].encryptwallet('test')
|
||||
self.nodes[0].walletpassphrase("test", 999000)
|
||||
# Should be a no-op:
|
||||
self.nodes[0].keypoolrefill()
|
||||
self.nodes[0].dumpwallet(wallet_enc_dump)
|
||||
with WalletUnlock(self.nodes[0], "test"):
|
||||
# Should be a no-op:
|
||||
self.nodes[0].keypoolrefill()
|
||||
self.nodes[0].dumpwallet(wallet_enc_dump)
|
||||
|
||||
found_comments, found_legacy_addr, found_p2sh_segwit_addr, found_bech32_addr, found_script_addr, found_addr_chg, found_addr_rsv, _ = \
|
||||
read_dump(wallet_enc_dump, addrs, [multisig_addr], hd_master_addr_unenc)
|
||||
assert '# End of dump' in found_comments # Check that file is not corrupt
|
||||
assert_equal(dump_time_str, next(c for c in found_comments if c.startswith('# * Created on')))
|
||||
assert_equal(dump_best_block_1, next(c for c in found_comments if c.startswith('# * Best block')))
|
||||
assert_equal(dump_best_block_2, next(c for c in found_comments if c.startswith('# mined on')))
|
||||
assert_equal(found_legacy_addr, test_addr_count) # all keys must be in the dump
|
||||
assert_equal(found_p2sh_segwit_addr, test_addr_count) # all keys must be in the dump
|
||||
assert_equal(found_bech32_addr, test_addr_count) # all keys must be in the dump
|
||||
assert_equal(found_script_addr, 1)
|
||||
assert_equal(found_addr_chg, 90 * 2) # old reserve keys are marked as change now
|
||||
assert_equal(found_addr_rsv, 90 * 2)
|
||||
found_comments, found_legacy_addr, found_p2sh_segwit_addr, found_bech32_addr, found_script_addr, found_addr_chg, found_addr_rsv, _ = \
|
||||
read_dump(wallet_enc_dump, addrs, [multisig_addr], hd_master_addr_unenc)
|
||||
assert '# End of dump' in found_comments # Check that file is not corrupt
|
||||
assert_equal(dump_time_str, next(c for c in found_comments if c.startswith('# * Created on')))
|
||||
assert_equal(dump_best_block_1, next(c for c in found_comments if c.startswith('# * Best block')))
|
||||
assert_equal(dump_best_block_2, next(c for c in found_comments if c.startswith('# mined on')))
|
||||
assert_equal(found_legacy_addr, test_addr_count) # all keys must be in the dump
|
||||
assert_equal(found_p2sh_segwit_addr, test_addr_count) # all keys must be in the dump
|
||||
assert_equal(found_bech32_addr, test_addr_count) # all keys must be in the dump
|
||||
assert_equal(found_script_addr, 1)
|
||||
assert_equal(found_addr_chg, 90 * 2) # old reserve keys are marked as change now
|
||||
assert_equal(found_addr_rsv, 90 * 2)
|
||||
|
||||
# Overwriting should fail
|
||||
assert_raises_rpc_error(-8, "already exists", lambda: self.nodes[0].dumpwallet(wallet_enc_dump))
|
||||
# Overwriting should fail
|
||||
assert_raises_rpc_error(-8, "already exists", lambda: self.nodes[0].dumpwallet(wallet_enc_dump))
|
||||
|
||||
# Restart node with new wallet, and test importwallet
|
||||
self.restart_node(0)
|
||||
|
||||
Reference in New Issue
Block a user