grafana/pkg/setting/setting_plugins_test.go
Giuseppe Guerra 0d1d437c86
Plugins: Add forward_host_env_vars setting (#79333)
* Plugins: Add forward_host_env_vars_plugins setting

* Renamed forward_host_env_vars_plugins to forward_host_env_vars

* Add readPluginIDsList

* refactoring

* lint

* Use util.SplitString
2023-12-13 11:25:17 +02:00

99 lines
2.5 KiB
Go

package setting
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func TestPluginSettings(t *testing.T) {
cfg := NewCfg()
sec, err := cfg.Raw.NewSection("plugin")
require.NoError(t, err)
_, err = sec.NewKey("key", "value")
require.NoError(t, err)
sec, err = cfg.Raw.NewSection("plugin.plugin")
require.NoError(t, err)
_, err = sec.NewKey("key1", "value1")
require.NoError(t, err)
_, err = sec.NewKey("key2", "value2")
require.NoError(t, err)
sec, err = cfg.Raw.NewSection("plugin.plugin2")
require.NoError(t, err)
_, err = sec.NewKey("key3", "value3")
require.NoError(t, err)
_, err = sec.NewKey("key4", "value4")
require.NoError(t, err)
sec, err = cfg.Raw.NewSection("other")
require.NoError(t, err)
_, err = sec.NewKey("keySomething", "whatever")
require.NoError(t, err)
ps := extractPluginSettings(cfg.Raw.Sections())
require.Len(t, ps, 2)
require.Len(t, ps["plugin"], 2)
require.Equal(t, ps["plugin"]["key1"], "value1")
require.Equal(t, ps["plugin"]["key2"], "value2")
require.Len(t, ps["plugin2"], 2)
require.Equal(t, ps["plugin2"]["key3"], "value3")
require.Equal(t, ps["plugin2"]["key4"], "value4")
}
func Test_readPluginSettings(t *testing.T) {
t.Run("should parse separated plugin ids", func(t *testing.T) {
for _, tc := range []struct {
name string
f func(ids ...string) string
}{
{
name: "commas",
f: func(ids ...string) string {
return strings.Join(ids, ",")
},
},
{
name: "commas and a space",
f: func(ids ...string) string {
return strings.Join(ids, ", ")
},
},
{
name: "spaces",
f: func(ids ...string) string {
return strings.Join(ids, " ")
},
},
{
name: "json-like",
f: func(ids ...string) string {
return `["` + strings.Join(ids, `","`) + `"]`
},
},
} {
t.Run(tc.name, func(t *testing.T) {
cfg := NewCfg()
sec, err := cfg.Raw.NewSection("plugins")
require.NoError(t, err)
_, err = sec.NewKey("disable_plugins", tc.f("plugin1", "plugin2"))
require.NoError(t, err)
_, err = sec.NewKey("plugin_catalog_hidden_plugins", tc.f("plugin3"))
require.NoError(t, err)
_, err = sec.NewKey("hide_angular_deprecation", tc.f("a", "b", "c"))
require.NoError(t, err)
err = cfg.readPluginSettings(cfg.Raw)
require.NoError(t, err)
require.Equal(t, []string{"plugin1", "plugin2"}, cfg.DisablePlugins)
require.Equal(t, []string{"plugin3", "plugin1", "plugin2"}, cfg.PluginCatalogHiddenPlugins)
require.Equal(t, []string{"a", "b", "c"}, cfg.HideAngularDeprecation)
})
}
})
}