@ -7,7 +7,10 @@
import os
from test_framework . test_framework import BitcoinTestFramework
from test_framework . util import ( assert_equal , assert_raises_rpc_error )
from test_framework . util import (
assert_equal ,
assert_raises_rpc_error ,
)
def read_dump ( file_name , addrs , script_addrs , hd_master_addr_old ) :
@ -88,7 +91,8 @@ class WalletDumpTest(BitcoinTestFramework):
self . start_nodes ( )
def run_test ( self ) :
tmpdir = self . options . tmpdir
wallet_unenc_dump = os . path . join ( self . nodes [ 0 ] . datadir , " wallet.unencrypted.dump " )
wallet_enc_dump = os . path . join ( self . nodes [ 0 ] . datadir , " wallet.encrypted.dump " )
# generate 20 addresses to compare against the dump
# but since we add a p2sh-p2wpkh address for the first pubkey in the
@ -108,11 +112,11 @@ class WalletDumpTest(BitcoinTestFramework):
script_addrs = [ witness_addr , multisig_addr ]
# dump unencrypted wallet
result = self . nodes [ 0 ] . dumpwallet ( tmpdir + " /node0/wallet.unencrypted.dump " )
assert_equal ( result [ ' filename ' ] , os. path . abspath ( tmpdir + " /node0/wallet.unencrypted.dump " ) )
result = self . nodes [ 0 ] . dumpwallet ( wallet_unenc_dump )
assert_equal ( result [ ' filename ' ] , wallet_unenc_dump )
found_addr , found_script_addr , found_addr_chg , found_addr_rsv , hd_master_addr_unenc , witness_addr_ret = \
read_dump ( tmpdir + " /node0/wallet.unencrypted.dump " , addrs , script_addrs , None )
read_dump ( wallet_unenc_dump , addrs , script_addrs , None )
assert_equal ( found_addr , test_addr_count ) # all keys must be in the dump
assert_equal ( found_script_addr , 2 ) # all scripts must be in the dump
assert_equal ( found_addr_chg , 50 ) # 50 blocks where mined
@ -125,10 +129,10 @@ class WalletDumpTest(BitcoinTestFramework):
self . nodes [ 0 ] . walletpassphrase ( ' test ' , 10 )
# Should be a no-op:
self . nodes [ 0 ] . keypoolrefill ( )
self . nodes [ 0 ] . dumpwallet ( tmpdir + " /node0/wallet.encrypted.dump " )
self . nodes [ 0 ] . dumpwallet ( wallet_enc_dump )
found_addr , found_script_addr , found_addr_chg , found_addr_rsv , _ , witness_addr_ret = \
read_dump ( tmpdir + " /node0/wallet.encrypted.dump " , addrs , script_addrs , hd_master_addr_unenc )
read_dump ( wallet_enc_dump , addrs , script_addrs , hd_master_addr_unenc )
assert_equal ( found_addr , test_addr_count )
assert_equal ( found_script_addr , 2 )
assert_equal ( found_addr_chg , 90 * 2 + 50 ) # old reserve keys are marked as change now
@ -136,7 +140,7 @@ class WalletDumpTest(BitcoinTestFramework):
assert_equal ( witness_addr_ret , witness_addr )
# Overwriting should fail
assert_raises_rpc_error ( - 8 , " already exists " , self . nodes [ 0 ] . dumpwallet , tmpdir + " /node0/wallet.unencrypted.dump " )
assert_raises_rpc_error ( - 8 , " already exists " , lambda : self . nodes [ 0 ] . dumpwallet (wallet_enc_dump ) )
# Restart node with new wallet, and test importwallet
self . stop_node ( 0 )
@ -146,11 +150,11 @@ class WalletDumpTest(BitcoinTestFramework):
result = self . nodes [ 0 ] . getaddressinfo ( multisig_addr )
assert ( result [ ' ismine ' ] == False )
self . nodes [ 0 ] . importwallet ( os. path . abspath ( tmpdir + " /node0/wallet.unencrypted.dump " ) )
self . nodes [ 0 ] . importwallet ( wallet_unenc_dump )
# Now check IsMine is true
result = self . nodes [ 0 ] . getaddressinfo ( multisig_addr )
assert ( result [ ' ismine ' ] == True )
if __name__ == ' __main__ ' :
WalletDumpTest ( ) . main ( )
WalletDumpTest ( ) . main ( )