package middleware import ( "context" "net/http" "net/http/httptest" "testing" ) func TestTrace(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() var executed bool var handler http.Handler = Trace(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { executed = true w.WriteHeader(http.StatusOK) })) req, err := http.NewRequest("GET", "/", nil) if err != nil { t.Fatalf("error when creating request: %v", err) } req = req.WithContext(ctx) rw := httptest.NewRecorder() handler.ServeHTTP(rw, req) if !executed { t.Fatal("middleware Trace doesn't pass through to underlying handler") } }