aboutsummaryrefslogtreecommitdiff
path: root/test/functional/rpc_psbt.py
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@protonmail.com>2019-09-12 12:26:59 +0200
committerWladimir J. van der Laan <laanwj@protonmail.com>2019-09-12 12:49:44 +0200
commit1659b9b09966bc5db989b798a3918b5e66a58cec (patch)
treeb7b9836cc418de68283f3e6dad3e56110f4d118f /test/functional/rpc_psbt.py
parent2e4353d3f1558b2a1d41510ff8a5ba12e7caefff (diff)
parent0e7c7465bf2b9911da094d9790480f94e158f9a5 (diff)
Merge #16639: [0.17] abort when attempting to fund a transaction above -maxtxfee
0e7c7465bf2b9911da094d9790480f94e158f9a5 wallet: Fix -maxtxfee check by moving it to CWallet::CreateTransaction (João Barbosa) e9adb96f8854d21a02d80b4295f1a2e57579cc18 [wallet] abort when attempting to fund a transaction above maxtxfee (Sjors Provoost) Pull request description: Backport #16257. Cherry-picked from the 0.18 backport in #16414, but without the [wip] messages and without the last commit (which adds a test in a file that didn't exist in 0.17). ACKs for top commit: laanwj: ACK 0e7c7465bf2b9911da094d9790480f94e158f9a5 Tree-SHA512: a0fd603518487854be0b3815f34a8dabd2ed258850c032b08894a7c55cb135df5d3c103f76c5294e8065fec6d610e064acf01d24c77f02eaf996698a1e45d512
Diffstat (limited to 'test/functional/rpc_psbt.py')
-rwxr-xr-xtest/functional/rpc_psbt.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py
index ef895dd13a..1beda6e832 100755
--- a/test/functional/rpc_psbt.py
+++ b/test/functional/rpc_psbt.py
@@ -6,7 +6,15 @@
"""
from test_framework.test_framework import BitcoinTestFramework
-from test_framework.util import assert_equal, assert_raises_rpc_error, find_output, disconnect_nodes, connect_nodes_bi, sync_blocks
+from test_framework.util import (
+ assert_equal,
+ assert_greater_than,
+ assert_raises_rpc_error,
+ connect_nodes_bi,
+ disconnect_nodes,
+ find_output,
+ sync_blocks,
+)
import json
import os
@@ -122,6 +130,15 @@ class PSBTTest(BitcoinTestFramework):
assert_equal(walletprocesspsbt_out['complete'], True)
self.nodes[1].sendrawtransaction(self.nodes[1].finalizepsbt(walletprocesspsbt_out['psbt'])['hex'])
+ # feeRate of 0.1 BTC / KB produces a total fee slightly below -maxtxfee (~0.05280000):
+ res = self.nodes[1].walletcreatefundedpsbt([{"txid":txid,"vout":p2wpkh_pos},{"txid":txid,"vout":p2sh_p2wpkh_pos},{"txid":txid,"vout":p2pkh_pos}], {self.nodes[1].getnewaddress():29.99}, 0, {"feeRate": 0.1})
+ assert_greater_than(res["fee"], 0.05)
+ assert_greater_than(0.06, res["fee"])
+
+ # feeRate of 10 BTC / KB produces a total fee well above -maxtxfee
+ # previously this was silently capped at -maxtxfee
+ assert_raises_rpc_error(-4, "Fee exceeds maximum configured by -maxtxfee", self.nodes[1].walletcreatefundedpsbt, [{"txid":txid,"vout":p2wpkh_pos},{"txid":txid,"vout":p2sh_p2wpkh_pos},{"txid":txid,"vout":p2pkh_pos}], {self.nodes[1].getnewaddress():29.99}, 0, {"feeRate": 10})
+
# partially sign multisig things with node 1
psbtx = self.nodes[1].walletcreatefundedpsbt([{"txid":txid,"vout":p2wsh_pos},{"txid":txid,"vout":p2sh_pos},{"txid":txid,"vout":p2sh_p2wsh_pos}], {self.nodes[1].getnewaddress():29.99})['psbt']
walletprocesspsbt_out = self.nodes[1].walletprocesspsbt(psbtx)