mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
435fe5cd96
If the serialized transaction passed to `fundrawtransaction` contains duplicates, they will be deserialized and added to the transaction. Add a test to ensure this behavior is not changed during the refactor. A user can pass any number of duplicated and unrelated addresses as an SFFO argument to `sendmany` and the RPC will not throw an error (note, all the rest of the RPCs which take SFFO as an argument will error if the user passes duplicates or specifies outputs not present in the transaction). Add a test to ensure this behavior is not changed during the refactor.
43 lines
1.5 KiB
Python
Executable file
43 lines
1.5 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
# Copyright (c) 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 sendmany RPC command."""
|
|
|
|
from test_framework.test_framework import BitcoinTestFramework
|
|
|
|
class SendmanyTest(BitcoinTestFramework):
|
|
# Setup and helpers
|
|
def add_options(self, parser):
|
|
self.add_wallet_options(parser)
|
|
|
|
|
|
def skip_test_if_missing_module(self):
|
|
self.skip_if_no_wallet()
|
|
|
|
|
|
def set_test_params(self):
|
|
self.num_nodes = 1
|
|
self.setup_clean_chain = True
|
|
|
|
def test_sffo_repeated_address(self):
|
|
addr_1 = self.wallet.getnewaddress()
|
|
addr_2 = self.wallet.getnewaddress()
|
|
addr_3 = self.wallet.getnewaddress()
|
|
|
|
self.log.info("Test using duplicate address in SFFO argument")
|
|
self.def_wallet.sendmany(dummy='', amounts={addr_1: 1, addr_2: 1}, subtractfeefrom=[addr_1, addr_1, addr_1])
|
|
self.log.info("Test using address not present in tx.vout in SFFO argument")
|
|
self.def_wallet.sendmany(dummy='', amounts={addr_1: 1, addr_2: 1}, subtractfeefrom=[addr_3])
|
|
|
|
def run_test(self):
|
|
self.nodes[0].createwallet("activewallet")
|
|
self.wallet = self.nodes[0].get_wallet_rpc("activewallet")
|
|
self.def_wallet = self.nodes[0].get_wallet_rpc(self.default_wallet_name)
|
|
self.generate(self.nodes[0], 101)
|
|
|
|
self.test_sffo_repeated_address()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
SendmanyTest().main()
|