mirror of https://github.com/gofiber/fiber.git
Fix NewErrors() and Improve NewError() (#1728)
* fix new errors * fix tests * removed new errors tests * changed error message type * fixed NewError test * added NewErrors function * added Test_NewErrors * added comment line * refactor: Sprintf changed with Sprintpull/1736/head
parent
a51ec9bc69
commit
7cf1886df5
42
app.go
42
app.go
|
@ -84,8 +84,8 @@ type ErrorHandler = func(*Ctx, error) error
|
|||
|
||||
// Error represents an error that occurred while handling a request.
|
||||
type Error struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Code int `json:"code"`
|
||||
Message interface{} `json:"message"`
|
||||
}
|
||||
|
||||
// App denotes the Fiber application.
|
||||
|
@ -715,43 +715,31 @@ func (app *App) Route(prefix string, fn func(router Router), name ...string) Rou
|
|||
|
||||
// Error makes it compatible with the `error` interface.
|
||||
func (e *Error) Error() string {
|
||||
return e.Message
|
||||
return fmt.Sprint(e.Message)
|
||||
}
|
||||
|
||||
// NewError creates a new Error instance with an optional message
|
||||
func NewError(code int, message ...string) *Error {
|
||||
func NewError(code int, message ...interface{}) *Error {
|
||||
e := &Error{
|
||||
Code: code,
|
||||
Code: code,
|
||||
Message: utils.StatusMessage(code),
|
||||
}
|
||||
if len(message) > 0 {
|
||||
e.Message = message[0]
|
||||
} else {
|
||||
e.Message = utils.StatusMessage(code)
|
||||
}
|
||||
return e
|
||||
}
|
||||
|
||||
// NewErrors creates multiple new Errors instance with some message
|
||||
func NewErrors(code int, messages ...string) []*Error {
|
||||
var errors []*Error
|
||||
if len(messages) > 0 {
|
||||
for _, message := range messages {
|
||||
e := &Error{
|
||||
Code: code,
|
||||
}
|
||||
e.Message = message
|
||||
errors = append(errors, e)
|
||||
}
|
||||
} else {
|
||||
// Use default messages
|
||||
e := &Error{
|
||||
Code: code,
|
||||
}
|
||||
e.Message = utils.StatusMessage(code)
|
||||
errors = append(errors, e)
|
||||
// NewErrors creates multiple new Error messages
|
||||
func NewErrors(code int, messages ...interface{}) *Error {
|
||||
e := &Error{
|
||||
Code: code,
|
||||
Message: utils.StatusMessage(code),
|
||||
}
|
||||
|
||||
return errors
|
||||
if len(messages) > 0 {
|
||||
e.Message = messages
|
||||
}
|
||||
return e
|
||||
}
|
||||
|
||||
// Listener can be used to pass a custom listener.
|
||||
|
|
13
app_test.go
13
app_test.go
|
@ -1212,16 +1212,15 @@ func Benchmark_App_ETag_Weak(b *testing.B) {
|
|||
func Test_NewError(t *testing.T) {
|
||||
e := NewError(StatusForbidden, "permission denied")
|
||||
utils.AssertEqual(t, StatusForbidden, e.Code)
|
||||
utils.AssertEqual(t, "permission denied", e.Message)
|
||||
utils.AssertEqual(t, "permission denied", fmt.Sprint(e.Message))
|
||||
}
|
||||
|
||||
func Test_NewErrors(t *testing.T) {
|
||||
errors := NewErrors(StatusBadRequest, []string{"error 1", "error 2"}...)
|
||||
utils.AssertEqual(t, StatusBadRequest, errors[0].Code)
|
||||
utils.AssertEqual(t, "error 1", errors[0].Message)
|
||||
|
||||
utils.AssertEqual(t, StatusBadRequest, errors[1].Code)
|
||||
utils.AssertEqual(t, "error 2", errors[1].Message)
|
||||
e := NewErrors(StatusBadRequest, "error 1", "error 2")
|
||||
messages := e.Message.([]interface{})
|
||||
utils.AssertEqual(t, StatusBadRequest, e.Code)
|
||||
utils.AssertEqual(t, "error 1", fmt.Sprint(messages[0]))
|
||||
utils.AssertEqual(t, "error 2", fmt.Sprint(messages[1]))
|
||||
}
|
||||
|
||||
// go test -run Test_Test_Timeout
|
||||
|
|
Loading…
Reference in New Issue