Files
jsrest/error_test.go
Ian Gulliver 12a6d6da8b Initial commit
2023-04-20 16:12:34 +00:00

48 lines
1.2 KiB
Go

package jsrest_test
import (
"errors"
"net/http"
"testing"
"github.com/gopatchy/jsrest"
"github.com/stretchr/testify/require"
)
func TestFromError(t *testing.T) {
t.Parallel()
e1 := errors.New("error 1") //nolint:goerr113
e2 := jsrest.Errorf(jsrest.ErrBadGateway, "error 2: %w", e1)
require.ErrorIs(t, e2, e1)
require.ErrorIs(t, e2, jsrest.ErrBadGateway)
je := jsrest.ToJSONError(e2)
require.Equal(t, http.StatusBadGateway, je.Code)
require.Contains(t, je.Messages, "error 1")
require.Contains(t, je.Messages, "error 2: error 1")
require.Contains(t, je.Messages, "[502] Bad Gateway")
}
func TestFromErrors(t *testing.T) {
t.Parallel()
e1 := jsrest.Errorf(jsrest.ErrForbidden, "error 1")
e2 := errors.New("error 2") //nolint:goerr113
e3 := jsrest.Errorf(jsrest.ErrBadGateway, "error 3: %w + %w", e1, e2)
require.ErrorIs(t, e3, e1)
require.ErrorIs(t, e3, e2)
require.ErrorIs(t, e3, jsrest.ErrForbidden)
je := jsrest.ToJSONError(e3)
require.Equal(t, http.StatusForbidden, je.Code)
require.Contains(t, je.Messages, "error 1")
require.Contains(t, je.Messages, "error 2")
require.Contains(t, je.Messages, "error 3: error 1 + error 2")
require.Contains(t, je.Messages, "[403] Forbidden")
}