mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-12 19:20:42 +02:00
QA: Functional test for sweepprivkeys
This commit is contained in:
parent
42d663b1e5
commit
05c676d090
@ -183,6 +183,7 @@ BASE_SCRIPTS = [
|
||||
'interface_bitcoin_cli.py --descriptors',
|
||||
'feature_bind_extra.py',
|
||||
'mempool_resurrect.py',
|
||||
'wallet_sweepprivkeys.py',
|
||||
'wallet_txn_doublespend.py --mineblock',
|
||||
'tool_wallet.py --legacy-wallet',
|
||||
'tool_wallet.py --legacy-wallet --bdbro',
|
||||
|
67
test/functional/wallet_sweepprivkeys.py
Executable file
67
test/functional/wallet_sweepprivkeys.py
Executable file
@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2014-2022 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test the sweepprivkeys RPC."""
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal, assert_fee_amount
|
||||
|
||||
class SweepPrivKeysTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
|
||||
def check_balance(self, delta, txid):
|
||||
node = self.nodes[0]
|
||||
new_balances = node.getbalances()['mine']
|
||||
new_balance = new_balances['trusted'] + new_balances['untrusted_pending']
|
||||
balance_change = new_balance - self.balance
|
||||
actual_fee = delta - balance_change
|
||||
tx_vsize = node.getrawtransaction(txid, True)['vsize']
|
||||
assert_fee_amount(actual_fee, tx_vsize, self.tx_feerate)
|
||||
self.balance = new_balance
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
|
||||
def run_test(self):
|
||||
node = self.nodes[0]
|
||||
miner = self.nodes[1]
|
||||
|
||||
keys = (
|
||||
('mkckmmfVv89sW1HUjyRuydGhwFmSaYtRvG', '92YkaycAxLPUqbbV78V9nNngKLnyVd9T8uZuZAzQnc26dJSP4fm'),
|
||||
('mw8s1FS2Vr7GwQF8bnDVUQHQZq5qWqz5kq', '93VijJgAYnVUGXAfxYhbMHVGVwQUEXK1YnPvcCod3x1RLbzUhXe'),
|
||||
)
|
||||
|
||||
# This test is not meant to test fee estimation and we'd like
|
||||
# to be sure all txs are sent at a consistent desired feerate
|
||||
self.tx_feerate = self.nodes[0].getnetworkinfo()['relayfee'] * 2
|
||||
node.settxfee(self.tx_feerate)
|
||||
|
||||
self.generate(miner, 120)
|
||||
self.balance = node.getbalance('*', 0)
|
||||
|
||||
txid = node.sendtoaddress(keys[0][0], 10)
|
||||
self.check_balance(-10, txid)
|
||||
|
||||
# Sweep from mempool
|
||||
txid = node.sweepprivkeys({'privkeys': (keys[0][1],), 'label': 'test 1'})
|
||||
assert_equal(node.listtransactions()[-1]['label'], 'test 1')
|
||||
self.check_balance(10, txid)
|
||||
|
||||
txid = node.sendtoaddress(keys[1][0], 5)
|
||||
self.check_balance(-5, txid)
|
||||
self.sync_all()
|
||||
self.generate(miner, 4)
|
||||
assert_equal(self.balance, node.getbalance('*', 1))
|
||||
|
||||
# Sweep from blockchain
|
||||
txid = node.sweepprivkeys({'privkeys': (keys[1][1],), 'label': 'test 2'})
|
||||
assert_equal(node.listtransactions()[-1]['label'], 'test 2')
|
||||
self.check_balance(5, txid)
|
||||
|
||||
if __name__ == '__main__':
|
||||
SweepPrivKeysTest(__file__).main()
|
Loading…
Reference in New Issue
Block a user