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()) }