31 lines
665 B
Go
31 lines
665 B
Go
package metrics
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"bufio"
|
||
|
|
"net"
|
||
|
|
"net/http"
|
||
|
|
"net/http/httptest"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
type hijackRecorder struct {
|
||
|
|
*httptest.ResponseRecorder
|
||
|
|
}
|
||
|
|
|
||
|
|
func (h *hijackRecorder) Hijack() (net.Conn, *bufio.ReadWriter, error) {
|
||
|
|
return nil, nil, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestMiddlewarePreservesHijacker(t *testing.T) {
|
||
|
|
var seen http.ResponseWriter
|
||
|
|
handler := Middleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
|
|
seen = w
|
||
|
|
}))
|
||
|
|
|
||
|
|
handler.ServeHTTP(&hijackRecorder{httptest.NewRecorder()}, httptest.NewRequest(http.MethodGet, "/", nil))
|
||
|
|
|
||
|
|
if _, ok := seen.(http.Hijacker); !ok {
|
||
|
|
t.Fatal("middleware stripped http.Hijacker: WebSocket upgrades will fail")
|
||
|
|
}
|
||
|
|
}
|