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