mirror of
https://github.com/grafana/grafana.git
synced 2024-12-01 21:19:28 -06:00
d42bfedd9e
* Add ability to override config variables with env variables * Inline checkForOverrides * Update pkg/plugins/backendplugin/manager/plugin_settings.go Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com> Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
97 lines
2.8 KiB
Go
97 lines
2.8 KiB
Go
package manager
|
|
|
|
import (
|
|
"os"
|
|
"sort"
|
|
"testing"
|
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPluginSettings(t *testing.T) {
|
|
t.Run("Should only extract from sections beginning with 'plugin.' in config", func(t *testing.T) {
|
|
cfg := &setting.Cfg{
|
|
PluginSettings: setting.PluginSettings{
|
|
"plugin": map[string]string{
|
|
"key1": "value1",
|
|
"key2": "value2",
|
|
},
|
|
},
|
|
}
|
|
|
|
ps := getPluginSettings("plugin", cfg)
|
|
require.Len(t, ps, 2)
|
|
|
|
t.Run("Should skip path setting", func(t *testing.T) {
|
|
cfg.PluginSettings["plugin"]["path"] = "value"
|
|
ps := getPluginSettings("plugin", cfg)
|
|
require.Len(t, ps, 2)
|
|
})
|
|
|
|
t.Run("Should skip id setting", func(t *testing.T) {
|
|
cfg.PluginSettings["plugin"]["id"] = "value"
|
|
ps := getPluginSettings("plugin", cfg)
|
|
require.Len(t, ps, 2)
|
|
})
|
|
|
|
t.Run("Should return expected environment variables from plugin settings ", func(t *testing.T) {
|
|
ps := getPluginSettings("plugin", cfg)
|
|
env := ps.ToEnv("GF_PLUGIN", []string{"GF_VERSION=6.7.0"})
|
|
sort.Strings(env)
|
|
require.Len(t, env, 3)
|
|
require.EqualValues(t, []string{"GF_PLUGIN_KEY1=value1", "GF_PLUGIN_KEY2=value2", "GF_VERSION=6.7.0"}, env)
|
|
})
|
|
|
|
t.Run("Should override config variable with environment variable ", func(t *testing.T) {
|
|
_ = os.Setenv("GF_PLUGIN_KEY1", "sth")
|
|
t.Cleanup(func() {
|
|
_ = os.Unsetenv("GF_PLUGIN_KEY1")
|
|
})
|
|
|
|
ps := getPluginSettings("plugin", cfg)
|
|
env := ps.ToEnv("GF_PLUGIN", []string{"GF_VERSION=6.7.0"})
|
|
sort.Strings(env)
|
|
require.Len(t, env, 3)
|
|
require.EqualValues(t, []string{"GF_PLUGIN_KEY1=sth", "GF_PLUGIN_KEY2=value2", "GF_VERSION=6.7.0"}, env)
|
|
})
|
|
|
|
t.Run("Config variable doesn't match env variable ", func(t *testing.T) {
|
|
_ = os.Setenv("GF_PLUGIN_KEY3", "value3")
|
|
t.Cleanup(func() {
|
|
_ = os.Unsetenv("GF_PLUGIN_KEY3")
|
|
})
|
|
|
|
ps := getPluginSettings("plugin", cfg)
|
|
env := ps.ToEnv("GF_PLUGIN", []string{"GF_VERSION=6.7.0"})
|
|
sort.Strings(env)
|
|
require.Len(t, env, 3)
|
|
require.EqualValues(t, []string{"GF_PLUGIN_KEY1=value1", "GF_PLUGIN_KEY2=value2", "GF_VERSION=6.7.0"}, env)
|
|
})
|
|
|
|
t.Run("Should override missing config variable with environment variable ", func(t *testing.T) {
|
|
cfg := &setting.Cfg{
|
|
PluginSettings: setting.PluginSettings{
|
|
"plugin": map[string]string{
|
|
"key1": "value1",
|
|
"key2": "",
|
|
},
|
|
},
|
|
}
|
|
|
|
ps := getPluginSettings("plugin", cfg)
|
|
require.Len(t, ps, 2)
|
|
|
|
_ = os.Setenv("GF_PLUGIN_KEY2", "sth")
|
|
t.Cleanup(func() {
|
|
_ = os.Unsetenv("GF_PLUGIN_KEY1")
|
|
})
|
|
|
|
env := ps.ToEnv("GF_PLUGIN", []string{"GF_VERSION=6.7.0"})
|
|
sort.Strings(env)
|
|
require.Len(t, env, 3)
|
|
require.EqualValues(t, []string{"GF_PLUGIN_KEY1=value1", "GF_PLUGIN_KEY2=sth", "GF_VERSION=6.7.0"}, env)
|
|
})
|
|
})
|
|
}
|