aboutsummaryrefslogtreecommitdiff
path: root/test/functional/wallet_importprunedfunds.py
diff options
context:
space:
mode:
authorSebastian Falbesoner <sebastian.falbesoner@gmail.com>2022-03-09 16:16:07 +0100
committerSebastian Falbesoner <sebastian.falbesoner@gmail.com>2022-03-09 16:16:07 +0100
commit7573789925f6b5c3d73f43d2ebf8c732945c1824 (patch)
treecbc54f7a6e4cc89284dafc4778a59daca5a1ca2f /test/functional/wallet_importprunedfunds.py
parent7003b6ab24f6adfffd71d7b7d4182afde52ff859 (diff)
downloadbitcoin-7573789925f6b5c3d73f43d2ebf8c732945c1824.tar.xz
test: check for importprunedfunds RPC errors
Diffstat (limited to 'test/functional/wallet_importprunedfunds.py')
-rwxr-xr-xtest/functional/wallet_importprunedfunds.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/test/functional/wallet_importprunedfunds.py b/test/functional/wallet_importprunedfunds.py
index cdb5823109..2a4d0981c7 100755
--- a/test/functional/wallet_importprunedfunds.py
+++ b/test/functional/wallet_importprunedfunds.py
@@ -5,9 +5,13 @@
"""Test the importprunedfunds and removeprunedfunds RPCs."""
from decimal import Decimal
-from test_framework.blocktools import COINBASE_MATURITY
from test_framework.address import key_to_p2wpkh
+from test_framework.blocktools import COINBASE_MATURITY
from test_framework.key import ECKey
+from test_framework.messages import (
+ CMerkleBlock,
+ from_hex,
+)
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
assert_equal,
@@ -15,6 +19,7 @@ from test_framework.util import (
)
from test_framework.wallet_util import bytes_to_wif
+
class ImportPrunedFundsTest(BitcoinTestFramework):
def set_test_params(self):
self.setup_clean_chain = True
@@ -124,5 +129,18 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
w1.removeprunedfunds(txnid3)
assert not [tx for tx in w1.listtransactions(include_watchonly=True) if tx['txid'] == txnid3]
+ # Check various RPC parameter validation errors
+ assert_raises_rpc_error(-22, "TX decode failed", w1.importprunedfunds, b'invalid tx'.hex(), proof1)
+ assert_raises_rpc_error(-5, "Transaction given doesn't exist in proof", w1.importprunedfunds, rawtxn2, proof1)
+
+ mb = from_hex(CMerkleBlock(), proof1)
+ mb.header.hashMerkleRoot = 0xdeadbeef # cause mismatch between merkle root and merkle block
+ assert_raises_rpc_error(-5, "Something wrong with merkleblock", w1.importprunedfunds, rawtxn1, mb.serialize().hex())
+
+ mb = from_hex(CMerkleBlock(), proof1)
+ mb.header.nTime += 1 # modify arbitrary block header field to change block hash
+ assert_raises_rpc_error(-5, "Block not found in chain", w1.importprunedfunds, rawtxn1, mb.serialize().hex())
+
+
if __name__ == '__main__':
ImportPrunedFundsTest().main()