6
6
from jsonrpcserver import status
7
7
from jsonrpcserver .dispatcher import (
8
8
create_requests ,
9
+ default_deserializer ,
10
+ default_schema_validator ,
9
11
dispatch_request ,
10
12
dispatch_to_response ,
11
13
dispatch_to_response_pure ,
@@ -117,7 +119,8 @@ def test_dispatch_to_response_pure():
117
119
response = dispatch_to_response_pure (
118
120
methods = Methods (ping ),
119
121
context = None ,
120
- deserializer = json .loads ,
122
+ schema_validator = default_schema_validator ,
123
+ deserializer = default_deserializer ,
121
124
request = '{"jsonrpc": "2.0", "method": "ping", "id": 1}' ,
122
125
)
123
126
assert isinstance (response , SuccessResponse )
@@ -129,7 +132,8 @@ def test_dispatch_to_response_pure_notification():
129
132
response = dispatch_to_response_pure (
130
133
methods = Methods (ping ),
131
134
context = None ,
132
- deserializer = json .loads ,
135
+ schema_validator = default_schema_validator ,
136
+ deserializer = default_deserializer ,
133
137
request = '{"jsonrpc": "2.0", "method": "ping"}' ,
134
138
)
135
139
assert response is None
@@ -139,7 +143,8 @@ def test_dispatch_to_response_pure_notification_invalid_jsonrpc():
139
143
response = dispatch_to_response_pure (
140
144
methods = Methods (ping ),
141
145
context = None ,
142
- deserializer = json .loads ,
146
+ schema_validator = default_schema_validator ,
147
+ deserializer = default_deserializer ,
143
148
request = '{"jsonrpc": "0", "method": "notify"}' ,
144
149
)
145
150
assert isinstance (response , ErrorResponse )
@@ -148,15 +153,23 @@ def test_dispatch_to_response_pure_notification_invalid_jsonrpc():
148
153
def test_dispatch_to_response_pure_invalid_json ():
149
154
"""Unable to parse, must return an error"""
150
155
response = dispatch_to_response_pure (
151
- methods = Methods (ping ), context = None , deserializer = json .loads , request = "{"
156
+ methods = Methods (ping ),
157
+ context = None ,
158
+ schema_validator = default_schema_validator ,
159
+ deserializer = default_deserializer ,
160
+ request = "{" ,
152
161
)
153
162
assert isinstance (response , ErrorResponse )
154
163
155
164
156
165
def test_dispatch_to_response_pure_invalid_jsonrpc ():
157
166
"""Invalid JSON-RPC, must return an error. (impossible to determine if notification)"""
158
167
response = dispatch_to_response_pure (
159
- methods = Methods (ping ), context = None , deserializer = json .loads , request = "{}"
168
+ methods = Methods (ping ),
169
+ context = None ,
170
+ schema_validator = default_schema_validator ,
171
+ deserializer = default_deserializer ,
172
+ request = "{}" ,
160
173
)
161
174
assert isinstance (response , ErrorResponse )
162
175
@@ -169,7 +182,8 @@ def foo(colour: str) -> Result:
169
182
response = dispatch_to_response_pure (
170
183
methods = Methods (foo ),
171
184
context = None ,
172
- deserializer = json .loads ,
185
+ schema_validator = default_schema_validator ,
186
+ deserializer = default_deserializer ,
173
187
request = '{"jsonrpc": "2.0", "method": "foo", "params": ["blue"], "id": 1}' ,
174
188
)
175
189
assert isinstance (response , ErrorResponse )
@@ -182,7 +196,8 @@ def foo(colour: str, size: str):
182
196
response = dispatch_to_response_pure (
183
197
methods = Methods (foo ),
184
198
context = None ,
185
- deserializer = json .loads ,
199
+ schema_validator = default_schema_validator ,
200
+ deserializer = default_deserializer ,
186
201
request = '{"jsonrpc": "2.0", "method": "foo", "params": {"colour":"blue"}, "id": 1}' ,
187
202
)
188
203
assert isinstance (response , ErrorResponse )
@@ -216,7 +231,8 @@ def subtract(minuend, subtrahend):
216
231
response = dispatch_to_response_pure (
217
232
methods = Methods (subtract ),
218
233
context = None ,
219
- deserializer = json .loads ,
234
+ schema_validator = default_schema_validator ,
235
+ deserializer = default_deserializer ,
220
236
request = '{"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}' ,
221
237
)
222
238
assert isinstance (response , SuccessResponse )
@@ -226,7 +242,8 @@ def subtract(minuend, subtrahend):
226
242
response = dispatch_to_response_pure (
227
243
methods = Methods (subtract ),
228
244
context = None ,
229
- deserializer = json .loads ,
245
+ schema_validator = default_schema_validator ,
246
+ deserializer = default_deserializer ,
230
247
request = '{"jsonrpc": "2.0", "method": "subtract", "params": [23, 42], "id": 2}' ,
231
248
)
232
249
assert isinstance (response , SuccessResponse )
@@ -240,7 +257,8 @@ def subtract(**kwargs):
240
257
response = dispatch_to_response_pure (
241
258
methods = Methods (subtract ),
242
259
context = None ,
243
- deserializer = json .loads ,
260
+ schema_validator = default_schema_validator ,
261
+ deserializer = default_deserializer ,
244
262
request = '{"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 23, "minuend": 42}, "id": 3}' ,
245
263
)
246
264
assert isinstance (response , SuccessResponse )
@@ -250,7 +268,8 @@ def subtract(**kwargs):
250
268
response = dispatch_to_response_pure (
251
269
methods = Methods (subtract ),
252
270
context = None ,
253
- deserializer = json .loads ,
271
+ schema_validator = default_schema_validator ,
272
+ deserializer = default_deserializer ,
254
273
request = '{"jsonrpc": "2.0", "method": "subtract", "params": {"minuend": 42, "subtrahend": 23}, "id": 4}' ,
255
274
)
256
275
assert isinstance (response , SuccessResponse )
@@ -261,7 +280,8 @@ def test_examples_notification():
261
280
response = dispatch_to_response_pure (
262
281
methods = Methods (update = lambda : None , foobar = lambda : None ),
263
282
context = None ,
264
- deserializer = json .loads ,
283
+ schema_validator = default_schema_validator ,
284
+ deserializer = default_deserializer ,
265
285
request = '{"jsonrpc": "2.0", "method": "update", "params": [1, 2, 3, 4, 5]}' ,
266
286
)
267
287
assert response is None
@@ -270,7 +290,8 @@ def test_examples_notification():
270
290
response = dispatch_to_response_pure (
271
291
methods = Methods (update = lambda : None , foobar = lambda : None ),
272
292
context = None ,
273
- deserializer = json .loads ,
293
+ schema_validator = default_schema_validator ,
294
+ deserializer = default_deserializer ,
274
295
request = '{"jsonrpc": "2.0", "method": "foobar"}' ,
275
296
)
276
297
assert response is None
@@ -280,7 +301,8 @@ def test_examples_invalid_json():
280
301
response = dispatch_to_response_pure (
281
302
methods = Methods (ping ),
282
303
context = None ,
283
- deserializer = json .loads ,
304
+ schema_validator = default_schema_validator ,
305
+ deserializer = default_deserializer ,
284
306
request = '[{"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"}, {"jsonrpc": "2.0", "method"]' ,
285
307
)
286
308
assert isinstance (response , ErrorResponse )
@@ -293,7 +315,8 @@ def test_examples_empty_array():
293
315
request = "[]" ,
294
316
methods = Methods (ping ),
295
317
context = None ,
296
- deserializer = json .loads ,
318
+ schema_validator = default_schema_validator ,
319
+ deserializer = default_deserializer ,
297
320
)
298
321
assert isinstance (response , ErrorResponse )
299
322
assert response .code == status .JSONRPC_INVALID_REQUEST_CODE
@@ -305,7 +328,11 @@ def test_examples_invalid_jsonrpc_batch():
305
328
The examples are expecting a batch response full of error responses.
306
329
"""
307
330
response = dispatch_to_response_pure (
308
- methods = Methods (ping ), context = None , deserializer = json .loads , request = "[1]"
331
+ methods = Methods (ping ),
332
+ context = None ,
333
+ schema_validator = default_schema_validator ,
334
+ deserializer = default_deserializer ,
335
+ request = "[1]" ,
309
336
)
310
337
assert isinstance (response , ErrorResponse )
311
338
assert response .code == status .JSONRPC_INVALID_REQUEST_CODE
@@ -319,7 +346,8 @@ def test_examples_multiple_invalid_jsonrpc():
319
346
response = dispatch_to_response_pure (
320
347
methods = Methods (ping ),
321
348
context = None ,
322
- deserializer = json .loads ,
349
+ schema_validator = default_schema_validator ,
350
+ deserializer = default_deserializer ,
323
351
request = "[1, 2, 3]" ,
324
352
)
325
353
assert isinstance (response , ErrorResponse )
@@ -357,7 +385,11 @@ def test_examples_mixed_requests_and_notifications():
357
385
]
358
386
)
359
387
response = dispatch_to_response_pure (
360
- methods = methods , context = None , deserializer = json .loads , request = requests
388
+ methods = methods ,
389
+ context = None ,
390
+ schema_validator = default_schema_validator ,
391
+ deserializer = default_deserializer ,
392
+ request = requests ,
361
393
)
362
394
expected = [
363
395
SuccessResponse (
0 commit comments