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

avoid errors for autoenabled apps
This commit is contained in:
Will Browne 2024-09-19 14:00:34 +01:00 committed by GitHub
parent d5f205fdef
commit 362ffff591
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 1 deletions

View File

@ -28,7 +28,13 @@ func checkAppEnabled(pluginStore pluginstore.Store, pluginSettings pluginsetting
}) })
if err != nil { if err != nil {
if errors.Is(err, pluginsettings.ErrPluginSettingNotFound) { 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 return
} }
c.JsonApiErr(http.StatusInternalServerError, "Failed to get plugin settings", err) c.JsonApiErr(http.StatusInternalServerError, "Failed to get plugin settings", err)

View File

@ -41,6 +41,11 @@ func TestHTTPServer_CheckEnabled(t *testing.T) {
pluginID: "grafana-test-app_disabled", pluginID: "grafana-test-app_disabled",
expectedCode: 404, 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 { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { 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{ID: "mysql"}},
{JSONData: plugins.JSONData{Type: plugins.TypeApp, ID: "grafana-test-app"}}, {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_disabled"}},
{JSONData: plugins.JSONData{Type: plugins.TypeApp, ID: "grafana-test-app_autoEnabled", AutoEnabled: true}},
}, },
} }
hs.PluginSettings = &pluginsettings.FakePluginSettings{Plugins: map[string]*pluginsettings.DTO{ hs.PluginSettings = &pluginsettings.FakePluginSettings{Plugins: map[string]*pluginsettings.DTO{