12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package response
- import (
- "bufio"
- "net"
- "net/http"
- "net/http/httptest"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestHeaderOnceResponseWriter_Flush(t *testing.T) {
- req := httptest.NewRequest(http.MethodGet, "http://localhost", http.NoBody)
- handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- cw := NewHeaderOnceResponseWriter(w)
- cw.Header().Set("X-Test", "test")
- cw.WriteHeader(http.StatusServiceUnavailable)
- cw.WriteHeader(http.StatusExpectationFailed)
- _, err := cw.Write([]byte("content"))
- assert.Nil(t, err)
- flusher, ok := cw.(http.Flusher)
- assert.True(t, ok)
- flusher.Flush()
- })
- resp := httptest.NewRecorder()
- handler.ServeHTTP(resp, req)
- assert.Equal(t, http.StatusServiceUnavailable, resp.Code)
- assert.Equal(t, "test", resp.Header().Get("X-Test"))
- assert.Equal(t, "content", resp.Body.String())
- }
- func TestHeaderOnceResponseWriter_Hijack(t *testing.T) {
- resp := httptest.NewRecorder()
- writer := &HeaderOnceResponseWriter{
- w: resp,
- }
- assert.NotPanics(t, func() {
- writer.Hijack()
- })
- writer = &HeaderOnceResponseWriter{
- w: mockedHijackable{resp},
- }
- assert.NotPanics(t, func() {
- writer.Hijack()
- })
- }
- type mockedHijackable struct {
- *httptest.ResponseRecorder
- }
- func (m mockedHijackable) Hijack() (net.Conn, *bufio.ReadWriter, error) {
- return nil, nil, nil
- }
|