Put wrapped errors into the detailed field on serialization (#20846)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
53985ef162
Коммит
e665542c91
@@ -5,6 +5,7 @@ package model
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"reflect"
|
||||
@@ -112,6 +113,52 @@ func TestAppErrorRender(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestAppErrorSerialize(t *testing.T) {
|
||||
t.Run("Normal", func(t *testing.T) {
|
||||
aerr := NewAppError("", "message", nil, "", http.StatusTeapot)
|
||||
js := aerr.ToJSON()
|
||||
berr := AppErrorFromJSON(strings.NewReader(js))
|
||||
require.Equal(t, "message", berr.Id)
|
||||
require.Empty(t, berr.DetailedError)
|
||||
require.Equal(t, http.StatusTeapot, berr.StatusCode)
|
||||
|
||||
require.EqualError(t, berr, aerr.Error())
|
||||
})
|
||||
|
||||
t.Run("Detailed", func(t *testing.T) {
|
||||
aerr := NewAppError("", "message", nil, "detail", http.StatusTeapot)
|
||||
js := aerr.ToJSON()
|
||||
berr := AppErrorFromJSON(strings.NewReader(js))
|
||||
require.Equal(t, "message", berr.Id)
|
||||
require.Equal(t, "detail", 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()
|
||||
berr := AppErrorFromJSON(strings.NewReader(js))
|
||||
require.Equal(t, "message", berr.Id)
|
||||
require.Equal(t, "wrapped", 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()
|
||||
berr := AppErrorFromJSON(strings.NewReader(js))
|
||||
require.Equal(t, "message", berr.Id)
|
||||
require.Equal(t, "detail, wrapped", berr.DetailedError)
|
||||
require.Equal(t, http.StatusTeapot, berr.StatusCode)
|
||||
|
||||
require.EqualError(t, berr, aerr.Error())
|
||||
})
|
||||
}
|
||||
|
||||
func TestCopyStringMap(t *testing.T) {
|
||||
itemKey := "item1"
|
||||
originalMap := make(map[string]string)
|
||||
|
||||
Ссылка в новой задаче
Block a user