Skip to content

Commit 99c10d2

Browse files
committed
Correced notification object structure, JsonRpcRequest param attribute now not created if params is None (no in output json string), tests corrected
1 parent 4fb4eb7 commit 99c10d2

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

pyjsonrpclite/jsonrpc.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,16 @@ class JsonRpcRequest(JsonRpcMessage):
4848
'''JSON-RPC 2.0 Request object'''
4949
def __init__(self, id, method, params = None):
5050
self.id = id
51-
self.method = method
52-
self.params = params
51+
self.method = method
52+
if not params is None:
53+
self.params = params
5354

5455

5556
class JsonRpcNotification(JsonRpcRequest):
5657
'''JSON-RPC 2.0 Notification object'''
5758
def __init__(self, method, params = None):
5859
JsonRpcRequest.__init__(self, None, method, params)
60+
del self.id
5961

6062

6163
class JsonRpcSuccessResponse(JsonRpcMessage):

tests/test_jsonrpc.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,30 @@ 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):
55+
# request
5556
expected = '{\n"id": 1,\n"method": "login",\n"params": [\n"user",\n"password"\n]\n}'
56-
5757
msg = JsonRpcMessage.Request(1, 'login', ['user', 'password'])
5858
actual = JsonRpcMessage.AsJson(msg, indent=False, escape=True)
5959
self.assertEqual(expected, actual)
60+
61+
# request, no params
62+
expected = '{\n"id": 1,\n"method": "login"\n}'
63+
msg = JsonRpcMessage.Request(1, 'login')
64+
actual = JsonRpcMessage.AsJson(msg, indent=False, escape=True)
65+
self.assertEqual(expected, actual)
66+
67+
# notify
68+
expected = '{\n"method": "alarm",\n"params": [\n"a",\n"b"\n]\n}'
69+
msg = JsonRpcMessage.Notification('alarm', ['a', 'b'])
70+
actual = JsonRpcMessage.AsJson(msg, indent=False, escape=True)
71+
self.assertEqual(expected, actual)
72+
73+
# notify, no params
74+
expected = '{\n"method": "alarm"\n}'
75+
msg = JsonRpcMessage.Notification('alarm')
76+
actual = JsonRpcMessage.AsJson(msg, indent=False, escape=True)
77+
self.assertEqual(expected, actual)
6078

6179
def testJsonRpcRequestCorrect(self):
6280
'''Checks object inheritance, structure, init'''
@@ -73,10 +91,9 @@ def testJsonRpcNotificationCorrect(self):
7391
'''Checks object inheritance, structure, init'''
7492
msg = JsonRpcNotification('ntfName', 'params')
7593
self.assertTrue(isinstance(msg, JsonRpcRequest))
76-
self.assertTrue(hasattr(msg, 'id'))
94+
self.assertFalse(hasattr(msg, 'id'))
7795
self.assertTrue(hasattr(msg, 'method'))
7896
self.assertTrue(hasattr(msg, 'params'))
79-
self.assertEqual(None, msg.id)
8097
self.assertEqual('ntfName', msg.method)
8198
self.assertEqual('params', msg.params)
8299

0 commit comments

Comments
 (0)