fleet/server/kolide/options_test.go

48 lines
1.1 KiB
Go
Raw Normal View History

2016-12-29 18:32:28 +00:00
package kolide
import (
"encoding/json"
"reflect"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestOptionMarshaller(t *testing.T) {
tests := []struct {
value interface{}
typ OptionType
expected interface{}
}{
{23, OptionTypeInt, float64(23)},
{true, OptionTypeBool, true},
{"foobar", OptionTypeString, "foobar"},
}
for _, test := range tests {
optIn := &Option{1, "foo", test.typ, OptionValue{test.value}, true}
buff, err := json.Marshal(optIn)
require.Nil(t, err)
optOut := &Option{}
err = json.Unmarshal(buff, optOut)
require.Nil(t, err)
assert.Equal(t, optIn.ID, optOut.ID)
assert.Equal(t, optIn.Name, optOut.Name)
assert.Equal(t, optIn.ReadOnly, optOut.ReadOnly)
assert.Equal(t, optIn.Type, optOut.Type)
assert.Equal(t, test.expected, optOut.Value.Val)
}
// test nil
optIn := &Option{1, "bar", OptionTypeString, OptionValue{nil}, true}
buff, err := json.Marshal(optIn)
require.Nil(t, err)
optOut := &Option{}
err = json.Unmarshal(buff, optOut)
require.Nil(t, err)
assert.True(t, reflect.DeepEqual(optIn, optOut))
}