mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
Fix RPC failure testing
Make sure that RPC tests are actually checking failures correctly by: - Catching JSON RPC exceptions and verifying the error codes and messages. - Failing the test case if the JSON RPC exception isn't raised.
This commit is contained in:
parent
729de15b63
commit
9db8eecac1
@ -37,7 +37,7 @@ class NamedArgumentTest(BitcoinTestFramework):
|
|||||||
h = node.help(command='getinfo')
|
h = node.help(command='getinfo')
|
||||||
assert(h.startswith('getinfo\n'))
|
assert(h.startswith('getinfo\n'))
|
||||||
|
|
||||||
assert_raises_jsonrpc(-8, node.help, random='getinfo')
|
assert_raises_jsonrpc(-8, 'Unknown named parameter', node.help, random='getinfo')
|
||||||
|
|
||||||
h = node.getblockhash(height=0)
|
h = node.getblockhash(height=0)
|
||||||
node.getblock(blockhash=h)
|
node.getblock(blockhash=h)
|
||||||
|
@ -550,13 +550,30 @@ def assert_raises_message(exc, message, fun, *args, **kwds):
|
|||||||
else:
|
else:
|
||||||
raise AssertionError("No exception raised")
|
raise AssertionError("No exception raised")
|
||||||
|
|
||||||
def assert_raises_jsonrpc(code, fun, *args, **kwds):
|
def assert_raises_jsonrpc(code, message, fun, *args, **kwds):
|
||||||
'''Check for specific JSONRPC exception code'''
|
"""Run an RPC and verify that a specific JSONRPC exception code and message is raised.
|
||||||
|
|
||||||
|
Calls function `fun` with arguments `args` and `kwds`. Catches a JSONRPCException
|
||||||
|
and verifies that the error code and message are as expected. Throws AssertionError if
|
||||||
|
no JSONRPCException was returned or if the error code/message are not as expected.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
code (int), optional: the error code returned by the RPC call (defined
|
||||||
|
in src/rpc/protocol.h). Set to None if checking the error code is not required.
|
||||||
|
message (string), optional: [a substring of] the error string returned by the
|
||||||
|
RPC call. Set to None if checking the error string is not required
|
||||||
|
fun (function): the function to call. This should be the name of an RPC.
|
||||||
|
args*: positional arguments for the function.
|
||||||
|
kwds**: named arguments for the function.
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
fun(*args, **kwds)
|
fun(*args, **kwds)
|
||||||
except JSONRPCException as e:
|
except JSONRPCException as e:
|
||||||
if e.error["code"] != code:
|
# JSONRPCException was thrown as expected. Check the code and message values are correct.
|
||||||
|
if (code is not None) and (code != e.error["code"]):
|
||||||
raise AssertionError("Unexpected JSONRPC error code %i" % e.error["code"])
|
raise AssertionError("Unexpected JSONRPC error code %i" % e.error["code"])
|
||||||
|
if (message is not None) and (message not in e.error['message']):
|
||||||
|
raise AssertionError("Expected substring not found:"+e.error['message'])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise AssertionError("Unexpected exception raised: "+type(e).__name__)
|
raise AssertionError("Unexpected exception raised: "+type(e).__name__)
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user