Mono repo -> Master (#22553)
Combines the following repositories into one: https://github.com/mattermost/mattermost-server https://github.com/mattermost/mattermost-webapp https://github.com/mattermost/focalboard https://github.com/mattermost/mattermost-plugin-playbooks
Этот коммит содержится в:
87
server/channels/web/response_writer_wrapper_test.go
Обычный файл
87
server/channels/web/response_writer_wrapper_test.go
Обычный файл
@@ -0,0 +1,87 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package web
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
type TestHandler struct {
|
||||
TestFunc func(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
||||
func (h *TestHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
h.TestFunc(w, r)
|
||||
}
|
||||
|
||||
type responseRecorderHijack struct {
|
||||
httptest.ResponseRecorder
|
||||
}
|
||||
|
||||
func (r *responseRecorderHijack) Hijack() (net.Conn, *bufio.ReadWriter, error) {
|
||||
r.WriteHeader(http.StatusOK)
|
||||
return nil, nil, nil
|
||||
}
|
||||
|
||||
func newResponseWithHijack(original *httptest.ResponseRecorder) *responseRecorderHijack {
|
||||
return &responseRecorderHijack{*original}
|
||||
}
|
||||
|
||||
func TestStatusCodeIsAccessible(t *testing.T) {
|
||||
resp := newWrappedWriter(httptest.NewRecorder())
|
||||
req := httptest.NewRequest("GET", "/api/v4/test", nil)
|
||||
handler := TestHandler{func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
}}
|
||||
handler.ServeHTTP(resp, req)
|
||||
assert.Equal(t, http.StatusBadRequest, resp.StatusCode())
|
||||
}
|
||||
|
||||
func TestStatusCodeShouldBe200IfNotHeaderWritten(t *testing.T) {
|
||||
resp := newWrappedWriter(httptest.NewRecorder())
|
||||
req := httptest.NewRequest("GET", "/api/v4/test", nil)
|
||||
handler := TestHandler{func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte{})
|
||||
}}
|
||||
handler.ServeHTTP(resp, req)
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode())
|
||||
}
|
||||
|
||||
func TestForUnsupportedHijack(t *testing.T) {
|
||||
resp := newWrappedWriter(httptest.NewRecorder())
|
||||
req := httptest.NewRequest("GET", "/api/v4/test", nil)
|
||||
handler := TestHandler{func(w http.ResponseWriter, r *http.Request) {
|
||||
_, _, err := w.(*responseWriterWrapper).Hijack()
|
||||
assert.Error(t, err)
|
||||
assert.Equal(t, "Hijacker interface not supported by the wrapped ResponseWriter", err.Error())
|
||||
}}
|
||||
handler.ServeHTTP(resp, req)
|
||||
}
|
||||
|
||||
func TestForSupportedHijack(t *testing.T) {
|
||||
resp := newWrappedWriter(newResponseWithHijack(httptest.NewRecorder()))
|
||||
req := httptest.NewRequest("GET", "/api/v4/test", nil)
|
||||
handler := TestHandler{func(w http.ResponseWriter, r *http.Request) {
|
||||
_, _, err := w.(*responseWriterWrapper).Hijack()
|
||||
assert.NoError(t, err)
|
||||
}}
|
||||
handler.ServeHTTP(resp, req)
|
||||
}
|
||||
|
||||
func TestForSupportedFlush(t *testing.T) {
|
||||
resp := newWrappedWriter(httptest.NewRecorder())
|
||||
req := httptest.NewRequest("GET", "/api/v4/test", nil)
|
||||
handler := TestHandler{func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte{})
|
||||
w.(*responseWriterWrapper).Flush()
|
||||
}}
|
||||
handler.ServeHTTP(resp, req)
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode())
|
||||
}
|
||||
Ссылка в новой задаче
Block a user