Skip to content

Commit db9d1d0

Browse files
Corné de JongAlexVulaj
Corné de Jong
authored andcommitted
added test for router in context
1 parent fe14465 commit db9d1d0

File tree

1 file changed

+64
-1
lines changed

1 file changed

+64
-1
lines changed

mux_test.go

+64-1
Original file line numberDiff line numberDiff line change
@@ -1769,7 +1769,70 @@ func TestPanicOnCapturingGroups(t *testing.T) {
17691769
}
17701770

17711771
func TestRouterInContext(t *testing.T) {
1772-
// TODO Write tests for router in context
1772+
router := NewRouter()
1773+
router.HandleFunc("/r1", func(w http.ResponseWriter, r *http.Request) {
1774+
contextRouter := CurrentRouter(r)
1775+
if contextRouter == nil {
1776+
t.Fatal("Router not found in context")
1777+
return
1778+
}
1779+
1780+
route := contextRouter.Get("r2")
1781+
if route == nil {
1782+
t.Fatal("Route with name not found")
1783+
return
1784+
}
1785+
1786+
url, err := route.URL()
1787+
if err != nil {
1788+
t.Fatal("Error while getting url for r2: ", err)
1789+
return
1790+
}
1791+
1792+
_, err = w.Write([]byte(url.String()))
1793+
if err != nil {
1794+
t.Fatalf("Failed writing HTTP response: %v", err)
1795+
}
1796+
}).Name("r1")
1797+
1798+
noRouterMsg := []byte("no-router")
1799+
haveRouterMsg := []byte("have-router")
1800+
router.HandleFunc("/r2", func(w http.ResponseWriter, r *http.Request) {
1801+
var msg []byte
1802+
1803+
contextRouter := CurrentRouter(r)
1804+
if contextRouter == nil {
1805+
msg = noRouterMsg
1806+
} else {
1807+
msg = haveRouterMsg
1808+
}
1809+
1810+
_, err := w.Write(msg)
1811+
if err != nil {
1812+
t.Fatalf("Failed writing HTTP response: %v", err)
1813+
}
1814+
}).Name("r2")
1815+
1816+
t.Run("router in request context get route by name", func(t *testing.T) {
1817+
rw := NewRecorder()
1818+
req := newRequest("GET", "/r1")
1819+
1820+
router.ServeHTTP(rw, req)
1821+
if !bytes.Equal(rw.Body.Bytes(), []byte("/r2")) {
1822+
t.Fatalf("Expected output to be '/r1' but got '%s'", rw.Body.String())
1823+
}
1824+
})
1825+
1826+
t.Run("omit router from request context", func(t *testing.T) {
1827+
rw := NewRecorder()
1828+
req := newRequest("GET", "/r2")
1829+
1830+
router.OmitRouterFromContext(true)
1831+
router.ServeHTTP(rw, req)
1832+
if !bytes.Equal(rw.Body.Bytes(), noRouterMsg) {
1833+
t.Fatal("Router not omitted from context")
1834+
}
1835+
})
17731836
}
17741837

17751838
// ----------------------------------------------------------------------------

0 commit comments

Comments
 (0)