1
0
mirror of https://github.com/labstack/echo.git synced 2026-04-26 21:03:34 +02:00
Files
echo/httperror_test.go
T
toimtoimtoim f071367e3c V5 changes
2026-01-18 18:14:41 +02:00

68 lines
1.6 KiB
Go

// SPDX-License-Identifier: MIT
// SPDX-FileCopyrightText: © 2015 LabStack LLC and Echo contributors
package echo
import (
"errors"
"github.com/stretchr/testify/assert"
"net/http"
"testing"
)
func TestHTTPError_StatusCode(t *testing.T) {
var err error = &HTTPError{Code: http.StatusBadRequest, Message: "my error message"}
code := 0
var sc HTTPStatusCoder
if errors.As(err, &sc) {
code = sc.StatusCode()
}
assert.Equal(t, http.StatusBadRequest, code)
}
func TestHTTPError_Error(t *testing.T) {
var testCases = []struct {
name string
error error
expect string
}{
{
name: "ok, without message",
error: &HTTPError{Code: http.StatusBadRequest},
expect: "code=400, message=Bad Request",
},
{
name: "ok, with message",
error: &HTTPError{Code: http.StatusBadRequest, Message: "my error message"},
expect: "code=400, message=my error message",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
assert.Equal(t, tc.expect, tc.error.Error())
})
}
}
func TestHTTPError_WrapUnwrap(t *testing.T) {
err := &HTTPError{Code: http.StatusBadRequest, Message: "bad"}
wrapped := err.Wrap(errors.New("my_error")).(*HTTPError)
err.Code = http.StatusOK
err.Message = "changed"
assert.Equal(t, http.StatusBadRequest, wrapped.Code)
assert.Equal(t, "bad", wrapped.Message)
assert.Equal(t, errors.New("my_error"), wrapped.Unwrap())
assert.Equal(t, "code=400, message=bad, err=my_error", wrapped.Error())
}
func TestNewHTTPError(t *testing.T) {
err := NewHTTPError(http.StatusBadRequest, "bad")
err2 := &HTTPError{Code: http.StatusBadRequest, Message: "bad"}
assert.Equal(t, err2, err)
}