From 44ef92550fd268d4f4796d5269a80805f194bd3d Mon Sep 17 00:00:00 2001 From: John Murphy Date: Sat, 26 Nov 2016 02:08:22 +0800 Subject: [PATCH] Added built in labels (#526) --- cli/serve.go | 318 +------------ server/datastore/datastore_labels_test.go | 18 + server/datastore/datastore_test.go | 1 + server/datastore/inmem/inmem.go | 430 +++++++++++++++++- server/datastore/inmem_test.go | 3 +- server/datastore/mysql/datastore.go | 59 +++ server/datastore/mysql/labels.go | 7 +- .../20161118212557_CreateTableLabels.go | 3 + server/kolide/labels.go | 22 +- server/service/endpoint_middleware_test.go | 5 +- server/service/handler_test.go | 3 +- server/service/http_auth_test.go | 3 +- server/service/service_appconfig_test.go | 3 +- server/service/service_hosts_test.go | 7 +- server/service/service_invites_test.go | 2 +- server/service/service_labels_test.go | 9 +- server/service/service_osquery_test.go | 17 +- server/service/service_packs_test.go | 17 +- server/service/service_queries_test.go | 11 +- server/service/service_sessions_test.go | 3 +- server/service/service_targets_test.go | 11 +- server/service/service_users_test.go | 8 +- 22 files changed, 600 insertions(+), 360 deletions(-) diff --git a/cli/serve.go b/cli/serve.go index eee26f92a0..f5b6c10fc9 100644 --- a/cli/serve.go +++ b/cli/serve.go @@ -7,7 +7,6 @@ import ( "os" "os/signal" "syscall" - "time" "github.com/WatchBeam/clock" kitlog "github.com/go-kit/kit/log" @@ -25,6 +24,12 @@ import ( "golang.org/x/net/context" ) +type initializer interface { + // Initialize is used to populate a datastore with + // preloaded data + Initialize() error +} + func createServeCmd(configManager config.Manager) *cobra.Command { var devMode = false @@ -67,7 +72,7 @@ the way that the kolide server works. "Warning: Changes will not be saved across process restarts. This should NOT be used in production.", ) - if ds, err = inmem.New(); err != nil { + if ds, err = inmem.New(config); err != nil { initFatal(err, "initializing inmem database") } } else { @@ -79,7 +84,12 @@ the way that the kolide server works. if err != nil { initFatal(err, "initializing datastore") } + } + if initializingDS, ok := ds.(initializer); ok { + if err := initializingDS.Initialize(); err != nil { + initFatal(err, "loading built in data") + } } svc, err := service.NewService(ds, pubsub.NewInmemQueryResults(), logger, config, mailService, clock.C) @@ -87,15 +97,6 @@ the way that the kolide server works. initFatal(err, "initializing service") } - if devMode { - createDevUsers(ds, config) - createDevHosts(ds, config) - createDevQueries(ds, config) - createDevLabels(ds, config) - createDevOrgInfo(ds, config) - createDevPacksAndQueries(ds, config) - } - fieldKeys := []string{"method", "error"} requestCount := kitprometheus.NewCounterFrom(prometheus.CounterOpts{ Namespace: "api", @@ -190,298 +191,3 @@ func createDevMailService(config config.KolideConfig) kolide.MailService { } return devMailService{} } - -// Bootstrap a few users when using the in-memory database. -// Each user's default password will just be their username. -func createDevUsers(ds kolide.Datastore, config config.KolideConfig) { - users := []kolide.User{ - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Date(2016, time.October, 27, 10, 0, 0, 0, time.UTC), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Date(2016, time.October, 27, 10, 0, 0, 0, time.UTC), - }, - }, - - Name: "Admin User", - Username: "admin", - Email: "admin@kolide.co", - Position: "Director of Security", - Admin: true, - Enabled: true, - }, - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Now().Add(-3 * time.Hour), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Now().Add(-1 * time.Hour), - }, - }, - - Name: "Normal User", - Username: "user", - Email: "user@kolide.co", - Position: "Security Engineer", - Admin: false, - Enabled: true, - }, - } - for _, user := range users { - user := user - err := user.SetPassword(user.Username, config.Auth.SaltKeySize, config.Auth.BcryptCost) - if err != nil { - initFatal(err, "creating bootstrap user") - } - _, err = ds.NewUser(&user) - if err != nil { - initFatal(err, "creating bootstrap user") - } - } -} - -// Bootstrap a few hosts when using the in-memory database. -func createDevHosts(ds kolide.Datastore, config config.KolideConfig) { - hosts := []kolide.Host{ - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Date(2016, time.October, 27, 10, 0, 0, 0, time.UTC), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Now().Add(-20 * time.Minute), - }, - }, - NodeKey: "totally-legit", - HostName: "jmeller-mbp.local", - UUID: "1234-5678-9101", - Platform: "darwin", - OsqueryVersion: "2.0.0", - OSVersion: "Mac OS X 10.11.6", - Uptime: 60 * time.Minute, - PhysicalMemory: 4145483776, - PrimaryMAC: "C0:11:1B:13:3E:15", - PrimaryIP: "192.168.1.10", - DetailUpdateTime: time.Now().Add(-20 * time.Minute), - }, - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Date(2016, time.October, 27, 4, 3, 10, 0, time.UTC), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Date(2016, time.October, 27, 4, 3, 10, 0, time.UTC), - }, - }, - - NodeKey: "definitely-legit", - HostName: "marpaia.local", - UUID: "1234-5678-9102", - Platform: "windows", - OsqueryVersion: "2.0.0", - OSVersion: "Windows 10.0.0", - Uptime: 60 * time.Minute, - PhysicalMemory: 17179869184, - PrimaryMAC: "7e:5c:be:ef:b4:df", - PrimaryIP: "192.168.1.11", - DetailUpdateTime: time.Now().Add(-10 * time.Second), - }, - } - - for _, host := range hosts { - host := host - _, err := ds.NewHost(&host) - if err != nil { - initFatal(err, "creating bootstrap host") - } - } -} - -func createDevOrgInfo(ds kolide.Datastore, config config.KolideConfig) { - devOrgInfo := &kolide.AppConfig{ - OrgName: "Kolide", - OrgLogoURL: fmt.Sprintf("%s/logo.png", config.Server.Address), - } - _, err := ds.NewAppConfig(devOrgInfo) - if err != nil { - initFatal(err, "creating fake org info") - } -} - -func createDevQueries(ds kolide.Datastore, config config.KolideConfig) { - queries := []kolide.Query{ - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Date(2016, time.October, 17, 7, 6, 0, 0, time.UTC), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Date(2016, time.October, 17, 7, 6, 0, 0, time.UTC), - }, - }, - - Name: "dev_query_1", - Query: "select * from processes", - }, - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Date(2016, time.October, 27, 4, 3, 10, 0, time.UTC), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Date(2016, time.October, 27, 4, 3, 10, 0, time.UTC), - }, - }, - Name: "dev_query_2", - Query: "select * from time", - }, - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Now().Add(-24 * time.Hour), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Now().Add(-17 * time.Hour), - }, - }, - - Name: "dev_query_3", - Query: "select * from cpuid", - }, - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Now().Add(-1 * time.Hour), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Now().Add(-30 * time.Hour), - }, - }, - - Name: "dev_query_4", - Query: "select 1 from processes where name like '%Apache%'", - }, - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Now(), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Now(), - }, - }, - Name: "dev_query_5", - Query: "select 1 from osquery_info where build_platform='darwin'", - }, - } - - for _, query := range queries { - query := query - _, err := ds.NewQuery(&query) - if err != nil { - initFatal(err, "creating bootstrap query") - } - } -} - -func createDevLabels(ds kolide.Datastore, config config.KolideConfig) { - labels := []kolide.Label{ - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Date(2016, time.October, 27, 8, 31, 16, 0, time.UTC), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Date(2016, time.October, 27, 8, 31, 16, 0, time.UTC), - }, - }, - Name: "dev_label_apache", - Query: "select * from processes where name like '%Apache%'", - }, - { - UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ - CreateTimestamp: kolide.CreateTimestamp{ - CreatedAt: time.Now().Add(-1 * time.Hour), - }, - UpdateTimestamp: kolide.UpdateTimestamp{ - UpdatedAt: time.Now(), - }, - }, - - Name: "dev_label_darwin", - Query: "select * from osquery_info where build_platform='darwin'", - }, - } - - for _, label := range labels { - label := label - _, err := ds.NewLabel(&label) - if err != nil { - initFatal(err, "creating bootstrap label") - } - } -} - -func createDevPacksAndQueries(ds kolide.Datastore, config config.KolideConfig) { - query1 := &kolide.Query{ - Name: "Osquery Info", - Query: "select * from osquery_info", - } - query1, err := ds.NewQuery(query1) - if err != nil { - initFatal(err, "creating dev queries") - } - - query2 := &kolide.Query{ - Name: "Launchd", - Query: "select * from launchd", - Platform: "darwin", - } - query2, err = ds.NewQuery(query2) - if err != nil { - initFatal(err, "creating dev queries") - } - - query3 := &kolide.Query{ - Name: "registry", - Query: "select * from osquery_registry", - } - query3, err = ds.NewQuery(query3) - if err != nil { - initFatal(err, "creating dev queries") - } - - pack1 := &kolide.Pack{ - Name: "Osquery Internal Info", - } - pack1, err = ds.NewPack(pack1) - if err != nil { - initFatal(err, "creating dev packs") - } - - pack2 := &kolide.Pack{ - Name: "macOS Attacks", - } - pack2, err = ds.NewPack(pack2) - if err != nil { - initFatal(err, "creating dev packs") - } - - err = ds.AddQueryToPack(query1.ID, pack1.ID) - if err != nil { - initFatal(err, "creating dev packs") - } - - err = ds.AddQueryToPack(query3.ID, pack1.ID) - if err != nil { - initFatal(err, "creating dev packs") - } - - err = ds.AddQueryToPack(query2.ID, pack2.ID) - if err != nil { - initFatal(err, "creating dev packs") - } -} diff --git a/server/datastore/datastore_labels_test.go b/server/datastore/datastore_labels_test.go index 28bd6c9748..8bfb5cfc19 100644 --- a/server/datastore/datastore_labels_test.go +++ b/server/datastore/datastore_labels_test.go @@ -6,6 +6,8 @@ import ( "testing" "time" + "github.com/kolide/kolide-ose/server/datastore/inmem" + "github.com/kolide/kolide-ose/server/datastore/mysql" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -276,6 +278,22 @@ func testListHostsInLabel(t *testing.T, db kolide.Datastore) { } } +func testBuiltInLabels(t *testing.T, db kolide.Datastore) { + if i, ok := db.(*mysql.Datastore); ok { + err := i.Initialize() + require.Nil(t, err) + } + if i, ok := db.(*inmem.Datastore); ok { + err := i.Initialize() + require.Nil(t, err) + } + + hits, err := db.SearchLabels("Mac OS X") + require.Nil(t, err) + assert.Equal(t, 1, len(hits)) + assert.Equal(t, kolide.LabelTypeBuiltIn, hits[0].LabelType) +} + func testListUniqueHostsInLabels(t *testing.T, db kolide.Datastore) { h1, err := db.NewHost(&kolide.Host{ DetailUpdateTime: time.Now(), diff --git a/server/datastore/datastore_test.go b/server/datastore/datastore_test.go index fb4a0183bb..6e182e4e24 100644 --- a/server/datastore/datastore_test.go +++ b/server/datastore/datastore_test.go @@ -47,4 +47,5 @@ var testFunctions = [...]func(*testing.T, kolide.Datastore){ testListHost, testGetHostsInPack, testDistributedQueryCampaign, + testBuiltInLabels, } diff --git a/server/datastore/inmem/inmem.go b/server/datastore/inmem/inmem.go index 71d5874f53..a38fada208 100644 --- a/server/datastore/inmem/inmem.go +++ b/server/datastore/inmem/inmem.go @@ -2,9 +2,12 @@ package inmem import ( "errors" + "fmt" "reflect" "sync" + "time" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/kolide" "github.com/patrickmn/sortutil" ) @@ -30,11 +33,13 @@ type Datastore struct { distributedQueryCampaignTargets map[uint]kolide.DistributedQueryCampaignTarget orginfo *kolide.AppConfig + config *config.KolideConfig } -func New() (*Datastore, error) { +func New(config config.KolideConfig) (*Datastore, error) { ds := &Datastore{ Driver: "inmem", + config: &config, } if err := ds.Migrate(); err != nil { @@ -88,6 +93,38 @@ func (orm *Datastore) Drop() error { return orm.Migrate() } +func (orm *Datastore) Initialize() error { + if err := orm.createBuiltinLabels(); err != nil { + return err + } + + if err := orm.createDevUsers(); err != nil { + return err + } + + if err := orm.createDevHosts(); err != nil { + return err + } + + if err := orm.createDevQueries(); err != nil { + return err + } + + if err := orm.createDevLabels(); err != nil { + return err + } + + if err := orm.createDevOrgInfo(); err != nil { + return err + } + + if err := orm.createDevPacksAndQueries(); err != nil { + return err + } + + return nil +} + // getLimitOffsetSliceBounds returns the bounds that should be used for // re-slicing the results to comply with the requested ListOptions. Lack of // generics forces us to do this rather than reslicing in this method. @@ -115,3 +152,394 @@ func (orm *Datastore) nextID(val interface{}) uint { orm.nextIDs[valType]++ return orm.nextIDs[valType] } + +func (orm *Datastore) createDevPacksAndQueries() error { + query1 := &kolide.Query{ + Name: "Osquery Info", + Query: "select * from osquery_info", + } + query1, err := orm.NewQuery(query1) + if err != nil { + return err + } + + query2 := &kolide.Query{ + Name: "Launchd", + Query: "select * from launchd", + Platform: "darwin", + } + query2, err = orm.NewQuery(query2) + if err != nil { + return err + } + + query3 := &kolide.Query{ + Name: "registry", + Query: "select * from osquery_registry", + } + query3, err = orm.NewQuery(query3) + if err != nil { + return err + } + + pack1 := &kolide.Pack{ + Name: "Osquery Internal Info", + } + pack1, err = orm.NewPack(pack1) + if err != nil { + return err + } + + pack2 := &kolide.Pack{ + Name: "macOS Attacks", + } + pack2, err = orm.NewPack(pack2) + if err != nil { + return err + } + + err = orm.AddQueryToPack(query1.ID, pack1.ID) + if err != nil { + return err + } + + err = orm.AddQueryToPack(query3.ID, pack1.ID) + if err != nil { + return err + } + + err = orm.AddQueryToPack(query2.ID, pack2.ID) + if err != nil { + return err + } + + return nil +} + +func (orm *Datastore) createBuiltinLabels() error { + labels := []kolide.Label{ + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().UTC(), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().UTC(), + }, + }, + Platform: "darwin", + Name: "Mac OS X", + Query: "select 1 from osquery_info where build_platform = 'darwin';", + LabelType: kolide.LabelTypeBuiltIn, + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().UTC(), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().UTC(), + }, + }, + Platform: "ubuntu", + Name: "Ubuntu Linux", + Query: "select 1 from osquery_info where build_platform = 'ubuntu';", + LabelType: kolide.LabelTypeBuiltIn, + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().UTC(), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().UTC(), + }, + }, + Platform: "centos", + Name: "CentOS Linux", + Query: "select 1 from osquery_info where build_platform = 'centos';", + LabelType: kolide.LabelTypeBuiltIn, + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().UTC(), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().UTC(), + }, + }, + Platform: "windows", + Name: "MS Windows", + Query: "select 1 from osquery_info where build_platform = 'windows';", + LabelType: kolide.LabelTypeBuiltIn, + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().UTC(), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().UTC(), + }, + }, + Platform: "all", + Name: "All Hosts", + Query: "select 1;", + LabelType: kolide.LabelTypeBuiltIn, + }, + } + + for _, label := range labels { + label := label + _, err := orm.NewLabel(&label) + if err != nil { + return err + } + } + + return nil +} + +// Bootstrap a few users when using the in-memory database. +// Each user's default password will just be their username. +func (orm *Datastore) createDevUsers() error { + users := []kolide.User{ + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Date(2016, time.October, 27, 10, 0, 0, 0, time.UTC), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Date(2016, time.October, 27, 10, 0, 0, 0, time.UTC), + }, + }, + + Name: "Admin User", + Username: "admin", + Email: "admin@kolide.co", + Position: "Director of Security", + Admin: true, + Enabled: true, + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().Add(-3 * time.Hour), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().Add(-1 * time.Hour), + }, + }, + + Name: "Normal User", + Username: "user", + Email: "user@kolide.co", + Position: "Security Engineer", + Admin: false, + Enabled: true, + }, + } + for _, user := range users { + user := user + err := user.SetPassword(user.Username, orm.config.Auth.SaltKeySize, orm.config.Auth.BcryptCost) + if err != nil { + return nil + } + _, err = orm.NewUser(&user) + if err != nil { + return err + } + } + + return nil +} + +func (orm *Datastore) createDevQueries() error { + queries := []kolide.Query{ + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Date(2016, time.October, 17, 7, 6, 0, 0, time.UTC), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Date(2016, time.October, 17, 7, 6, 0, 0, time.UTC), + }, + }, + + Name: "dev_query_1", + Query: "select * from processes", + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Date(2016, time.October, 27, 4, 3, 10, 0, time.UTC), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Date(2016, time.October, 27, 4, 3, 10, 0, time.UTC), + }, + }, + Name: "dev_query_2", + Query: "select * from time", + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().Add(-24 * time.Hour), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().Add(-17 * time.Hour), + }, + }, + + Name: "dev_query_3", + Query: "select * from cpuid", + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().Add(-1 * time.Hour), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().Add(-30 * time.Hour), + }, + }, + + Name: "dev_query_4", + Query: "select 1 from processes where name like '%Apache%'", + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now(), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now(), + }, + }, + Name: "dev_query_5", + Query: "select 1 from osquery_info where build_platform='darwin'", + }, + } + + for _, query := range queries { + query := query + _, err := orm.NewQuery(&query) + if err != nil { + return err + } + } + + return nil +} + +// Bootstrap a few hosts when using the in-memory database. +func (orm *Datastore) createDevHosts() error { + hosts := []kolide.Host{ + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Date(2016, time.October, 27, 10, 0, 0, 0, time.UTC), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now().Add(-20 * time.Minute), + }, + }, + NodeKey: "totally-legit", + HostName: "jmeller-mbp.local", + UUID: "1234-5678-9101", + Platform: "darwin", + OsqueryVersion: "2.0.0", + OSVersion: "Mac OS X 10.11.6", + Uptime: 60 * time.Minute, + PhysicalMemory: 4145483776, + PrimaryMAC: "C0:11:1B:13:3E:15", + PrimaryIP: "192.168.1.10", + DetailUpdateTime: time.Now().Add(-20 * time.Minute), + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Date(2016, time.October, 27, 4, 3, 10, 0, time.UTC), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Date(2016, time.October, 27, 4, 3, 10, 0, time.UTC), + }, + }, + + NodeKey: "definitely-legit", + HostName: "marpaia.local", + UUID: "1234-5678-9102", + Platform: "windows", + OsqueryVersion: "2.0.0", + OSVersion: "Windows 10.0.0", + Uptime: 60 * time.Minute, + PhysicalMemory: 17179869184, + PrimaryMAC: "7e:5c:be:ef:b4:df", + PrimaryIP: "192.168.1.11", + DetailUpdateTime: time.Now().Add(-10 * time.Second), + }, + } + + for _, host := range hosts { + host := host + _, err := orm.NewHost(&host) + if err != nil { + return err + } + } + + return nil +} + +func (orm *Datastore) createDevOrgInfo() error { + devOrgInfo := &kolide.AppConfig{ + OrgName: "Kolide", + OrgLogoURL: fmt.Sprintf("%s/logo.png", orm.config.Server.Address), + } + _, err := orm.NewAppConfig(devOrgInfo) + if err != nil { + return err + } + return nil +} + +func (orm *Datastore) createDevLabels() error { + labels := []kolide.Label{ + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Date(2016, time.October, 27, 8, 31, 16, 0, time.UTC), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Date(2016, time.October, 27, 8, 31, 16, 0, time.UTC), + }, + }, + Name: "dev_label_apache", + Query: "select * from processes where name like '%Apache%'", + }, + { + UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{ + CreateTimestamp: kolide.CreateTimestamp{ + CreatedAt: time.Now().Add(-1 * time.Hour), + }, + UpdateTimestamp: kolide.UpdateTimestamp{ + UpdatedAt: time.Now(), + }, + }, + + Name: "dev_label_darwin", + Query: "select * from osquery_info where build_platform='darwin'", + }, + } + + for _, label := range labels { + label := label + _, err := orm.NewLabel(&label) + if err != nil { + return err + } + } + + return nil +} diff --git a/server/datastore/inmem_test.go b/server/datastore/inmem_test.go index 55fd042a09..a362bef702 100644 --- a/server/datastore/inmem_test.go +++ b/server/datastore/inmem_test.go @@ -3,6 +3,7 @@ package datastore import ( "testing" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/stretchr/testify/require" ) @@ -11,7 +12,7 @@ func TestInmem(t *testing.T) { for _, f := range testFunctions { t.Run(functionName(f), func(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) defer func() { require.Nil(t, ds.Drop()) }() require.Nil(t, err) f(t, ds) diff --git a/server/datastore/mysql/datastore.go b/server/datastore/mysql/datastore.go index b08eabcd03..0ff2576f70 100644 --- a/server/datastore/mysql/datastore.go +++ b/server/datastore/mysql/datastore.go @@ -83,6 +83,14 @@ func (d *Datastore) Migrate() error { } +// Initialize preload data needed by the application +func (d *Datastore) Initialize() error { + if err := d.createBuiltinLabels(); err != nil { + return err + } + return nil +} + // Drop removes database func (d *Datastore) Drop() error { goose.SetDialect("mysql") @@ -152,3 +160,54 @@ func GetMysqlConnectionString(conf config.MysqlConfig) string { conf.Database, ) } + +func (d *Datastore) createBuiltinLabels() error { + // Nuke built in labels and recreate them + _, err := d.db.Exec("DELETE from labels WHERE label_type = ?", kolide.LabelTypeBuiltIn) + if err != nil { + return err + } + + labels := []kolide.Label{ + { + Platform: "darwin", + Name: "Mac OS X", + Query: "select 1 from osquery_info where build_platform = 'darwin';", + LabelType: kolide.LabelTypeBuiltIn, + }, + { + Platform: "ubuntu", + Name: "Ubuntu Linux", + Query: "select 1 from osquery_info where build_platform = 'ubuntu';", + LabelType: kolide.LabelTypeBuiltIn, + }, + { + Platform: "centos", + Name: "CentOS Linux", + Query: "select 1 from osquery_info where build_platform = 'centos';", + LabelType: kolide.LabelTypeBuiltIn, + }, + { + Platform: "windows", + Name: "MS Windows", + Query: "select 1 from osquery_info where build_platform = 'windows';", + LabelType: kolide.LabelTypeBuiltIn, + }, + { + Platform: "all", + Name: "All Hosts", + Query: "select 1;", + LabelType: kolide.LabelTypeBuiltIn, + }, + } + + for _, label := range labels { + _, err = d.NewLabel(&label) + if err != nil { + return err + } + } + + return nil + +} diff --git a/server/datastore/mysql/labels.go b/server/datastore/mysql/labels.go index 6ddd15b987..09919e978a 100644 --- a/server/datastore/mysql/labels.go +++ b/server/datastore/mysql/labels.go @@ -17,10 +17,11 @@ func (d *Datastore) NewLabel(label *kolide.Label) (*kolide.Label, error) { name, description, query, - platform - ) VALUES ( ?, ?, ?, ?) + platform, + label_type + ) VALUES ( ?, ?, ?, ?, ?) ` - result, err := d.db.Exec(sql, label.Name, label.Description, label.Query, label.Platform) + result, err := d.db.Exec(sql, label.Name, label.Description, label.Query, label.Platform, label.LabelType) if err != nil { return nil, errors.DatabaseError(err) } diff --git a/server/datastore/mysql/migrations/20161118212557_CreateTableLabels.go b/server/datastore/mysql/migrations/20161118212557_CreateTableLabels.go index 16e6e329a4..ba1d4696ea 100644 --- a/server/datastore/mysql/migrations/20161118212557_CreateTableLabels.go +++ b/server/datastore/mysql/migrations/20161118212557_CreateTableLabels.go @@ -2,7 +2,9 @@ package migration import ( "database/sql" + "fmt" + "github.com/kolide/kolide-ose/server/kolide" "github.com/pressly/goose" ) @@ -22,6 +24,7 @@ func Up_20161118212557(tx *sql.Tx) error { "`description` varchar(255) DEFAULT NULL," + "`query` varchar(255) NOT NULL," + "`platform` varchar(255) DEFAULT NULL," + + fmt.Sprintf("`label_type` INT UNSIGNED NOT NULL DEFAULT %d,", kolide.LabelTypeDefault) + "PRIMARY KEY (`id`)," + "UNIQUE KEY `idx_label_unique_name` (`name`)," + "FULLTEXT KEY `labels_search` (`name`)" + diff --git a/server/kolide/labels.go b/server/kolide/labels.go index 49271b63ae..1a62d51216 100644 --- a/server/kolide/labels.go +++ b/server/kolide/labels.go @@ -49,14 +49,26 @@ type LabelPayload struct { Description *string `json:"description"` } +// LabelType is used to catagorize the kind of label +type LabelType uint + +const ( + // LabelTypeDefault - the label can change, this is the default + LabelTypeDefault LabelType = iota + // LabelTypeBuiltIn - this type of label is created by Kolide on start up + // and can't be removed by end user. + LabelTypeBuiltIn +) + type Label struct { UpdateCreateTimestamps DeleteFields - ID uint `json:"id"` - Name string `json:"name"` - Description string `json:"description"` - Query string `json:"query"` - Platform string `json:"platform"` + ID uint `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Query string `json:"query"` + Platform string `json:"platform"` + LabelType LabelType `json:"label_type" db:"label_type"` } type LabelQueryExecution struct { diff --git a/server/service/endpoint_middleware_test.go b/server/service/endpoint_middleware_test.go index e51e53e9dc..f2f87b9ac0 100644 --- a/server/service/endpoint_middleware_test.go +++ b/server/service/endpoint_middleware_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/go-kit/kit/endpoint" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/contexts/viewer" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" @@ -17,7 +18,7 @@ import ( // permissions to access or modify resources func TestEndpointPermissions(t *testing.T) { req := struct{}{} - ds, _ := inmem.New() + ds, _ := inmem.New(config.TestConfig()) createTestUsers(t, ds) admin1, _ := ds.User("admin1") user1, _ := ds.User("user1") @@ -184,7 +185,7 @@ func TestGetNodeKey(t *testing.T) { } func TestAuthenticatedHost(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) svc, err := newTestService(ds, nil) require.Nil(t, err) diff --git a/server/service/handler_test.go b/server/service/handler_test.go index c6d21365e6..4b36492263 100644 --- a/server/service/handler_test.go +++ b/server/service/handler_test.go @@ -6,13 +6,14 @@ import ( "testing" "github.com/gorilla/mux" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/stretchr/testify/assert" "golang.org/x/net/context" ) func TestAPIRoutes(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) diff --git a/server/service/http_auth_test.go b/server/service/http_auth_test.go index 3d093dd479..ffb17de4a3 100644 --- a/server/service/http_auth_test.go +++ b/server/service/http_auth_test.go @@ -15,6 +15,7 @@ import ( kitlog "github.com/go-kit/kit/log" kithttp "github.com/go-kit/kit/transport/http" "github.com/gorilla/mux" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" @@ -23,7 +24,7 @@ import ( ) func TestLogin(t *testing.T) { - ds, _ := inmem.New() + ds, _ := inmem.New(config.TestConfig()) svc, _ := newTestService(ds, nil) users := createTestUsers(t, ds) logger := kitlog.NewLogfmtLogger(os.Stdout) diff --git a/server/service/service_appconfig_test.go b/server/service/service_appconfig_test.go index 616bfab6a4..3cba3cb9ac 100644 --- a/server/service/service_appconfig_test.go +++ b/server/service/service_appconfig_test.go @@ -3,6 +3,7 @@ package service import ( "testing" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" @@ -11,7 +12,7 @@ import ( ) func TestCreateAppConfig(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) svc, err := newTestService(ds, nil) require.Nil(t, err) diff --git a/server/service/service_hosts_test.go b/server/service/service_hosts_test.go index f52ca888f7..960d850540 100644 --- a/server/service/service_hosts_test.go +++ b/server/service/service_hosts_test.go @@ -3,6 +3,7 @@ package service import ( "testing" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" @@ -10,7 +11,7 @@ import ( ) func TestListHosts(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -33,7 +34,7 @@ func TestListHosts(t *testing.T) { } func TestGetHost(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -54,7 +55,7 @@ func TestGetHost(t *testing.T) { } func TestDeleteHost(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) diff --git a/server/service/service_invites_test.go b/server/service/service_invites_test.go index 6e749a6c29..77d4fa92a0 100644 --- a/server/service/service_invites_test.go +++ b/server/service/service_invites_test.go @@ -14,7 +14,7 @@ import ( ) func TestInviteNewUser(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) createTestUsers(t, ds) assert.Nil(t, err) nosuchAdminID := uint(999) diff --git a/server/service/service_labels_test.go b/server/service/service_labels_test.go index 1ed6c57998..782f966b37 100644 --- a/server/service/service_labels_test.go +++ b/server/service/service_labels_test.go @@ -3,6 +3,7 @@ package service import ( "testing" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" @@ -10,7 +11,7 @@ import ( ) func TestListLabels(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -35,7 +36,7 @@ func TestListLabels(t *testing.T) { } func TestGetLabel(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -57,7 +58,7 @@ func TestGetLabel(t *testing.T) { } func TestNewLabel(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -82,7 +83,7 @@ func TestNewLabel(t *testing.T) { } func TestDeleteLabel(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) diff --git a/server/service/service_osquery_test.go b/server/service/service_osquery_test.go index 21e94544d9..5bf45d130a 100644 --- a/server/service/service_osquery_test.go +++ b/server/service/service_osquery_test.go @@ -13,6 +13,7 @@ import ( "golang.org/x/net/context" "github.com/WatchBeam/clock" + "github.com/kolide/kolide-ose/server/config" hostctx "github.com/kolide/kolide-ose/server/contexts/host" "github.com/kolide/kolide-ose/server/contexts/viewer" "github.com/kolide/kolide-ose/server/datastore/inmem" @@ -23,7 +24,7 @@ import ( ) func TestEnrollAgent(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -45,7 +46,7 @@ func TestEnrollAgent(t *testing.T) { } func TestEnrollAgentIncorrectEnrollSecret(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -67,7 +68,7 @@ func TestEnrollAgentIncorrectEnrollSecret(t *testing.T) { } func TestSubmitStatusLogs(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -139,7 +140,7 @@ func TestSubmitStatusLogs(t *testing.T) { } func TestSubmitResultLogs(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -247,7 +248,7 @@ func TestHostDetailQueries(t *testing.T) { } func TestLabelQueries(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -374,7 +375,7 @@ func TestLabelQueries(t *testing.T) { } func TestGetClientConfig(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -455,7 +456,7 @@ func TestGetClientConfig(t *testing.T) { } func TestDetailQueries(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) mockClock := clock.NewMockClock() @@ -597,7 +598,7 @@ func TestDetailQueries(t *testing.T) { } func TestDistributedQueries(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) mockClock := clock.NewMockClock() diff --git a/server/service/service_packs_test.go b/server/service/service_packs_test.go index c56ffff1a9..ae5c1f19cd 100644 --- a/server/service/service_packs_test.go +++ b/server/service/service_packs_test.go @@ -3,6 +3,7 @@ package service import ( "testing" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" @@ -10,7 +11,7 @@ import ( ) func TestListPacks(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -33,7 +34,7 @@ func TestListPacks(t *testing.T) { } func TestGetPack(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -55,7 +56,7 @@ func TestGetPack(t *testing.T) { } func TestNewPack(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -76,7 +77,7 @@ func TestNewPack(t *testing.T) { } func TestModifyPack(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -102,7 +103,7 @@ func TestModifyPack(t *testing.T) { } func TestDeletePack(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -127,7 +128,7 @@ func TestDeletePack(t *testing.T) { } func TestAddQueryToPack(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -163,7 +164,7 @@ func TestAddQueryToPack(t *testing.T) { } func TestGetQueriesInPack(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -195,7 +196,7 @@ func TestGetQueriesInPack(t *testing.T) { } func TestRemoveQueryFromPack(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) diff --git a/server/service/service_queries_test.go b/server/service/service_queries_test.go index 340a1320ea..d8d6f5dd85 100644 --- a/server/service/service_queries_test.go +++ b/server/service/service_queries_test.go @@ -3,6 +3,7 @@ package service import ( "testing" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" @@ -10,7 +11,7 @@ import ( ) func TestListQueries(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -34,7 +35,7 @@ func TestListQueries(t *testing.T) { } func TestGetQuery(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -57,7 +58,7 @@ func TestGetQuery(t *testing.T) { } func TestNewQuery(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -80,7 +81,7 @@ func TestNewQuery(t *testing.T) { } func TestModifyQuery(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) @@ -107,7 +108,7 @@ func TestModifyQuery(t *testing.T) { } func TestDeleteQuery(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) svc, err := newTestService(ds, nil) diff --git a/server/service/service_sessions_test.go b/server/service/service_sessions_test.go index f4e5ffcdb0..35d72445e6 100644 --- a/server/service/service_sessions_test.go +++ b/server/service/service_sessions_test.go @@ -4,6 +4,7 @@ import ( "testing" "time" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" @@ -14,7 +15,7 @@ import ( const bcryptCost = 6 func TestAuthenticate(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) svc, err := newTestService(ds, nil) require.Nil(t, err) diff --git a/server/service/service_targets_test.go b/server/service/service_targets_test.go index 891f88c4ba..2b0450025c 100644 --- a/server/service/service_targets_test.go +++ b/server/service/service_targets_test.go @@ -6,6 +6,7 @@ import ( "time" "github.com/WatchBeam/clock" + "github.com/kolide/kolide-ose/server/config" "github.com/kolide/kolide-ose/server/datastore/inmem" "github.com/kolide/kolide-ose/server/kolide" "github.com/stretchr/testify/assert" @@ -14,7 +15,7 @@ import ( ) func TestSearchTargets(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) svc, err := newTestService(ds, nil) @@ -45,7 +46,7 @@ func TestSearchTargets(t *testing.T) { } func TestCountHostsInTargets(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) mockClock := clock.NewMockClock() @@ -162,7 +163,7 @@ func TestCountHostsInTargets(t *testing.T) { } func TestSearchWithOmit(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) svc, err := newTestService(ds, nil) @@ -214,7 +215,7 @@ func TestSearchWithOmit(t *testing.T) { } func TestSearchHostsInLabels(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) svc, err := newTestService(ds, nil) @@ -267,7 +268,7 @@ func TestSearchHostsInLabels(t *testing.T) { } func TestSearchResultsLimit(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) svc, err := newTestService(ds, nil) diff --git a/server/service/service_users_test.go b/server/service/service_users_test.go index 49018574fc..517aef3508 100644 --- a/server/service/service_users_test.go +++ b/server/service/service_users_test.go @@ -18,7 +18,7 @@ import ( ) func TestAuthenticatedUser(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) createTestUsers(t, ds) svc, err := newTestService(ds, nil) @@ -34,7 +34,7 @@ func TestAuthenticatedUser(t *testing.T) { } func TestRequestPasswordReset(t *testing.T) { - ds, err := inmem.New() + ds, err := inmem.New(config.TestConfig()) assert.Nil(t, err) createTestUsers(t, ds) admin1, err := ds.User("admin1") @@ -114,7 +114,7 @@ func TestRequestPasswordReset(t *testing.T) { } func TestCreateUser(t *testing.T) { - ds, _ := inmem.New() + ds, _ := inmem.New(config.TestConfig()) svc, _ := newTestService(ds, nil) invites := setupInvites(t, ds, []string{"admin2@example.com"}) ctx := context.Background() @@ -245,7 +245,7 @@ func setupInvites(t *testing.T, ds kolide.Datastore, emails []string) map[string } func TestChangeUserPassword(t *testing.T) { - ds, _ := inmem.New() + ds, _ := inmem.New(config.TestConfig()) svc, _ := newTestService(ds, nil) createTestUsers(t, ds) var passwordChangeTests = []struct {