mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-28 18:10:20 +02:00
test: Replace importprivkey with wallet_importprivkey
importprivkey was a legacy wallet only RPC which had a helper for descriptor wallets in tests. Add wallet_importprivkey helper and use it wherever importprivkey is used (other than backward compatibility tests)
This commit is contained in:
@@ -12,6 +12,7 @@ from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
assert_raises_rpc_error,
|
||||
wallet_importprivkey,
|
||||
)
|
||||
import json
|
||||
import os
|
||||
@@ -45,7 +46,7 @@ class GetblockstatsTest(BitcoinTestFramework):
|
||||
self.nodes[0].setmocktime(mocktime)
|
||||
self.nodes[0].createwallet(wallet_name='test')
|
||||
privkey = self.nodes[0].get_deterministic_priv_key().key
|
||||
self.nodes[0].importprivkey(privkey)
|
||||
wallet_importprivkey(self.nodes[0], privkey, 0)
|
||||
|
||||
self.generate(self.nodes[0], COINBASE_MATURITY + 1)
|
||||
|
||||
|
@@ -44,6 +44,7 @@ from test_framework.util import (
|
||||
assert_greater_than_or_equal,
|
||||
assert_raises_rpc_error,
|
||||
find_vout_for_address,
|
||||
wallet_importprivkey,
|
||||
)
|
||||
from test_framework.wallet_util import (
|
||||
calculate_input_weight,
|
||||
@@ -622,7 +623,7 @@ class PSBTTest(BitcoinTestFramework):
|
||||
self.nodes[2].createwallet(wallet_name="wallet{}".format(i))
|
||||
wrpc = self.nodes[2].get_wallet_rpc("wallet{}".format(i))
|
||||
for key in signer['privkeys']:
|
||||
wrpc.importprivkey(key)
|
||||
wallet_importprivkey(wrpc, key, "now")
|
||||
signed_tx = wrpc.walletprocesspsbt(signer['psbt'], True, "ALL")['psbt']
|
||||
assert_equal(signed_tx, signer['result'])
|
||||
|
||||
@@ -878,7 +879,7 @@ class PSBTTest(BitcoinTestFramework):
|
||||
addr = self.nodes[0].deriveaddresses(desc)[0]
|
||||
self.nodes[0].sendtoaddress(addr, 10)
|
||||
self.generate(self.nodes[0], 1)
|
||||
self.nodes[0].importprivkey(privkey)
|
||||
wallet_importprivkey(self.nodes[0], privkey, "now")
|
||||
|
||||
psbt = watchonly.sendall([wallet.getnewaddress()])["psbt"]
|
||||
signed_tx = self.nodes[0].walletprocesspsbt(psbt)
|
||||
|
@@ -35,6 +35,7 @@ from .util import (
|
||||
initialize_datadir,
|
||||
p2p_port,
|
||||
wait_until_helper_internal,
|
||||
wallet_importprivkey,
|
||||
)
|
||||
|
||||
|
||||
@@ -485,7 +486,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
n = self.nodes[node]
|
||||
if wallet_name is not None:
|
||||
n.createwallet(wallet_name=wallet_name, load_on_startup=True)
|
||||
n.importprivkey(privkey=n.get_deterministic_priv_key().key, label='coinbase', rescan=True)
|
||||
wallet_importprivkey(n.get_wallet_rpc(wallet_name), n.get_deterministic_priv_key().key, 0, label="coinbase")
|
||||
|
||||
def run_test(self):
|
||||
"""Tests must override this method to define test logic"""
|
||||
|
@@ -931,20 +931,6 @@ class RPCOverloadWrapper():
|
||||
def __getattr__(self, name):
|
||||
return getattr(self.rpc, name)
|
||||
|
||||
def importprivkey(self, privkey, *, label=None, rescan=None):
|
||||
wallet_info = self.getwalletinfo()
|
||||
if 'descriptors' not in wallet_info or ('descriptors' in wallet_info and not wallet_info['descriptors']):
|
||||
return self.__getattr__('importprivkey')(privkey, label, rescan)
|
||||
desc = descsum_create('combo(' + privkey + ')')
|
||||
req = [{
|
||||
'desc': desc,
|
||||
'timestamp': 0 if rescan else 'now',
|
||||
'label': label if label else '',
|
||||
}]
|
||||
import_res = self.importdescriptors(req)
|
||||
if not import_res[0]['success']:
|
||||
raise JSONRPCException(import_res[0]['error'])
|
||||
|
||||
def addmultisigaddress(self, nrequired, keys, *, label=None, address_type=None):
|
||||
wallet_info = self.getwalletinfo()
|
||||
if 'descriptors' not in wallet_info or ('descriptors' in wallet_info and not wallet_info['descriptors']):
|
||||
|
@@ -20,6 +20,7 @@ import time
|
||||
|
||||
from . import coverage
|
||||
from .authproxy import AuthServiceProxy, JSONRPCException
|
||||
from .descriptors import descsum_create
|
||||
from collections.abc import Callable
|
||||
from typing import Optional, Union
|
||||
|
||||
@@ -609,3 +610,13 @@ def sync_txindex(test_framework, node):
|
||||
sync_start = int(time.time())
|
||||
test_framework.wait_until(lambda: node.getindexinfo("txindex")["txindex"]["synced"])
|
||||
test_framework.log.debug(f"Synced in {time.time() - sync_start} seconds")
|
||||
|
||||
def wallet_importprivkey(wallet_rpc, privkey, timestamp, *, label=""):
|
||||
desc = descsum_create("combo(" + privkey + ")")
|
||||
req = [{
|
||||
"desc": desc,
|
||||
"timestamp": timestamp,
|
||||
"label": label,
|
||||
}]
|
||||
import_res = wallet_rpc.importdescriptors(req)
|
||||
assert_equal(import_res[0]["success"], True)
|
||||
|
@@ -14,7 +14,10 @@ from test_framework.blocktools import DIFF_1_N_BITS
|
||||
from test_framework.key import ECKey
|
||||
from test_framework.script_util import key_to_p2wpkh_script
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
wallet_importprivkey,
|
||||
)
|
||||
from test_framework.wallet_util import bytes_to_wif
|
||||
|
||||
|
||||
@@ -42,7 +45,7 @@ class SignetMinerTest(BitcoinTestFramework):
|
||||
def run_test(self):
|
||||
node = self.nodes[0]
|
||||
# import private key needed for signing block
|
||||
node.importprivkey(bytes_to_wif(CHALLENGE_PRIVATE_KEY))
|
||||
wallet_importprivkey(node, bytes_to_wif(CHALLENGE_PRIVATE_KEY), "now")
|
||||
|
||||
# generate block with signet miner tool
|
||||
base_dir = self.config["environment"]["SRCDIR"]
|
||||
|
@@ -10,6 +10,7 @@ from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
assert_raises_rpc_error,
|
||||
wallet_importprivkey,
|
||||
)
|
||||
from test_framework.wallet_util import generate_keypair, WalletUnlock
|
||||
|
||||
@@ -65,7 +66,7 @@ class CreateWalletTest(BitcoinTestFramework):
|
||||
assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w3.getnewaddress)
|
||||
assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w3.getrawchangeaddress)
|
||||
# Import private key
|
||||
w3.importprivkey(generate_keypair(wif=True)[0])
|
||||
wallet_importprivkey(w3, generate_keypair(wif=True)[0], "now")
|
||||
# Imported private keys are currently ignored by the keypool
|
||||
assert_equal(w3.getwalletinfo()['keypoolsize'], 0)
|
||||
assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w3.getnewaddress)
|
||||
|
@@ -10,6 +10,7 @@ from test_framework.blocktools import COINBASE_MATURITY
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
wallet_importprivkey,
|
||||
)
|
||||
|
||||
|
||||
@@ -39,7 +40,7 @@ class WalletHDTest(BitcoinTestFramework):
|
||||
# Import a non-HD private key in the HD wallet
|
||||
non_hd_add = 'bcrt1qmevj8zfx0wdvp05cqwkmr6mxkfx60yezwjksmt'
|
||||
non_hd_key = 'cS9umN9w6cDMuRVYdbkfE4c7YUFLJRoXMfhQ569uY4odiQbVN8Rt'
|
||||
self.nodes[1].importprivkey(non_hd_key)
|
||||
wallet_importprivkey(self.nodes[1], non_hd_key, "now")
|
||||
|
||||
# This should be enough to keep the master key and the non-HD key
|
||||
self.nodes[1].backupwallet(self.nodes[1].datadir_path / "hd.bak")
|
||||
|
@@ -15,6 +15,7 @@ from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
assert_raises_rpc_error,
|
||||
wallet_importprivkey,
|
||||
)
|
||||
from test_framework.wallet_util import generate_keypair
|
||||
|
||||
@@ -38,7 +39,7 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
|
||||
# privkey
|
||||
address3_privkey, address3_pubkey = generate_keypair(wif=True)
|
||||
address3 = key_to_p2wpkh(address3_pubkey)
|
||||
self.nodes[0].importprivkey(address3_privkey)
|
||||
wallet_importprivkey(self.nodes[0], address3_privkey, "now")
|
||||
|
||||
# Check only one address
|
||||
address_info = self.nodes[0].getaddressinfo(address1)
|
||||
@@ -95,7 +96,7 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
|
||||
|
||||
# Import with private key with no rescan
|
||||
w1 = self.nodes[1].get_wallet_rpc(self.default_wallet_name)
|
||||
w1.importprivkey(privkey=address3_privkey, rescan=False)
|
||||
wallet_importprivkey(w1, address3_privkey, "now")
|
||||
w1.importprunedfunds(rawtxn3, proof3)
|
||||
assert [tx for tx in w1.listtransactions() if tx['txid'] == txnid3]
|
||||
balance3 = w1.getbalance()
|
||||
|
@@ -13,6 +13,7 @@ from test_framework.util import (
|
||||
assert_array_result,
|
||||
assert_equal,
|
||||
assert_raises_rpc_error,
|
||||
wallet_importprivkey,
|
||||
)
|
||||
from test_framework.wallet_util import generate_keypair
|
||||
|
||||
@@ -227,10 +228,10 @@ class ListSinceBlockTest(BitcoinTestFramework):
|
||||
address = key_to_p2wpkh(pubkey)
|
||||
self.nodes[2].sendtoaddress(address, 10)
|
||||
self.generate(self.nodes[2], 6)
|
||||
self.nodes[2].importprivkey(privkey)
|
||||
wallet_importprivkey(self.nodes[2], privkey, "now")
|
||||
utxos = self.nodes[2].listunspent()
|
||||
utxo = [u for u in utxos if u["address"] == address][0]
|
||||
self.nodes[1].importprivkey(privkey)
|
||||
wallet_importprivkey(self.nodes[1], privkey, "now")
|
||||
|
||||
# Split network into two
|
||||
self.split_network()
|
||||
|
Reference in New Issue
Block a user