Skip to content

Commit 5c3bfee

Browse files
author
MarcoFalke
committed
Merge bitcoin/bitcoin#24054: test: rest /tx with an invalid/unknown txid
bd52684 test: rest /tx with an invalid/unknown txid (brunoerg) Pull request description: This PR adds test coverage to the endpoint `/tx` (rest) passing an invalid and an unknown txid to test its return. Invalid -> should return status code 400 (bad request) Unknown -> should return status code 404 (not found) ACKs for top commit: kallewoof: ACK bd52684 Tree-SHA512: a7fbb63f30d06fc0855133a36e8317c7930ba13aa2b4a2dd1fc35079d59eacace72e1ffe7ae1b3e067066fe51792415940d72d923e83a659a0d5965e4110b32a
2 parents 869c6e2 + bd52684 commit 5c3bfee

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

test/functional/interface_rest.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222

2323
from test_framework.messages import BLOCK_HEADER_SIZE
2424

25+
INVALID_PARAM = "abc"
26+
UNKNOWN_PARAM = "0000000000000000000000000000000000000000000000000000000000000000"
27+
28+
2529
class ReqType(Enum):
2630
JSON = 1
2731
BIN = 2
@@ -103,6 +107,12 @@ def run_test(self):
103107
n, = filter_output_indices_by_value(json_obj['vout'], Decimal('0.1'))
104108
spending = (txid, n)
105109

110+
# Test /tx with an invalid and an unknown txid
111+
resp = self.test_rest_request(uri=f"/tx/{INVALID_PARAM}", ret_type=RetType.OBJ, status=400)
112+
assert_equal(resp.read().decode('utf-8').rstrip(), f"Invalid hash: {INVALID_PARAM}")
113+
resp = self.test_rest_request(uri=f"/tx/{UNKNOWN_PARAM}", ret_type=RetType.OBJ, status=404)
114+
assert_equal(resp.read().decode('utf-8').rstrip(), f"{UNKNOWN_PARAM} not found")
115+
106116
self.log.info("Query an unspent TXO using the /getutxos URI")
107117

108118
self.generatetoaddress(self.nodes[1], 1, not_related_address)
@@ -205,8 +215,8 @@ def run_test(self):
205215
bb_hash = self.nodes[0].getbestblockhash()
206216

207217
# Check result if block does not exists
208-
assert_equal(self.test_rest_request('/headers/1/0000000000000000000000000000000000000000000000000000000000000000'), [])
209-
self.test_rest_request('/block/0000000000000000000000000000000000000000000000000000000000000000', status=404, ret_type=RetType.OBJ)
218+
assert_equal(self.test_rest_request(f"/headers/1/{UNKNOWN_PARAM}"), [])
219+
self.test_rest_request(f"/block/{UNKNOWN_PARAM}", status=404, ret_type=RetType.OBJ)
210220

211221
# Check result if block is not in the active chain
212222
self.nodes[0].invalidateblock(bb_hash)
@@ -250,8 +260,8 @@ def run_test(self):
250260
assert_equal(blockhash, bb_hash)
251261

252262
# Check invalid blockhashbyheight requests
253-
resp = self.test_rest_request("/blockhashbyheight/abc", ret_type=RetType.OBJ, status=400)
254-
assert_equal(resp.read().decode('utf-8').rstrip(), "Invalid height: abc")
263+
resp = self.test_rest_request(f"/blockhashbyheight/{INVALID_PARAM}", ret_type=RetType.OBJ, status=400)
264+
assert_equal(resp.read().decode('utf-8').rstrip(), f"Invalid height: {INVALID_PARAM}")
255265
resp = self.test_rest_request("/blockhashbyheight/1000000", ret_type=RetType.OBJ, status=404)
256266
assert_equal(resp.read().decode('utf-8').rstrip(), "Block height out of range")
257267
resp = self.test_rest_request("/blockhashbyheight/-1", ret_type=RetType.OBJ, status=400)

0 commit comments

Comments
 (0)