Changeset View
Changeset View
Standalone View
Standalone View
test/functional/interface_rpc.py
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||
# Copyright (c) 2018 The Bitcoin Core developers | # Copyright (c) 2018-2019 The Bitcoin Core developers | ||||
# Distributed under the MIT software license, see the accompanying | # Distributed under the MIT software license, see the accompanying | ||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | # file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
"""Tests some generic aspects of the RPC interface.""" | """Tests some generic aspects of the RPC interface.""" | ||||
from test_framework.authproxy import JSONRPCException | |||||
from test_framework.test_framework import BitcoinTestFramework | from test_framework.test_framework import BitcoinTestFramework | ||||
from test_framework.util import assert_equal, assert_greater_than_or_equal | from test_framework.util import assert_equal, assert_greater_than_or_equal | ||||
def expect_http_status(expected_http_status, expected_rpc_code, | |||||
fcn, *args): | |||||
try: | |||||
fcn(*args) | |||||
raise AssertionError( | |||||
"Expected RPC error {}, got none".format(expected_rpc_code)) | |||||
except JSONRPCException as exc: | |||||
assert_equal(exc.error["code"], expected_rpc_code) | |||||
assert_equal(exc.http_status, expected_http_status) | |||||
class RPCInterfaceTest(BitcoinTestFramework): | class RPCInterfaceTest(BitcoinTestFramework): | ||||
def set_test_params(self): | def set_test_params(self): | ||||
self.num_nodes = 1 | self.num_nodes = 1 | ||||
self.setup_clean_chain = True | self.setup_clean_chain = True | ||||
def test_getrpcinfo(self): | def test_getrpcinfo(self): | ||||
self.log.info("Testing getrpcinfo...") | self.log.info("Testing getrpcinfo...") | ||||
Show All 25 Lines | def test_batch_request(self): | ||||
assert_equal(result_by_id[1]['result'], 0) | assert_equal(result_by_id[1]['result'], 0) | ||||
assert_equal(result_by_id[2]['error']['code'], -32601) | assert_equal(result_by_id[2]['error']['code'], -32601) | ||||
assert_equal(result_by_id[2]['result'], None) | assert_equal(result_by_id[2]['result'], None) | ||||
assert_equal(result_by_id[3]['error'], None) | assert_equal(result_by_id[3]['error'], None) | ||||
assert result_by_id[3]['result'] is not None | assert result_by_id[3]['result'] is not None | ||||
def test_http_status_codes(self): | |||||
self.log.info("Testing HTTP status codes for JSON-RPC requests...") | |||||
expect_http_status(404, -32601, self.nodes[0].invalidmethod) | |||||
expect_http_status(500, -8, self.nodes[0].getblockhash, 42) | |||||
def run_test(self): | def run_test(self): | ||||
self.test_getrpcinfo() | self.test_getrpcinfo() | ||||
self.test_batch_request() | self.test_batch_request() | ||||
self.test_http_status_codes() | |||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
RPCInterfaceTest().main() | RPCInterfaceTest().main() |