|
|
|
@ -5,6 +5,9 @@ import ( |
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/plugins" |
|
|
|
|
"github.com/grafana/grafana/pkg/plugins/config" |
|
|
|
|
"github.com/grafana/grafana/pkg/plugins/log" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/featuremgmt" |
|
|
|
|
"github.com/grafana/grafana/pkg/setting" |
|
|
|
|
"github.com/stretchr/testify/require" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
@ -43,3 +46,59 @@ func TestSkipPlugins(t *testing.T) { |
|
|
|
|
require.Len(t, filtered, 1) |
|
|
|
|
require.Equal(t, filtered[0].Primary.JSONData.ID, "plugin3") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestAsExternal(t *testing.T) { |
|
|
|
|
bundles := []*plugins.FoundBundle{ |
|
|
|
|
{ |
|
|
|
|
Primary: plugins.FoundPlugin{ |
|
|
|
|
JSONData: plugins.JSONData{ |
|
|
|
|
ID: "plugin1", |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Primary: plugins.FoundPlugin{ |
|
|
|
|
JSONData: plugins.JSONData{ |
|
|
|
|
ID: "plugin2", |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
t.Run("should skip a core plugin", func(t *testing.T) { |
|
|
|
|
cfg := &config.Cfg{ |
|
|
|
|
Features: featuremgmt.WithFeatures(featuremgmt.FlagExternalCorePlugins), |
|
|
|
|
PluginSettings: setting.PluginSettings{ |
|
|
|
|
"plugin1": map[string]string{ |
|
|
|
|
"as_external": "true", |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
s := NewAsExternalStep(cfg) |
|
|
|
|
filtered, err := s.Filter(plugins.ClassCore, bundles) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.Len(t, filtered, 1) |
|
|
|
|
require.Equal(t, filtered[0].Primary.JSONData.ID, "plugin2") |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
t.Run("should log an error if an external plugin is not available", func(t *testing.T) { |
|
|
|
|
cfg := &config.Cfg{ |
|
|
|
|
Features: featuremgmt.WithFeatures(featuremgmt.FlagExternalCorePlugins), |
|
|
|
|
PluginSettings: setting.PluginSettings{ |
|
|
|
|
"plugin3": map[string]string{ |
|
|
|
|
"as_external": "true", |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fakeLogger := log.NewTestLogger() |
|
|
|
|
s := NewAsExternalStep(cfg) |
|
|
|
|
s.log = fakeLogger |
|
|
|
|
|
|
|
|
|
filtered, err := s.Filter(plugins.ClassExternal, bundles) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
require.Len(t, filtered, 2) |
|
|
|
|
require.Equal(t, fakeLogger.ErrorLogs.Calls, 1) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|