fleet/server/datastore/datastore_options_test.go
Zachary Wasserman 5371647d2c Add builtin labels via migration (#728)
Changing from the existing method of adding built in labels at server startup.
This new method should be friendlier to long term changes, and falls in line
with the new pattern established for osquery options.

Fixes #702
2017-01-06 12:30:43 -08:00

78 lines
2.3 KiB
Go

package datastore
import (
"reflect"
"testing"
"github.com/kolide/kolide-ose/server/datastore/internal/appstate"
"github.com/kolide/kolide-ose/server/kolide"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func testOptions(t *testing.T, ds kolide.Datastore) {
require.Nil(t, ds.MigrateData())
// were options pre-loaded?
opts, err := ds.ListOptions()
require.Nil(t, err)
assert.Len(t, opts, len(appstate.Options()))
opt, err := ds.OptionByName("aws_access_key_id")
require.Nil(t, err)
require.NotNil(t, opt)
opt2, err := ds.Option(opt.ID)
require.Nil(t, err)
require.NotNil(t, opt2)
assert.True(t, reflect.DeepEqual(opt, opt2))
opt.SetValue("somekey")
err = ds.SaveOptions([]kolide.Option{*opt})
require.Nil(t, err)
opt, err = ds.Option(opt.ID)
require.Nil(t, err)
assert.Equal(t, "somekey", opt.GetValue())
// can't change a read only option
opt, err = ds.OptionByName("disable_distributed")
require.Nil(t, err)
opt.SetValue(true)
err = ds.SaveOptions([]kolide.Option{*opt})
require.NotNil(t, err)
opt, _ = ds.OptionByName("aws_profile_name")
assert.False(t, opt.OptionSet())
opt.SetValue("zip")
opt2, _ = ds.OptionByName("disable_distributed")
assert.Equal(t, false, opt2.GetValue())
opt2.SetValue(true)
modList := []kolide.Option{*opt, *opt2}
// The aws access key option can be saved but because the disable_events can't
// be we want to verify that the whole transaction is rolled back
err = ds.SaveOptions(modList)
assert.NotNil(t, err)
opt, _ = ds.OptionByName("aws_profile_name")
assert.False(t, opt.OptionSet())
opt2, err = ds.OptionByName("disable_distributed")
require.Nil(t, err)
assert.Equal(t, false, opt2.GetValue())
}
func testOptionsToConfig(t *testing.T, ds kolide.Datastore) {
require.Nil(t, ds.MigrateData())
resp, err := ds.GetOsqueryConfigOptions()
require.Nil(t, err)
assert.Len(t, resp, 10)
assert.Equal(t, "/api/v1/osquery/distributed/read", resp["distributed_tls_read_endpoint"])
opt, _ := ds.OptionByName("aws_profile_name")
assert.False(t, opt.OptionSet())
opt.SetValue("zip")
err = ds.SaveOptions([]kolide.Option{*opt})
require.Nil(t, err)
resp, err = ds.GetOsqueryConfigOptions()
require.Nil(t, err)
assert.Len(t, resp, 11)
assert.Equal(t, "zip", resp["aws_profile_name"])
}