chore: support min go version 1.18 (#3511)
* chore: min go version 1.18 * fix build tag error * remove build tag * fix word * remove any.go * replace interface{} instead of any
This commit is contained in:
@ -37,7 +37,7 @@ var errTestRender = errors.New("TestRender")
|
||||
// Unit tests TODO
|
||||
// func (c *Context) File(filepath string) {
|
||||
// func (c *Context) Negotiate(code int, config Negotiate) {
|
||||
// BAD case: func (c *Context) Render(code int, render render.Render, obj ...interface{}) {
|
||||
// BAD case: func (c *Context) Render(code int, render render.Render, obj ...any) {
|
||||
// test that information is not leaked when reusing Contexts (using the Pool)
|
||||
|
||||
func createMultipartRequest() *http.Request {
|
||||
@ -2374,3 +2374,42 @@ func TestCreateTestContextWithRouteParams(t *testing.T) {
|
||||
assert.Equal(t, http.StatusOK, w.Code)
|
||||
assert.Equal(t, "hello gin", w.Body.String())
|
||||
}
|
||||
|
||||
type interceptedWriter struct {
|
||||
ResponseWriter
|
||||
b *bytes.Buffer
|
||||
}
|
||||
|
||||
func (i interceptedWriter) WriteHeader(code int) {
|
||||
i.Header().Del("X-Test")
|
||||
i.ResponseWriter.WriteHeader(code)
|
||||
}
|
||||
|
||||
func TestInterceptedHeader(t *testing.T) {
|
||||
w := httptest.NewRecorder()
|
||||
c, r := CreateTestContext(w)
|
||||
|
||||
r.Use(func(c *Context) {
|
||||
i := interceptedWriter{
|
||||
ResponseWriter: c.Writer,
|
||||
b: bytes.NewBuffer(nil),
|
||||
}
|
||||
c.Writer = i
|
||||
c.Next()
|
||||
c.Header("X-Test", "overridden")
|
||||
c.Writer = i.ResponseWriter
|
||||
})
|
||||
r.GET("/", func(c *Context) {
|
||||
c.Header("X-Test", "original")
|
||||
c.Header("X-Test-2", "present")
|
||||
c.String(http.StatusOK, "hello world")
|
||||
})
|
||||
c.Request = httptest.NewRequest("GET", "/", nil)
|
||||
r.HandleContext(c)
|
||||
// Result() has headers frozen when WriteHeaderNow() has been called
|
||||
// Compared to this time, this is when the response headers will be flushed
|
||||
// As response is flushed on c.String, the Header cannot be set by the first
|
||||
// middleware. Assert this
|
||||
assert.Equal(t, "", w.Result().Header.Get("X-Test"))
|
||||
assert.Equal(t, "present", w.Result().Header.Get("X-Test-2"))
|
||||
}
|
||||
|
Reference in New Issue
Block a user