test: remove legacy wallet functional tests
Removes all legacy wallet specific functional tests. Also removes the --descriptor and --legacy-wallet options as these are no longer necessary with the legacy wallet removed.
This commit is contained in:
1 parent
20a9173717
commit
c847dee148
96 files changed
+389
-4669
No files matched your search
@@ -25,9 +25,6 @@ from test_framework.wallet_util import (
|
||||
|
||||
|
||||
class WalletSendTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
@@ -197,85 +194,46 @@ class WalletSendTest(BitcoinTestFramework):
|
||||
w2 = self.nodes[1].get_wallet_rpc("w2")
|
||||
xpriv = "tprv8ZgxMBicQKsPfHCsTwkiM1KT56RXbGGTqvc2hgqzycpwbHqqpcajQeMRZoBD35kW4RtyCemu6j34Ku5DEspmgjKdt2qe4SvRch5Kk8B8A2v"
|
||||
xpub = "tpubD6NzVbkrYhZ4YkEfMbRJkQyZe7wTkbTNRECozCtJPtdLRn6cT1QKb8yHjwAPcAr26eHBFYs5iLiFFnCbwPRsncCKUKCfubHDMGKzMVcN1Jg"
|
||||
if self.options.descriptors:
|
||||
w2.importdescriptors([{
|
||||
"desc": descsum_create("wpkh(" + xpriv + "/0/0/*)"),
|
||||
"timestamp": "now",
|
||||
"range": [0, 100],
|
||||
"active": True
|
||||
},{
|
||||
"desc": descsum_create("wpkh(" + xpriv + "/0/1/*)"),
|
||||
"timestamp": "now",
|
||||
"range": [0, 100],
|
||||
"active": True,
|
||||
"internal": True
|
||||
}])
|
||||
else:
|
||||
w2.sethdseed(True)
|
||||
w2.importdescriptors([{
|
||||
"desc": descsum_create("wpkh(" + xpriv + "/0/0/*)"),
|
||||
"timestamp": "now",
|
||||
"range": [0, 100],
|
||||
"active": True
|
||||
},{
|
||||
"desc": descsum_create("wpkh(" + xpriv + "/0/1/*)"),
|
||||
"timestamp": "now",
|
||||
"range": [0, 100],
|
||||
"active": True,
|
||||
"internal": True
|
||||
}])
|
||||
|
||||
# w3 is a watch-only wallet, based on w2
|
||||
self.nodes[1].createwallet(wallet_name="w3", disable_private_keys=True)
|
||||
w3 = self.nodes[1].get_wallet_rpc("w3")
|
||||
if self.options.descriptors:
|
||||
# Match the privkeys in w2 for descriptors
|
||||
res = w3.importdescriptors([{
|
||||
"desc": descsum_create("wpkh(" + xpub + "/0/0/*)"),
|
||||
"timestamp": "now",
|
||||
"range": [0, 100],
|
||||
"keypool": True,
|
||||
"active": True,
|
||||
"watchonly": True
|
||||
},{
|
||||
"desc": descsum_create("wpkh(" + xpub + "/0/1/*)"),
|
||||
"timestamp": "now",
|
||||
"range": [0, 100],
|
||||
"keypool": True,
|
||||
"active": True,
|
||||
"internal": True,
|
||||
"watchonly": True
|
||||
}])
|
||||
assert_equal(res, [{"success": True}, {"success": True}])
|
||||
# Match the privkeys in w2 for descriptors
|
||||
res = w3.importdescriptors([{
|
||||
"desc": descsum_create("wpkh(" + xpub + "/0/0/*)"),
|
||||
"timestamp": "now",
|
||||
"range": [0, 100],
|
||||
"keypool": True,
|
||||
"active": True,
|
||||
"watchonly": True
|
||||
},{
|
||||
"desc": descsum_create("wpkh(" + xpub + "/0/1/*)"),
|
||||
"timestamp": "now",
|
||||
"range": [0, 100],
|
||||
"keypool": True,
|
||||
"active": True,
|
||||
"internal": True,
|
||||
"watchonly": True
|
||||
}])
|
||||
assert_equal(res, [{"success": True}, {"success": True}])
|
||||
|
||||
for _ in range(3):
|
||||
a2_receive = w2.getnewaddress()
|
||||
if not self.options.descriptors:
|
||||
# Because legacy wallets use exclusively hardened derivation, we can't do a ranged import like we do for descriptors
|
||||
a2_change = w2.getrawchangeaddress() # doesn't actually use change derivation
|
||||
res = w3.importmulti([{
|
||||
"desc": w2.getaddressinfo(a2_receive)["desc"],
|
||||
"timestamp": "now",
|
||||
"keypool": True,
|
||||
"watchonly": True
|
||||
},{
|
||||
"desc": w2.getaddressinfo(a2_change)["desc"],
|
||||
"timestamp": "now",
|
||||
"keypool": True,
|
||||
"internal": True,
|
||||
"watchonly": True
|
||||
}])
|
||||
assert_equal(res, [{"success": True}, {"success": True}])
|
||||
|
||||
w0.sendtoaddress(a2_receive, 10) # fund w3
|
||||
self.generate(self.nodes[0], 1)
|
||||
|
||||
if not self.options.descriptors:
|
||||
# w4 has private keys enabled, but only contains watch-only keys (from w2)
|
||||
# This is legacy wallet behavior only as descriptor wallets don't allow watchonly and non-watchonly things in the same wallet.
|
||||
self.nodes[1].createwallet(wallet_name="w4", disable_private_keys=False)
|
||||
w4 = self.nodes[1].get_wallet_rpc("w4")
|
||||
for _ in range(3):
|
||||
a2_receive = w2.getnewaddress()
|
||||
res = w4.importmulti([{
|
||||
"desc": w2.getaddressinfo(a2_receive)["desc"],
|
||||
"timestamp": "now",
|
||||
"keypool": False,
|
||||
"watchonly": True
|
||||
}])
|
||||
assert_equal(res, [{"success": True}])
|
||||
|
||||
w0.sendtoaddress(a2_receive, 10) # fund w4
|
||||
self.generate(self.nodes[0], 1)
|
||||
|
||||
self.log.info("Send to address...")
|
||||
self.test_send(from_wallet=w0, to_wallet=w1, amount=1)
|
||||
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, add_to_wallet=True)
|
||||
@@ -306,16 +264,6 @@ class WalletSendTest(BitcoinTestFramework):
|
||||
res = w2.walletprocesspsbt(res["psbt"])
|
||||
assert res["complete"]
|
||||
|
||||
if not self.options.descriptors:
|
||||
# Descriptor wallets do not allow mixed watch-only and non-watch-only things in the same wallet.
|
||||
# This is specifically testing that w4 ignores its own private keys and creates a psbt with send
|
||||
# which is not something that needs to be tested in descriptor wallets.
|
||||
self.log.info("Create PSBT from wallet w4 with watch-only keys, sign with w2...")
|
||||
self.test_send(from_wallet=w4, to_wallet=w1, amount=1, expect_error=(-4, "Insufficient funds"))
|
||||
res = self.test_send(from_wallet=w4, to_wallet=w1, amount=1, include_watching=True, add_to_wallet=False)
|
||||
res = w2.walletprocesspsbt(res["psbt"])
|
||||
assert res["complete"]
|
||||
|
||||
self.log.info("Create OP_RETURN...")
|
||||
self.test_send(from_wallet=w0, to_wallet=w1, amount=1)
|
||||
self.test_send(from_wallet=w0, data="Hello World", expect_error=(-8, "Data must be hexadecimal string (not 'Hello World')"))
|
||||
@@ -510,10 +458,7 @@ class WalletSendTest(BitcoinTestFramework):
|
||||
|
||||
# Make a weird but signable script. sh(wsh(pkh())) descriptor accomplishes this
|
||||
desc = descsum_create("sh(wsh(pkh({})))".format(privkey))
|
||||
if self.options.descriptors:
|
||||
res = ext_fund.importdescriptors([{"desc": desc, "timestamp": "now"}])
|
||||
else:
|
||||
res = ext_fund.importmulti([{"desc": desc, "timestamp": "now"}])
|
||||
res = ext_fund.importdescriptors([{"desc": desc, "timestamp": "now"}])
|
||||
assert res[0]["success"]
|
||||
addr = self.nodes[0].deriveaddresses(desc)[0]
|
||||
addr_info = ext_fund.getaddressinfo(addr)
|
||||
|
||||
Reference in new issue
Block a user