Skip to content

Commit d3da1bb

Browse files
committedApr 11, 2024
Add a test for missing result field
1 parent 8084ffd commit d3da1bb

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed
 

‎core/test/src-jvm-native/jsonrpclib/RawMessageSpec.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,23 @@ import jsonrpclib.OutputMessage.ResponseMessage
88

99
class RawMessageSpec() extends FunSuite {
1010
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
1113
val rawMessage = readFromString[RawMessage](""" {"jsonrpc":"2.0","result":null,"id":3} """.trim)
1214
assertEquals(
1315
rawMessage,
1416
RawMessage(jsonrpc = "2.0", result = Some(None), id = Some(NumberId(3)))
1517
)
1618

1719
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)
1829
}
1930
}

0 commit comments

Comments
 (0)