aboutsummaryrefslogtreecommitdiff
path: root/test/functional/interface_rest.py
diff options
context:
space:
mode:
authorRoman Zeyde <me@romanzey.de>2018-03-23 12:39:54 +0300
committerRoman Zeyde <me@romanzey.de>2018-04-03 10:53:59 +0300
commit55efc1f62cef7e19efcb58ba68fbc2053bfa19a0 (patch)
treeba1c9689d8aa12c95c30534fa3b605bccba17fad /test/functional/interface_rest.py
parentade5964e3f8c5039878e1296311bb0337c152d2f (diff)
downloadbitcoin-55efc1f62cef7e19efcb58ba68fbc2053bfa19a0.tar.xz
[tests] simplify binary and hex response parsing in interface_rest.py
We use assert_greater_than_or_equal(), since the hex response contains an extra b'\n' traling byte.
Diffstat (limited to 'test/functional/interface_rest.py')
-rwxr-xr-xtest/functional/interface_rest.py34
1 files changed, 16 insertions, 18 deletions
diff --git a/test/functional/interface_rest.py b/test/functional/interface_rest.py
index 0a924e3149..2ee33aa869 100755
--- a/test/functional/interface_rest.py
+++ b/test/functional/interface_rest.py
@@ -3,21 +3,22 @@
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test the REST API."""
+
+import binascii
from decimal import Decimal
from enum import Enum
from io import BytesIO
import json
-from codecs import encode
from struct import pack, unpack
import http.client
import urllib.parse
-from test_framework.messages import deser_uint256
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
assert_equal,
assert_greater_than,
+ assert_greater_than_or_equal,
hex_str_to_bytes,
)
@@ -131,19 +132,15 @@ class RESTTest (BitcoinTestFramework):
self.log.info("Query the TXOs using the /getutxos URI with a binary response")
- bb_hash = self.nodes[0].getbestblockhash()
-
bin_request = b'\x01\x02'
for txid, n in [spending, spent]:
bin_request += hex_str_to_bytes(txid)
bin_request += pack("i", n)
bin_response = self.test_rest_request("/getutxos", http_method='POST', req_type=ReqType.BIN, body=bin_request, ret_type=RetType.BYTES)
- output = BytesIO()
- output.write(bin_response)
- output.seek(0)
- chain_height = unpack("i", output.read(4))[0]
- response_hash = hex(deser_uint256(output))[2:].zfill(64)
+ output = BytesIO(bin_response)
+ chain_height, = unpack("i", output.read(4))
+ response_hash = binascii.hexlify(output.read(32)[::-1]).decode('ascii')
assert_equal(bb_hash, response_hash) # check if getutxo's chaintip during calculation was fine
assert_equal(chain_height, 102) # chain height must be 102
@@ -199,30 +196,30 @@ class RESTTest (BitcoinTestFramework):
self.sync_all()
self.log.info("Test the /block and /headers URIs")
+ bb_hash = self.nodes[0].getbestblockhash()
# Check binary format
response = self.test_rest_request("/block/{}".format(bb_hash), req_type=ReqType.BIN, ret_type=RetType.OBJ)
assert_greater_than(int(response.getheader('content-length')), 80)
- response_str = response.read()
+ response_bytes = response.read()
# Compare with block header
response_header = self.test_rest_request("/headers/1/{}".format(bb_hash), req_type=ReqType.BIN, ret_type=RetType.OBJ)
assert_equal(int(response_header.getheader('content-length')), 80)
- response_header_str = response_header.read()
- assert_equal(response_str[0:80], response_header_str)
+ response_header_bytes = response_header.read()
+ assert_equal(response_bytes[:80], response_header_bytes)
# Check block hex format
response_hex = self.test_rest_request("/block/{}".format(bb_hash), req_type=ReqType.HEX, ret_type=RetType.OBJ)
assert_greater_than(int(response_hex.getheader('content-length')), 160)
- response_hex_str = response_hex.read()
- assert_equal(encode(response_str, "hex_codec")[0:160], response_hex_str[0:160])
+ response_hex_bytes = response_hex.read().strip(b'\n')
+ assert_equal(binascii.hexlify(response_bytes), response_hex_bytes)
# Compare with hex block header
response_header_hex = self.test_rest_request("/headers/1/{}".format(bb_hash), req_type=ReqType.HEX, ret_type=RetType.OBJ)
assert_greater_than(int(response_header_hex.getheader('content-length')), 160)
- response_header_hex_str = response_header_hex.read()
- assert_equal(response_hex_str[0:160], response_header_hex_str[0:160])
- assert_equal(encode(response_header_str, "hex_codec")[0:160], response_header_hex_str[0:160])
+ response_header_hex_bytes = response_header_hex.read(160)
+ assert_equal(binascii.hexlify(response_bytes[:80]), response_header_hex_bytes)
# Check json format
block_json_obj = self.test_rest_request("/block/{}".format(bb_hash))
@@ -252,7 +249,8 @@ class RESTTest (BitcoinTestFramework):
# Check hex format response
hex_response = self.test_rest_request("/tx/{}".format(tx_hash), req_type=ReqType.HEX, ret_type=RetType.OBJ)
- assert_greater_than(int(hex_response.getheader('content-length')), 10)
+ assert_greater_than_or_equal(int(hex_response.getheader('content-length')),
+ json_obj['size']*2)
self.log.info("Test tx inclusion in the /mempool and /block URIs")