diff options
author | Matthew Zipkin <pinheadmz@gmail.com> | 2023-09-05 08:45:07 -0400 |
---|---|---|
committer | Matthew Zipkin <pinheadmz@gmail.com> | 2023-09-05 09:14:32 -0400 |
commit | e3d484b603abff69c6ebfca5cfb78cf82743d090 (patch) | |
tree | 6199abda237f58f1260184eae47d80cc476bdc38 /test | |
parent | ecab855838fa4de4c6d8c11e69037477d6047790 (diff) |
wallet rpc: return final tx hex from walletprocesspsbt if complete
Diffstat (limited to 'test')
-rwxr-xr-x | test/functional/rpc_psbt.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py index b574a370d6..9affca43e3 100755 --- a/test/functional/rpc_psbt.py +++ b/test/functional/rpc_psbt.py @@ -217,12 +217,21 @@ class PSBTTest(BitcoinTestFramework): self.nodes[0].walletpassphrase(passphrase="password", timeout=1000000) - # Sign the transaction and send - signed_tx = self.nodes[0].walletprocesspsbt(psbt=psbtx, finalize=False)['psbt'] - finalized_tx = self.nodes[0].walletprocesspsbt(psbt=psbtx, finalize=True)['psbt'] - assert signed_tx != finalized_tx - final_tx = self.nodes[0].finalizepsbt(signed_tx)['hex'] - self.nodes[0].sendrawtransaction(final_tx) + # Sign the transaction but don't finalize + processed_psbt = self.nodes[0].walletprocesspsbt(psbt=psbtx, finalize=False) + assert "hex" not in processed_psbt + signed_psbt = processed_psbt['psbt'] + + # Finalize and send + finalized_hex = self.nodes[0].finalizepsbt(signed_psbt)['hex'] + self.nodes[0].sendrawtransaction(finalized_hex) + + # Alternative method: sign AND finalize in one command + processed_finalized_psbt = self.nodes[0].walletprocesspsbt(psbt=psbtx, finalize=True) + finalized_psbt = processed_finalized_psbt['psbt'] + finalized_psbt_hex = processed_finalized_psbt['hex'] + assert signed_psbt != finalized_psbt + assert finalized_psbt_hex == finalized_hex # Manually selected inputs can be locked: assert_equal(len(self.nodes[0].listlockunspent()), 0) |