Skip to content

Commit caf6be2

Browse files
committed
Error object data may be ommited in output JSON if None; added Tests
1 parent 429786c commit caf6be2

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

pyjsonrpclite/jsonrpc.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ def SubParseErrorResponse(jsondict):
223223

224224
def SubParseJsonRpcObject(jsondict):
225225
'''Check if jsondict is valid JSON-RPC 2.0 object.
226+
Raises `JsonRpcParseError` if parse/validation failed.
226227
Returns `JsonRpcParsed` object containing Parse results.'''
227228
try:
228229
SubValidateHeader(jsondict)
@@ -271,8 +272,9 @@ class JsonRpcError(object):
271272

272273
def __init__(self, code, message, data = None):
273274
self.code = code
274-
self.message = message
275-
self.data = data
275+
self.message = message
276+
if not data is None:
277+
self.data = data
276278

277279
@classmethod
278280
def Error(cls, code, message, data = None):

tests/test_jsonrpc.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def testJsonRpcMessageErrorCorrect(self):
5151
actual = JsonRpcMessage.Error(1, JsonRpcError(-32001, 'Err MSG', [105, 106]))
5252
testutils.assertEqualObjects(expected, actual)
5353

54-
def testJsonRpcMessageAsJsonCorrect(self):
54+
def testJsonRpcMessageAsJsonCorrect(self):
5555
# request
5656
expected = '{\n"id": 1,\n"method": "login",\n"params": [\n"user",\n"password"\n]\n}'
5757
msg = JsonRpcMessage.Request(1, 'login', ['user', 'password'])
@@ -119,6 +119,24 @@ def testJsonRpcErrorResponseCorrect(self):
119119
self.assertEqual(msg.error.message, 'TestError')
120120
self.assertEqual(msg.error.data, 'Error-data')
121121

122+
def testInternalErrorCorrect1(self):
123+
msg = JsonRpcError.InternalError('Error-data')
124+
self.assertTrue(isinstance(msg, JsonRpcError))
125+
self.assertTrue(hasattr(msg, 'code'))
126+
self.assertTrue(hasattr(msg, 'message'))
127+
self.assertTrue(hasattr(msg, 'data'))
128+
elf.assertEqual(-32603, msg.code)
129+
elf.assertEqual('Internal Error', msg.message)
130+
elf.assertEqual('Error-data', msg.data)
131+
132+
def testInternalErrorCorrect2(self):
133+
msg = JsonRpcError.InternalError()
134+
self.assertTrue(isinstance(msg, JsonRpcError))
135+
self.assertTrue(hasattr(msg, 'code'))
136+
self.assertTrue(hasattr(msg, 'message'))
137+
elf.assertEqual(-32603, msg.code)
138+
elf.assertEqual('Internal Error', msg.message)
139+
122140
def testParseRequest(self):
123141
'''Checks if JSON-RPC 2.0 Request object parsed correct'''
124142
testReqJson = '''

0 commit comments

Comments
 (0)