Expand file tree Collapse file tree 1 file changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -8,12 +8,23 @@ import jsonrpclib.OutputMessage.ResponseMessage
8
8
9
9
class RawMessageSpec () extends FunSuite {
10
10
test(" json parsing with null result" ) {
11
+ // This is a perfectly valid response object, as result field has to be present,
12
+ // but can be null: https://www.jsonrpc.org/specification#response_object
11
13
val rawMessage = readFromString[RawMessage ](""" {"jsonrpc":"2.0","result":null,"id":3} """ .trim)
12
14
assertEquals(
13
15
rawMessage,
14
16
RawMessage (jsonrpc = " 2.0" , result = Some (None ), id = Some (NumberId (3 )))
15
17
)
16
18
17
19
assertEquals(rawMessage.toMessage, Right (ResponseMessage (NumberId (3 ), Payload .NullPayload )))
20
+
21
+ // This, on the other hand, is an invalid response message, as result field is missing
22
+ val invalidRawMessage = readFromString[RawMessage ](""" {"jsonrpc":"2.0","id":3} """ .trim)
23
+ assertEquals(
24
+ invalidRawMessage,
25
+ RawMessage (jsonrpc = " 2.0" , result = None , id = Some (NumberId (3 )))
26
+ )
27
+
28
+ assert(invalidRawMessage.toMessage.isLeft, invalidRawMessage.toMessage)
18
29
}
19
30
}
0 commit comments