[MM-57070] Remove detailed_error from errors when not in dev mode (#26414)

* remove detailed error from appErr.ToJSON

* Revert "remove detailed error from appErr.ToJSON"

This reverts commit 3c2fa7352d7a3bc7216b8e073179161779169d4b.

* use WipeDetailed instead of err.DetailedError = ""

* fix tests

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Christopher Poile
2024-03-20 13:30:14 -04:00
коммит произвёл GitHub
родитель 9e6c06186b
Коммит 6ea363e260
6 изменённых файлов: 61 добавлений и 5 удалений

Просмотреть файл

@@ -336,6 +336,11 @@ func (er *AppError) Wrap(err error) *AppError {
return er
}
func (er *AppError) WipeDetailed() {
er.wrapped = nil
er.DetailedError = ""
}
// AppErrorFromJSON will try to decode the input into an AppError.
func AppErrorFromJSON(r io.Reader) error {
data, err := io.ReadAll(r)

Просмотреть файл

@@ -150,6 +150,20 @@ func TestAppErrorSerialize(t *testing.T) {
require.EqualError(t, berr, aerr.Error())
})
t.Run("Wipe Detailed", func(t *testing.T) {
aerr := NewAppError("", "message", nil, "detail", http.StatusTeapot)
aerr.WipeDetailed()
js := aerr.ToJSON()
err := AppErrorFromJSON(strings.NewReader(js))
berr, ok := err.(*AppError)
require.True(t, ok)
require.Equal(t, "message", berr.Id)
require.Equal(t, "", berr.DetailedError)
require.Equal(t, http.StatusTeapot, berr.StatusCode)
require.EqualError(t, berr, aerr.Error())
})
t.Run("Wrapped", func(t *testing.T) {
aerr := NewAppError("", "message", nil, "", http.StatusTeapot).Wrap(errors.New("wrapped"))
js := aerr.ToJSON()
@@ -163,6 +177,20 @@ func TestAppErrorSerialize(t *testing.T) {
require.EqualError(t, berr, aerr.Error())
})
t.Run("Wipe Wrapped", func(t *testing.T) {
aerr := NewAppError("", "message", nil, "", http.StatusTeapot).Wrap(errors.New("wrapped"))
aerr.WipeDetailed()
js := aerr.ToJSON()
err := AppErrorFromJSON(strings.NewReader(js))
berr, ok := err.(*AppError)
require.True(t, ok)
require.Equal(t, "message", berr.Id)
require.Equal(t, "", berr.DetailedError)
require.Equal(t, http.StatusTeapot, berr.StatusCode)
require.EqualError(t, berr, aerr.Error())
})
t.Run("Detailed + Wrapped", func(t *testing.T) {
aerr := NewAppError("", "message", nil, "detail", http.StatusTeapot).Wrap(errors.New("wrapped"))
js := aerr.ToJSON()
@@ -176,6 +204,20 @@ func TestAppErrorSerialize(t *testing.T) {
require.EqualError(t, berr, aerr.Error())
})
t.Run("Detailed + Wrapped", func(t *testing.T) {
aerr := NewAppError("", "message", nil, "detail", http.StatusTeapot).Wrap(errors.New("wrapped"))
aerr.WipeDetailed()
js := aerr.ToJSON()
err := AppErrorFromJSON(strings.NewReader(js))
berr, ok := err.(*AppError)
require.True(t, ok)
require.Equal(t, "message", berr.Id)
require.Equal(t, "", berr.DetailedError)
require.Equal(t, http.StatusTeapot, berr.StatusCode)
require.EqualError(t, berr, aerr.Error())
})
t.Run("Where", func(t *testing.T) {
appErr := NewAppError("TestAppError", "message", nil, "", http.StatusInternalServerError)
json := appErr.ToJSON()