aboutsummaryrefslogtreecommitdiff
path: root/test/functional
diff options
context:
space:
mode:
authorSebastian Falbesoner <sebastian.falbesoner@gmail.com>2022-07-19 15:01:06 +0200
committerSebastian Falbesoner <sebastian.falbesoner@gmail.com>2022-07-23 09:08:54 +0200
commit4e616d20c9e92b5118a07d4a4b8562fffc66e767 (patch)
tree4c0b1b401bf1ebec549776d91ffce24e40982b4a /test/functional
parent2a428c79897761579efc990aaf810b0eb3e572b6 (diff)
test: check that combining PSBTs with different txs fails
Diffstat (limited to 'test/functional')
-rwxr-xr-xtest/functional/rpc_psbt.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py
index a6566f152f..23a581469e 100755
--- a/test/functional/rpc_psbt.py
+++ b/test/functional/rpc_psbt.py
@@ -820,6 +820,16 @@ class PSBTTest(BitcoinTestFramework):
assert hash.hex() in res_input[preimage_key]
assert_equal(res_input[preimage_key][hash.hex()], preimage.hex())
+ self.log.info("Test that combining PSBTs with different transactions fails")
+ tx = CTransaction()
+ tx.vin = [CTxIn(outpoint=COutPoint(hash=int('aa' * 32, 16), n=0), scriptSig=b"")]
+ tx.vout = [CTxOut(nValue=0, scriptPubKey=b"")]
+ psbt1 = PSBT(g=PSBTMap({PSBT_GLOBAL_UNSIGNED_TX: tx.serialize()}), i=[PSBTMap()], o=[PSBTMap()]).to_base64()
+ tx.vout[0].nValue += 1 # slightly modify tx
+ psbt2 = PSBT(g=PSBTMap({PSBT_GLOBAL_UNSIGNED_TX: tx.serialize()}), i=[PSBTMap()], o=[PSBTMap()]).to_base64()
+ assert_raises_rpc_error(-8, "PSBTs not compatible (different transactions)", self.nodes[0].combinepsbt, [psbt1, psbt2])
+ assert_equal(self.nodes[0].combinepsbt([psbt1, psbt1]), psbt1)
+
if __name__ == '__main__':
PSBTTest().main()