src.dualinventive.com/go/dinet/rpc/objects_device_test.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())
}