@@ -1124,6 +1124,15 @@ func TestDefaultHTTPErrorHandler(t *testing.T) {
1124
1124
"error" : "stackinfo" ,
1125
1125
})
1126
1126
})
1127
+ e .Any ("/early-return" , func (c Context ) error {
1128
+ c .String (http .StatusOK , "OK" )
1129
+ return errors .New ("ERROR" )
1130
+ })
1131
+ e .GET ("/internal-error" , func (c Context ) error {
1132
+ err := errors .New ("internal error message body" )
1133
+ return NewHTTPError (http .StatusBadRequest ).SetInternal (err )
1134
+ })
1135
+
1127
1136
// With Debug=true plain response contains error message
1128
1137
c , b := request (http .MethodGet , "/plain" , e )
1129
1138
assert .Equal (t , http .StatusInternalServerError , c )
@@ -1136,6 +1145,17 @@ func TestDefaultHTTPErrorHandler(t *testing.T) {
1136
1145
c , b = request (http .MethodGet , "/servererror" , e )
1137
1146
assert .Equal (t , http .StatusInternalServerError , c )
1138
1147
assert .Equal (t , "{\n \" code\" : 33,\n \" error\" : \" stackinfo\" ,\n \" message\" : \" Something bad happened\" \n }\n " , b )
1148
+ // if the body is already set HTTPErrorHandler should not add anything to response body
1149
+ c , b = request (http .MethodGet , "/early-return" , e )
1150
+ assert .Equal (t , http .StatusOK , c )
1151
+ assert .Equal (t , "OK" , b )
1152
+ // internal error should be reflected in the message
1153
+ c , b = request (http .MethodGet , "/internal-error" , e )
1154
+ assert .Equal (t , http .StatusBadRequest , c )
1155
+ assert .Equal (t , `{
1156
+ "error": "code=400, message=Bad Request, internal=internal error message body",
1157
+ "message": "Bad Request"
1158
+ }` + "\n " , b )
1139
1159
1140
1160
e .Debug = false
1141
1161
// With Debug=false the error response is shortened
0 commit comments