Chore: use errutil for pluginRepo errors (#78647)

* Chore: use errutil for pluginRepo errors

* Update pkg/util/errutil/status.go

* Use errutil helper functions

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>

* Forgot the log level

* Use entity

---------

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
This commit is contained in:
Gabriel MABILLE
2023-11-30 15:49:27 +01:00
committed by GitHub
parent d64c2b6f4e
commit ef2c79d22a
9 changed files with 121 additions and 68 deletions

View File

@ -1,9 +1,11 @@
package repo
import (
"errors"
"net/http"
"testing"
"github.com/grafana/grafana/pkg/util/errutil"
"github.com/stretchr/testify/require"
)
@ -24,3 +26,37 @@ func TestErrResponse4xx(t *testing.T) {
require.Equal(t, compatInfo, err.compatibilityInfo)
})
}
func TestErrorTemplates(t *testing.T) {
base := &errutil.Error{}
err := ErrVersionUnsupported("grafana-test-app", "1.0.0", "darwin-amd64")
require.True(t, errors.As(err, base))
require.Equal(t, http.StatusConflict, base.Public().StatusCode)
require.Equal(t, "plugin.unsupportedVersion", base.Public().MessageID)
require.Equal(t, "grafana-test-app v1.0.0 is not supported on your system darwin-amd64", base.Public().Message)
err = ErrVersionNotFound("grafana-test-app", "1.0.0", "darwin-amd64")
require.True(t, errors.As(err, base))
require.Equal(t, http.StatusNotFound, base.Public().StatusCode)
require.Equal(t, "plugin.versionNotFound", base.Public().MessageID)
require.Equal(t, "grafana-test-app v1.0.0 either does not exist or is not supported on your system darwin-amd64", base.Public().Message)
err = ErrArcNotFound("grafana-test-app", "darwin-amd64")
require.True(t, errors.As(err, base))
require.Equal(t, http.StatusNotFound, base.Public().StatusCode)
require.Equal(t, "plugin.archNotFound", base.Public().MessageID)
require.Equal(t, "grafana-test-app is not compatible with your system architecture: darwin-amd64", base.Public().Message)
err = ErrChecksumMismatch("http://localhost:6481/grafana-test-app/versions/1.0.0/download")
require.True(t, errors.As(err, base))
require.Equal(t, http.StatusUnprocessableEntity, base.Public().StatusCode)
require.Equal(t, "plugin.checksumMismatch", base.Public().MessageID)
require.Equal(t, "expected SHA256 checksum does not match the downloaded archive (http://localhost:6481/grafana-test-app/versions/1.0.0/download) - please contact security@grafana.com", base.Public().Message)
err = ErrCorePlugin("grafana-test-app")
require.True(t, errors.As(err, base))
require.Equal(t, http.StatusForbidden, base.Public().StatusCode)
require.Equal(t, "plugin.forbiddenCorePluginInstall", base.Public().MessageID)
require.Equal(t, "plugin grafana-test-app is a core plugin and cannot be installed separately", base.Public().Message)
}