90 lines
1.7 KiB
Go
90 lines
1.7 KiB
Go
package proxyd
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRPCResJSON(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
in *RPCRes
|
|
out string
|
|
}{
|
|
{
|
|
"string result",
|
|
&RPCRes{
|
|
JSONRPC: JSONRPCVersion,
|
|
Result: "foobar",
|
|
ID: []byte("123"),
|
|
},
|
|
`{"jsonrpc":"2.0","result":"foobar","id":123}`,
|
|
},
|
|
{
|
|
"object result",
|
|
&RPCRes{
|
|
JSONRPC: JSONRPCVersion,
|
|
Result: struct {
|
|
Str string `json:"str"`
|
|
}{
|
|
"test",
|
|
},
|
|
ID: []byte("123"),
|
|
},
|
|
`{"jsonrpc":"2.0","result":{"str":"test"},"id":123}`,
|
|
},
|
|
{
|
|
"nil result",
|
|
&RPCRes{
|
|
JSONRPC: JSONRPCVersion,
|
|
Result: nil,
|
|
ID: []byte("123"),
|
|
},
|
|
`{"jsonrpc":"2.0","result":null,"id":123}`,
|
|
},
|
|
{
|
|
"error result without data",
|
|
&RPCRes{
|
|
JSONRPC: JSONRPCVersion,
|
|
Error: &RPCErr{
|
|
Code: 1234,
|
|
Message: "test err",
|
|
},
|
|
ID: []byte("123"),
|
|
},
|
|
`{"jsonrpc":"2.0","error":{"code":1234,"message":"test err"},"id":123}`,
|
|
},
|
|
{
|
|
"error result with data",
|
|
&RPCRes{
|
|
JSONRPC: JSONRPCVersion,
|
|
Error: &RPCErr{
|
|
Code: 1234,
|
|
Message: "test err",
|
|
Data: "revert",
|
|
},
|
|
ID: []byte("123"),
|
|
},
|
|
`{"jsonrpc":"2.0","error":{"code":1234,"message":"test err","data":"revert"},"id":123}`,
|
|
},
|
|
{
|
|
"string ID",
|
|
&RPCRes{
|
|
JSONRPC: JSONRPCVersion,
|
|
Result: "foobar",
|
|
ID: []byte("\"123\""),
|
|
},
|
|
`{"jsonrpc":"2.0","result":"foobar","id":"123"}`,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
out, err := json.Marshal(tt.in)
|
|
require.NoError(t, err)
|
|
require.Equal(t, tt.out, string(out))
|
|
})
|
|
}
|
|
}
|