@@ -7,12 +7,13 @@ import jsonrpclib.CallId.NumberId
77import jsonrpclib .OutputMessage .ResponseMessage
88import io .circe .Json
99import com .github .plokhotnyuk .jsoniter_scala .circe .JsoniterScalaCodec ._
10+ import io .circe .syntax ._
1011
1112object RawMessageSpec extends FunSuite {
1213 test(" json parsing with null result" ) {
1314 // This is a perfectly valid response object, as result field has to be present,
1415 // but can be null: https://www.jsonrpc.org/specification#response_object
15- val rawMessage = readFromString[Json ](""" {"jsonrpc":"2.0","result":null,"id":3} """ .trim)
16+ val rawMessage = readFromString[Json ](""" {"jsonrpc":"2.0","id":3,"result":null} """ .trim)
1617 .as[RawMessage ]
1718 .fold(throw _, identity)
1819
@@ -31,4 +32,40 @@ object RawMessageSpec extends FunSuite {
3132 ) &&
3233 assert(invalidRawMessage.toMessage.isLeft, invalidRawMessage.toMessage.toString)
3334 }
35+
36+ test(" request message serialization" ) {
37+ val input : Message = InputMessage .RequestMessage (" my/method" , CallId .NumberId (1 ), None )
38+ val expected = """ {"jsonrpc":"2.0","method":"my/method","id":1}"""
39+ val result = writeToString(input.asJson)
40+
41+ assert(result == expected, s " Expected: $expected, got: $result" )
42+ }
43+
44+ test(" notification message serialization" ) {
45+ val input : Message = InputMessage .NotificationMessage (" my/method" , None )
46+ val expected = """ {"jsonrpc":"2.0","method":"my/method"}"""
47+ val result = writeToString(input.asJson)
48+
49+ assert(result == expected, s " Expected: $expected, got: $result" )
50+ }
51+
52+ test(" response message serialization" ) {
53+ val input : Message = OutputMessage .ResponseMessage (CallId .NumberId (1 ), Payload .NullPayload )
54+ val expected = """ {"jsonrpc":"2.0","id":1,"result":null}"""
55+ val result = writeToString(input.asJson)
56+
57+ assert(result == expected, s " Expected: $expected, got: $result" )
58+ }
59+
60+ test(" error message serialization" ) {
61+ val input : Message = OutputMessage .ErrorMessage (
62+ CallId .NumberId (1 ),
63+ ErrorPayload (- 32603 , " Internal error" , None )
64+ )
65+ val expected = """ {"jsonrpc":"2.0","error":{"code":-32603,"message":"Internal error","data":null},"id":1}"""
66+ val result = writeToString(input.asJson)
67+
68+ assert(result == expected, s " Expected: $expected, got: $result" )
69+ }
70+
3471}
0 commit comments