Access Control: Add test flag to enable access control (#46780)

* Add feature flags options to test db
This commit is contained in:
Karl Persson
2022-03-22 20:48:32 +01:00
committed by GitHub
parent 552b447946
commit ee9badecdf
6 changed files with 47 additions and 33 deletions

View File

@@ -61,8 +61,7 @@ func TestSQLStore_GetOrgUsers(t *testing.T) {
},
}
store := InitTestDB(t)
store.Cfg.IsFeatureToggleEnabled = featuremgmt.WithFeatures(featuremgmt.FlagAccesscontrol).IsEnabled
store := InitTestDB(t, InitTestDBOpt{FeatureFlags: []string{featuremgmt.FlagAccesscontrol}})
seedOrgUsers(t, store, 10)
for _, tt := range tests {
@@ -127,8 +126,7 @@ func TestSQLStore_SearchOrgUsers(t *testing.T) {
},
}
store := InitTestDB(t)
store.Cfg.IsFeatureToggleEnabled = featuremgmt.WithFeatures(featuremgmt.FlagAccesscontrol).IsEnabled
store := InitTestDB(t, InitTestDBOpt{FeatureFlags: []string{featuremgmt.FlagAccesscontrol}})
seedOrgUsers(t, store, 10)
for _, tt := range tests {

View File

@@ -460,6 +460,7 @@ var testSQLStoreMutex sync.Mutex
type InitTestDBOpt struct {
// EnsureDefaultOrgAndUser flags whether to ensure that default org and user exist.
EnsureDefaultOrgAndUser bool
FeatureFlags []string
}
var featuresEnabledDuringTests = []string{
@@ -490,13 +491,22 @@ func InitTestDB(t ITestDB, opts ...InitTestDBOpt) *SQLStore {
func initTestDB(migration registry.DatabaseMigrator, opts ...InitTestDBOpt) (*SQLStore, error) {
testSQLStoreMutex.Lock()
defer testSQLStoreMutex.Unlock()
if len(opts) == 0 {
opts = []InitTestDBOpt{{EnsureDefaultOrgAndUser: false, FeatureFlags: []string{}}}
}
features := make([]string, len(featuresEnabledDuringTests))
copy(features, featuresEnabledDuringTests)
for _, opt := range opts {
if len(opt.FeatureFlags) > 0 {
features = append(features, opt.FeatureFlags...)
}
}
if testSQLStore == nil {
dbType := migrator.SQLite
if len(opts) == 0 {
opts = []InitTestDBOpt{{EnsureDefaultOrgAndUser: false}}
}
// environment variable present for test db?
if db, present := os.LookupEnv("GRAFANA_TEST_DB"); present {
dbType = db
@@ -504,13 +514,12 @@ func initTestDB(migration registry.DatabaseMigrator, opts ...InitTestDBOpt) (*SQ
// set test db config
cfg := setting.NewCfg()
cfg.IsFeatureToggleEnabled = func(requestedFeature string) bool {
for _, enabledFeature := range featuresEnabledDuringTests {
if enabledFeature == requestedFeature {
cfg.IsFeatureToggleEnabled = func(key string) bool {
for _, enabledFeature := range features {
if enabledFeature == key {
return true
}
}
return false
}
sec, err := cfg.Raw.NewSection("database")
@@ -520,7 +529,6 @@ func initTestDB(migration registry.DatabaseMigrator, opts ...InitTestDBOpt) (*SQ
if _, err := sec.NewKey("type", dbType); err != nil {
return nil, err
}
switch dbType {
case "mysql":
if _, err := sec.NewKey("connection_string", sqlutil.MySQLTestDB().ConnStr); err != nil {
@@ -587,6 +595,15 @@ func initTestDB(migration registry.DatabaseMigrator, opts ...InitTestDBOpt) (*SQ
return testSQLStore, nil
}
testSQLStore.Cfg.IsFeatureToggleEnabled = func(key string) bool {
for _, enabledFeature := range features {
if enabledFeature == key {
return true
}
}
return false
}
if err := dialect.TruncateDBTables(); err != nil {
return nil, err
}

View File

@@ -396,8 +396,7 @@ func TestSQLStore_SearchTeams(t *testing.T) {
},
}
store := InitTestDB(t)
store.Cfg.IsFeatureToggleEnabled = featuremgmt.WithFeatures(featuremgmt.FlagAccesscontrol).IsEnabled
store := InitTestDB(t, InitTestDBOpt{FeatureFlags: []string{featuremgmt.FlagAccesscontrol}})
// Seed 10 teams
for i := 1; i <= 10; i++ {
@@ -456,9 +455,7 @@ func TestSQLStore_GetTeamMembers_ACFilter(t *testing.T) {
require.NoError(t, errAddMember)
}
store := InitTestDB(t)
store.Cfg.IsFeatureToggleEnabled = featuremgmt.WithFeatures(featuremgmt.FlagAccesscontrol).IsEnabled
store := InitTestDB(t, InitTestDBOpt{FeatureFlags: []string{featuremgmt.FlagAccesscontrol}})
setup(store)
type getTeamMembersTestCase struct {