2017-06-29 02:01:48 +02:00
|
|
|
package echo
|
|
|
|
|
|
|
|
import (
|
2018-10-14 17:16:58 +02:00
|
|
|
"net/http"
|
2017-06-29 02:01:48 +02:00
|
|
|
"net/http/httptest"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestResponse(t *testing.T) {
|
|
|
|
e := New()
|
2018-10-14 17:16:58 +02:00
|
|
|
req := httptest.NewRequest(http.MethodGet, "/", nil)
|
2017-06-29 02:01:48 +02:00
|
|
|
rec := httptest.NewRecorder()
|
|
|
|
c := e.NewContext(req, rec)
|
2017-06-29 19:59:21 +02:00
|
|
|
res := &Response{echo: e, Writer: rec}
|
2017-06-29 02:01:48 +02:00
|
|
|
|
|
|
|
// Before
|
2017-06-29 19:59:21 +02:00
|
|
|
res.Before(func() {
|
2017-06-29 02:01:48 +02:00
|
|
|
c.Response().Header().Set(HeaderServer, "echo")
|
|
|
|
})
|
2020-04-26 15:01:24 +02:00
|
|
|
// After
|
|
|
|
res.After(func() {
|
|
|
|
c.Response().Header().Set(HeaderXFrameOptions, "DENY")
|
|
|
|
})
|
2017-06-29 02:01:48 +02:00
|
|
|
res.Write([]byte("test"))
|
|
|
|
assert.Equal(t, "echo", rec.Header().Get(HeaderServer))
|
2020-04-26 15:01:24 +02:00
|
|
|
assert.Equal(t, "DENY", rec.Header().Get(HeaderXFrameOptions))
|
2017-06-29 02:01:48 +02:00
|
|
|
}
|
2019-05-24 07:13:57 +02:00
|
|
|
|
|
|
|
func TestResponse_Write_FallsBackToDefaultStatus(t *testing.T) {
|
|
|
|
e := New()
|
|
|
|
rec := httptest.NewRecorder()
|
|
|
|
res := &Response{echo: e, Writer: rec}
|
|
|
|
|
|
|
|
res.Write([]byte("test"))
|
|
|
|
assert.Equal(t, http.StatusOK, rec.Code)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestResponse_Write_UsesSetResponseCode(t *testing.T) {
|
|
|
|
e := New()
|
|
|
|
rec := httptest.NewRecorder()
|
|
|
|
res := &Response{echo: e, Writer: rec}
|
|
|
|
|
|
|
|
res.Status = http.StatusBadRequest
|
|
|
|
res.Write([]byte("test"))
|
|
|
|
assert.Equal(t, http.StatusBadRequest, rec.Code)
|
|
|
|
}
|
2020-04-25 20:01:03 +02:00
|
|
|
|
|
|
|
func TestResponse_Flush(t *testing.T) {
|
|
|
|
e := New()
|
|
|
|
rec := httptest.NewRecorder()
|
|
|
|
res := &Response{echo: e, Writer: rec}
|
|
|
|
|
|
|
|
res.Write([]byte("test"))
|
|
|
|
res.Flush()
|
|
|
|
assert.True(t, rec.Flushed)
|
|
|
|
}
|
2020-12-02 14:13:42 +02:00
|
|
|
|
|
|
|
func TestResponse_ChangeStatusCodeBeforeWrite(t *testing.T) {
|
|
|
|
e := New()
|
|
|
|
rec := httptest.NewRecorder()
|
|
|
|
res := &Response{echo: e, Writer: rec}
|
|
|
|
|
|
|
|
res.Before(func() {
|
|
|
|
if 200 < res.Status && res.Status < 300 {
|
|
|
|
res.Status = 200
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
res.WriteHeader(209)
|
|
|
|
|
|
|
|
assert.Equal(t, http.StatusOK, rec.Code)
|
|
|
|
}
|