mirror of
https://github.com/fleetdm/fleet
synced 2026-05-24 09:28:54 +00:00
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
78 lines
2.3 KiB
Go
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"])
|
|
}
|