package main
import (
"net/http"
"net/http/httptest"
"testing"
)
func TestMuxPatternWalksToTheInnermostRoute(t *testing.T) {
inner := http.NewServeMux()
inner.HandleFunc("GET /r/{repo}/file/{path...}", func(http.ResponseWriter, *http.Request) {})
outer := http.NewServeMux()
outer.Handle("POST /r/{repo}", http.NotFoundHandler())
outer.Handle("/", inner)
top := http.NewServeMux()
top.Handle("GET /runner/", http.NotFoundHandler())
top.Handle("/", outer)
f := muxPattern(top)
for path, want := range map[string]string{
"/r/quarry/file/a/b": "GET /r/{repo}/file/{path...}",
"/runner/x": "GET /runner/",
} {
if got := f(httptest.NewRequest("GET", path, nil)); got != want {
t.Errorf("FAIL: %s -> %q, want %q", path, got, want)
}
}
if got := f(httptest.NewRequest("POST", "/r/quarry", nil)); got != "POST /r/{repo}" {
t.Errorf("FAIL: POST -> %q", got)
}
}