Initial commit

This commit is contained in:
Ian Gulliver
2023-04-20 16:12:34 +00:00
parent 366ffe2c6f
commit 12a6d6da8b
9 changed files with 431 additions and 0 deletions

47
error_test.go Normal file
View File

@@ -0,0 +1,47 @@
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")
}