mirror of https://github.com/gin-gonic/gin.git
chore(errorHandler):new abortWithStatus method with Json body (#800)
This commit is contained in:
parent
2ae8a25fc9
commit
6ce1e86a27
|
@ -120,6 +120,13 @@ func (c *Context) AbortWithStatus(code int) {
|
||||||
c.Abort()
|
c.Abort()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AbortWithStatusJSON calls `Abort()` and then `JSON` internally. This method stops the chain, writes the status code and return a JSON body
|
||||||
|
// It also sets the Content-Type as "application/json".
|
||||||
|
func (c *Context) AbortWithStatusJSON(code int, jsonObj interface{}) {
|
||||||
|
c.Abort()
|
||||||
|
c.JSON(code, jsonObj)
|
||||||
|
}
|
||||||
|
|
||||||
// AbortWithError calls `AbortWithStatus()` and `Error()` internally. This method stops the chain, writes the status code and
|
// AbortWithError calls `AbortWithStatus()` and `Error()` internally. This method stops the chain, writes the status code and
|
||||||
// pushes the specified error to `c.Errors`.
|
// pushes the specified error to `c.Errors`.
|
||||||
// See Context.Error() for more details.
|
// See Context.Error() for more details.
|
||||||
|
|
|
@ -788,6 +788,36 @@ func TestContextAbortWithStatus(t *testing.T) {
|
||||||
assert.True(t, c.IsAborted())
|
assert.True(t, c.IsAborted())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type testJSONAbortMsg struct {
|
||||||
|
Foo string `json:"foo"`
|
||||||
|
Bar string `json:"bar"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestContextAbortWithStatusJSON(t *testing.T) {
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
c, _ := CreateTestContext(w)
|
||||||
|
c.index = 4
|
||||||
|
|
||||||
|
in := new(testJSONAbortMsg)
|
||||||
|
in.Bar = "barValue"
|
||||||
|
in.Foo = "fooValue"
|
||||||
|
|
||||||
|
c.AbortWithStatusJSON(415, in)
|
||||||
|
|
||||||
|
assert.Equal(t, c.index, abortIndex)
|
||||||
|
assert.Equal(t, c.Writer.Status(), 415)
|
||||||
|
assert.Equal(t, w.Code, 415)
|
||||||
|
assert.True(t, c.IsAborted())
|
||||||
|
|
||||||
|
contentType := w.Header().Get("Content-Type")
|
||||||
|
assert.Equal(t, contentType, "application/json; charset=utf-8")
|
||||||
|
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
buf.ReadFrom(w.Body)
|
||||||
|
jsonStringBody := buf.String()
|
||||||
|
assert.Equal(t, fmt.Sprint(`{"foo":"fooValue","bar":"barValue"}`), jsonStringBody)
|
||||||
|
}
|
||||||
|
|
||||||
func TestContextError(t *testing.T) {
|
func TestContextError(t *testing.T) {
|
||||||
c, _ := CreateTestContext(httptest.NewRecorder())
|
c, _ := CreateTestContext(httptest.NewRecorder())
|
||||||
assert.Empty(t, c.Errors)
|
assert.Empty(t, c.Errors)
|
||||||
|
|
Loading…
Reference in New Issue