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") } }