58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package rpc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestUnmarshalCorrectHeader(t *testing.T) {
|
|
msg := &Msg{}
|
|
|
|
assert.Nil(t, json.Unmarshal([]byte(`{"dinetrpc":1,
|
|
"rt" : true,
|
|
"rt:seqnr" : 666,
|
|
"device:uid":"012d2d2d4c45474143592d2d0000026f",
|
|
"time":1337,"req":"device:info","id":1234}`), msg))
|
|
assert.Equal(t, uint(1), msg.Dinetrpc)
|
|
assert.True(t, msg.Rt)
|
|
assert.Equal(t, uint16(666), msg.RtSeqnr)
|
|
assert.Equal(t, "012d2d2d4c45474143592d2d0000026f", msg.DeviceUID)
|
|
assert.Equal(t, MsgTypeRequest, msg.Type)
|
|
assert.Equal(t, uint32(1234), msg.ID)
|
|
}
|
|
|
|
func TestMarshalCorrectHeader(t *testing.T) {
|
|
const msgExp = `{"dinetrpc":1,"time":1337,"id":5678,
|
|
"device:uid":"012d2d2d4c45474143592d2d0000026f","req":"device:info"}`
|
|
msg := &Msg{
|
|
Dinetrpc: 1,
|
|
DeviceUID: "012d2d2d4c45474143592d2d0000026f",
|
|
Time: 1337,
|
|
ID: 5678,
|
|
Type: MsgTypeRequest,
|
|
ClassMethod: "device:info"}
|
|
data, err := json.Marshal(msg)
|
|
assert.Nil(t, err)
|
|
assert.JSONEq(t, msgExp, string(data))
|
|
}
|
|
|
|
func TestMarshalErrorProperty(t *testing.T) {
|
|
const msgExp = `{
|
|
"dinetrpc":1,
|
|
"time":1337,
|
|
"device:uid":"012d2d2d4c45474143592d2d0000026f",
|
|
"error":{"code":1, "descr":"Invalid parameter"}}`
|
|
msg := &Msg{Dinetrpc: 1, DeviceUID: "012d2d2d4c45474143592d2d0000026f", Time: 1337}
|
|
msg.SetError(EParam)
|
|
|
|
data, err := json.Marshal(msg)
|
|
assert.Nil(t, err)
|
|
assert.JSONEq(t, msgExp, string(data))
|
|
|
|
// Check if msg.Bytes() is the same as what came out of json.Marshal
|
|
assert.JSONEq(t, string(data), string(msg.Bytes()))
|
|
assert.JSONEq(t, msgExp, string(msg.Bytes()))
|
|
}
|