@ -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 :