package web
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestRouterMiddleware(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
m := New()
|
|
ch := make(chan string, 1)
|
|
m.Get("/a", chHandler(ch, "a"))
|
|
m.Get("/b", chHandler(ch, "b"))
|
|
m.Use(m.Router)
|
|
m.Use(func(c *C, h http.Handler) http.Handler {
|
|
fn := func(w http.ResponseWriter, r *http.Request) {
|
|
m := GetMatch(*c)
|
|
if rp := m.RawPattern(); rp != "/a" {
|
|
t.Fatalf("RawPattern was not /a: %v", rp)
|
|
}
|
|
r.URL.Path = "/b"
|
|
h.ServeHTTP(w, r)
|
|
}
|
|
return http.HandlerFunc(fn)
|
|
})
|
|
|
|
r, _ := http.NewRequest("GET", "/a", nil)
|
|
w := httptest.NewRecorder()
|
|
m.ServeHTTP(w, r)
|
|
if v := <-ch; v != "a" {
|
|
t.Errorf("Routing was not frozen! %s", v)
|
|
}
|
|
}
|