mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
FeatureFlags: define features outside settings.Cfg (take 3) (#44443)
This commit is contained in:
77
pkg/services/featuremgmt/manager_test.go
Normal file
77
pkg/services/featuremgmt/manager_test.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package featuremgmt
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestFeatureManager(t *testing.T) {
|
||||
t.Run("check testing stubs", func(t *testing.T) {
|
||||
ft := WithFeatures("a", "b", "c")
|
||||
require.True(t, ft.IsEnabled("a"))
|
||||
require.True(t, ft.IsEnabled("b"))
|
||||
require.True(t, ft.IsEnabled("c"))
|
||||
require.False(t, ft.IsEnabled("d"))
|
||||
|
||||
require.Equal(t, map[string]bool{"a": true, "b": true, "c": true}, ft.GetEnabled(context.Background()))
|
||||
|
||||
// Explicit values
|
||||
ft = WithFeatures("a", true, "b", false)
|
||||
require.True(t, ft.IsEnabled("a"))
|
||||
require.False(t, ft.IsEnabled("b"))
|
||||
require.Equal(t, map[string]bool{"a": true}, ft.GetEnabled(context.Background()))
|
||||
})
|
||||
|
||||
t.Run("check license validation", func(t *testing.T) {
|
||||
ft := FeatureManager{
|
||||
flags: map[string]*FeatureFlag{},
|
||||
}
|
||||
ft.registerFlags(FeatureFlag{
|
||||
Name: "a",
|
||||
RequiresLicense: true,
|
||||
RequiresDevMode: true,
|
||||
Expression: "true",
|
||||
}, FeatureFlag{
|
||||
Name: "b",
|
||||
Expression: "true",
|
||||
})
|
||||
require.False(t, ft.IsEnabled("a"))
|
||||
require.True(t, ft.IsEnabled("b"))
|
||||
require.False(t, ft.IsEnabled("c")) // uknown flag
|
||||
|
||||
// Try changing "requires license"
|
||||
ft.registerFlags(FeatureFlag{
|
||||
Name: "a",
|
||||
RequiresLicense: false, // shuld still require license!
|
||||
}, FeatureFlag{
|
||||
Name: "b",
|
||||
RequiresLicense: true, // expression is still "true"
|
||||
})
|
||||
require.False(t, ft.IsEnabled("a"))
|
||||
require.False(t, ft.IsEnabled("b"))
|
||||
require.False(t, ft.IsEnabled("c"))
|
||||
})
|
||||
|
||||
t.Run("check description and docs configs", func(t *testing.T) {
|
||||
ft := FeatureManager{
|
||||
flags: map[string]*FeatureFlag{},
|
||||
}
|
||||
ft.registerFlags(FeatureFlag{
|
||||
Name: "a",
|
||||
Description: "first",
|
||||
}, FeatureFlag{
|
||||
Name: "a",
|
||||
Description: "second",
|
||||
}, FeatureFlag{
|
||||
Name: "a",
|
||||
DocsURL: "http://something",
|
||||
}, FeatureFlag{
|
||||
Name: "a",
|
||||
})
|
||||
flag := ft.flags["a"]
|
||||
require.Equal(t, "second", flag.Description)
|
||||
require.Equal(t, "http://something", flag.DocsURL)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user