1// +build go1.7 2 3package mux 4 5import ( 6 "context" 7 "net/http" 8 "testing" 9 "time" 10) 11 12func TestNativeContextMiddleware(t *testing.T) { 13 withTimeout := func(h http.Handler) http.Handler { 14 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 15 ctx, cancel := context.WithTimeout(r.Context(), time.Minute) 16 defer cancel() 17 h.ServeHTTP(w, r.WithContext(ctx)) 18 }) 19 } 20 21 r := NewRouter() 22 r.Handle("/path/{foo}", withTimeout(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 23 vars := Vars(r) 24 if vars["foo"] != "bar" { 25 t.Fatal("Expected foo var to be set") 26 } 27 }))) 28 29 rec := NewRecorder() 30 req := newRequest("GET", "/path/bar") 31 r.ServeHTTP(rec, req) 32} 33