Plugins: Avoid returning 404 for `AutoEnabled` apps (#93436)

avoid errors for autoenabled apps
pull/93516/head
Will Browne 9 months ago committed by GitHub
parent d5f205fdef
commit 362ffff591
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 8
      pkg/api/plugin_checks.go
  2. 6
      pkg/api/plugin_checks_test.go

@ -28,7 +28,13 @@ func checkAppEnabled(pluginStore pluginstore.Store, pluginSettings pluginsetting
})
if err != nil {
if errors.Is(err, pluginsettings.ErrPluginSettingNotFound) {
c.JsonApiErr(http.StatusNotFound, "Plugin not found", nil)
// If the plugin is auto enabled, we don't want to return an error because auto enabling allows us
// to enable plugins that are not explicitly configured.
if p.AutoEnabled {
return
}
c.JsonApiErr(http.StatusNotFound, "Plugin setting not found", nil)
return
}
c.JsonApiErr(http.StatusInternalServerError, "Failed to get plugin settings", err)

@ -41,6 +41,11 @@ func TestHTTPServer_CheckEnabled(t *testing.T) {
pluginID: "grafana-test-app_disabled",
expectedCode: 404,
},
{
name: "should not set an error code if the plugin is auto enabled, without a saved plugin setting",
pluginID: "grafana-test-app_autoEnabled",
expectedCode: 0,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
@ -50,6 +55,7 @@ func TestHTTPServer_CheckEnabled(t *testing.T) {
{JSONData: plugins.JSONData{ID: "mysql"}},
{JSONData: plugins.JSONData{Type: plugins.TypeApp, ID: "grafana-test-app"}},
{JSONData: plugins.JSONData{Type: plugins.TypeApp, ID: "grafana-test-app_disabled"}},
{JSONData: plugins.JSONData{Type: plugins.TypeApp, ID: "grafana-test-app_autoEnabled", AutoEnabled: true}},
},
}
hs.PluginSettings = &pluginsettings.FakePluginSettings{Plugins: map[string]*pluginsettings.DTO{

Loading…
Cancel
Save