Plugins: Refactor loader + finder to support multiple sourcing methods (#64735)

* it's cdn time

* tidy body closing

* auto signed

* fix close

* update log name

* remove comments
This commit is contained in:
Will Browne
2023-03-20 13:35:49 +00:00
committed by GitHub
parent eba2c7b522
commit ee2dd62a1f
25 changed files with 389 additions and 223 deletions

View File

@ -12,7 +12,7 @@ import (
)
func TestSources_List(t *testing.T) {
t.Run("Plugin sources are added in order", func(t *testing.T) {
t.Run("Plugin sources are populated by default and listed in specific order", func(t *testing.T) {
cfg := &setting.Cfg{
BundledPluginsPath: "path1",
}
@ -31,11 +31,28 @@ func TestSources_List(t *testing.T) {
s := ProvideService(cfg, pCfg)
srcs := s.List(context.Background())
expected := []plugins.PluginSource{
{Class: plugins.Core, Paths: []string{"app/plugins/datasource", "app/plugins/panel"}},
{Class: plugins.Bundled, Paths: []string{"path1"}},
{Class: plugins.External, Paths: []string{"path2", "path3"}},
}
require.Equal(t, expected, srcs)
ctx := context.Background()
require.Len(t, srcs, 3)
require.Equal(t, srcs[0].PluginClass(ctx), plugins.Core)
require.Equal(t, srcs[0].PluginURIs(ctx), []string{"app/plugins/datasource", "app/plugins/panel"})
sig, exists := srcs[0].DefaultSignature(ctx)
require.True(t, exists)
require.Equal(t, plugins.SignatureInternal, sig.Status)
require.Equal(t, plugins.SignatureType(""), sig.Type)
require.Equal(t, "", sig.SigningOrg)
require.Equal(t, srcs[1].PluginClass(ctx), plugins.Bundled)
require.Equal(t, srcs[1].PluginURIs(ctx), []string{"path1"})
sig, exists = srcs[1].DefaultSignature(ctx)
require.False(t, exists)
require.Equal(t, plugins.Signature{}, sig)
require.Equal(t, srcs[2].PluginClass(ctx), plugins.External)
require.Equal(t, srcs[2].PluginURIs(ctx), []string{"path2", "path3"})
sig, exists = srcs[2].DefaultSignature(ctx)
require.False(t, exists)
require.Equal(t, plugins.Signature{}, sig)
})
}