mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 12:22:15 +08:00
PluginManager: Remove some global state (#31081)
* PluginManager: Remove global state Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
This commit is contained in:
@ -17,6 +17,9 @@ import (
|
||||
)
|
||||
|
||||
func TestPluginManager_Init(t *testing.T) {
|
||||
staticRootPath, err := filepath.Abs("../../public/")
|
||||
require.NoError(t, err)
|
||||
|
||||
origRootPath := setting.StaticRootPath
|
||||
origRaw := setting.Raw
|
||||
origEnv := setting.Env
|
||||
@ -25,16 +28,16 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
setting.Raw = origRaw
|
||||
setting.Env = origEnv
|
||||
})
|
||||
|
||||
var err error
|
||||
setting.StaticRootPath, err = filepath.Abs("../../public/")
|
||||
require.NoError(t, err)
|
||||
setting.StaticRootPath = staticRootPath
|
||||
setting.Raw = ini.Empty()
|
||||
setting.Env = setting.Prod
|
||||
|
||||
t.Run("Base case", func(t *testing.T) {
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{
|
||||
Raw: ini.Empty(),
|
||||
Env: setting.Prod,
|
||||
StaticRootPath: staticRootPath,
|
||||
PluginSettings: setting.PluginSettings{
|
||||
"nginx-app": map[string]string{
|
||||
"path": "testdata/test-app",
|
||||
@ -55,14 +58,8 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("With external back-end plugin lacking signature", func(t *testing.T) {
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.PluginsPath = "testdata/unsigned"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{PluginsPath: "testdata/unsigned"},
|
||||
}
|
||||
err := pm.Init()
|
||||
require.NoError(t, err)
|
||||
@ -71,14 +68,9 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("With external unsigned back-end plugin and configuration disabling signature check of this plugin", func(t *testing.T) {
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.PluginsPath = "testdata/unsigned"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/unsigned",
|
||||
PluginsAllowUnsigned: []string{"test"},
|
||||
},
|
||||
BackendPluginManager: &fakeBackendPluginManager{},
|
||||
@ -90,14 +82,10 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("With external back-end plugin with invalid v1 signature", func(t *testing.T) {
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.PluginsPath = "testdata/invalid-v1-signature"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/invalid-v1-signature",
|
||||
},
|
||||
}
|
||||
err := pm.Init()
|
||||
require.NoError(t, err)
|
||||
@ -106,15 +94,11 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("With external back-end plugin lacking files listed in manifest", func(t *testing.T) {
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.PluginsPath = "testdata/lacking-files"
|
||||
|
||||
fm := &fakeBackendPluginManager{}
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/lacking-files",
|
||||
},
|
||||
BackendPluginManager: fm,
|
||||
}
|
||||
err := pm.Init()
|
||||
@ -124,15 +108,11 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("Transform plugins should be ignored when expressions feature is off", func(t *testing.T) {
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.PluginsPath = "testdata/behind-feature-flag"
|
||||
|
||||
fm := fakeBackendPluginManager{}
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/behind-feature-flag",
|
||||
},
|
||||
BackendPluginManager: &fm,
|
||||
}
|
||||
err := pm.Init()
|
||||
@ -143,14 +123,10 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("With nested plugin duplicating parent", func(t *testing.T) {
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.PluginsPath = "testdata/duplicate-plugins"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/duplicate-plugins",
|
||||
},
|
||||
}
|
||||
err := pm.Init()
|
||||
require.NoError(t, err)
|
||||
@ -160,14 +136,10 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("With external back-end plugin with valid v2 signature", func(t *testing.T) {
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.PluginsPath = "testdata/valid-v2-signature"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/valid-v2-signature",
|
||||
},
|
||||
BackendPluginManager: &fakeBackendPluginManager{},
|
||||
}
|
||||
err := pm.Init()
|
||||
@ -188,16 +160,15 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
|
||||
t.Run("With back-end plugin with invalid v2 private signature (mismatched root URL)", func(t *testing.T) {
|
||||
origAppURL := setting.AppUrl
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.AppUrl = origAppURL
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.AppUrl = "http://localhost:1234"
|
||||
setting.PluginsPath = "testdata/valid-v2-pvt-signature"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/valid-v2-pvt-signature",
|
||||
},
|
||||
}
|
||||
err := pm.Init()
|
||||
require.NoError(t, err)
|
||||
@ -208,16 +179,15 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
|
||||
t.Run("With back-end plugin with valid v2 private signature", func(t *testing.T) {
|
||||
origAppURL := setting.AppUrl
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.AppUrl = origAppURL
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.AppUrl = "http://localhost:3000/"
|
||||
setting.PluginsPath = "testdata/valid-v2-pvt-signature"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/valid-v2-pvt-signature",
|
||||
},
|
||||
BackendPluginManager: &fakeBackendPluginManager{},
|
||||
}
|
||||
err := pm.Init()
|
||||
@ -238,16 +208,15 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
|
||||
t.Run("With back-end plugin with modified v2 signature (missing file from plugin dir)", func(t *testing.T) {
|
||||
origAppURL := setting.AppUrl
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.AppUrl = origAppURL
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.AppUrl = "http://localhost:3000/"
|
||||
setting.PluginsPath = "testdata/invalid-v2-signature"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/invalid-v2-signature",
|
||||
},
|
||||
BackendPluginManager: &fakeBackendPluginManager{},
|
||||
}
|
||||
err := pm.Init()
|
||||
@ -258,16 +227,15 @@ func TestPluginManager_Init(t *testing.T) {
|
||||
|
||||
t.Run("With back-end plugin with modified v2 signature (unaccounted file in plugin dir)", func(t *testing.T) {
|
||||
origAppURL := setting.AppUrl
|
||||
origPluginsPath := setting.PluginsPath
|
||||
t.Cleanup(func() {
|
||||
setting.AppUrl = origAppURL
|
||||
setting.PluginsPath = origPluginsPath
|
||||
})
|
||||
setting.AppUrl = "http://localhost:3000/"
|
||||
setting.PluginsPath = "testdata/invalid-v2-signature-2"
|
||||
|
||||
pm := &PluginManager{
|
||||
Cfg: &setting.Cfg{},
|
||||
Cfg: &setting.Cfg{
|
||||
PluginsPath: "testdata/invalid-v2-signature-2",
|
||||
},
|
||||
BackendPluginManager: &fakeBackendPluginManager{},
|
||||
}
|
||||
err := pm.Init()
|
||||
|
Reference in New Issue
Block a user