61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package rpc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDeviceUIDGeneration(t *testing.T) {
|
|
uid, err := GenerateDeviceUID("1", "1")
|
|
require.Nil(t, err)
|
|
require.Equal(t, "10000000000000000000000000000001", uid)
|
|
|
|
uid, err = GenerateDeviceUID("ABCDEF", "ABCDEFABCDEFABCDEFABCDEFABCDEFABCDEF")
|
|
require.Equal(t, ErrDeviceUIDTooLong, err)
|
|
require.Equal(t, DeviceUIDInvalid, uid)
|
|
|
|
uid, err = GenerateDeviceUID("ABCDEF", "ABCDEFABCDEFABCDEF")
|
|
require.Nil(t, err)
|
|
require.Equal(t, "abcdef00000000abcdefabcdefabcdef", uid)
|
|
}
|
|
|
|
func TestDeviceInfo(t *testing.T) {
|
|
msg := &Msg{}
|
|
msg.Time = 1 // set time to non-zero for a static time in the marshalled result
|
|
msg.Result = NewResult([]DeviceInfo{{
|
|
Type: DeviceTypeDNCM,
|
|
Version: map[VersionKey]string{VersionKeyFwDNCM: "1.0.0", VersionKeyHwDNCM: "4.2"},
|
|
}})
|
|
|
|
ret, err := json.Marshal(msg)
|
|
require.Nil(t, err)
|
|
|
|
outcome := `{"dinetrpc":1,"time":1,"result":[{"type":"dncm","version":{"fw-dncm":"1.0.0","hw-dncm":"4.2"}}]}`
|
|
require.JSONEq(t, outcome, string(ret))
|
|
}
|
|
|
|
func TestDeviceInfoIsValid(t *testing.T) {
|
|
di := &DeviceInfo{
|
|
Type: DeviceType(""),
|
|
Version: map[VersionKey]string{VersionKeyFwDNCM: "1.0.0", VersionKeyHwDNCM: "4.2"},
|
|
}
|
|
|
|
// Unset Type property
|
|
require.False(t, di.IsValid())
|
|
di.Type = DeviceTypeDNCM
|
|
|
|
// Empty version
|
|
di.Version = map[VersionKey]string{}
|
|
require.False(t, di.IsValid())
|
|
|
|
// Invalid key prefix (aa-)
|
|
di.Version = map[VersionKey]string{VersionKey("aa-dncm"): "1.0.0"}
|
|
require.False(t, di.IsValid())
|
|
|
|
// Version valid
|
|
di.Version = map[VersionKey]string{VersionKeyFwDNCM: "1.0.0", VersionKeyHwDNCM: "4.2"}
|
|
require.True(t, di.IsValid())
|
|
}
|