MCPcopy
hub / github.com/go-chi/chi / TestWalkInlineMiddlewaresAcrossSubrouter

Function TestWalkInlineMiddlewaresAcrossSubrouter

tree_test.go:525–579  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

523}
524
525func TestWalkInlineMiddlewaresAcrossSubrouter(t *testing.T) {
526 mw := func(next http.Handler) http.Handler { return next }
527 handler := func(w http.ResponseWriter, r *http.Request) {}
528
529 tests := []struct {
530 name string
531 setup func() Router
532 expected int
533 }{
534 {
535 name: "With+Group wrapping Route+With",
536 setup: func() Router {
537 r := NewMux()
538 r.With(mw).Group(func(r Router) {
539 r.Route("/foo", func(r Router) {
540 r.With(mw).Post("/bar", handler)
541 })
542 })
543 return r
544 },
545 expected: 2,
546 },
547 {
548 name: "Use on subrouter combined with outer With",
549 setup: func() Router {
550 r := NewMux()
551 r.With(mw).Group(func(r Router) {
552 r.Route("/foo", func(r Router) {
553 r.Use(mw)
554 r.With(mw).Post("/bar", handler)
555 })
556 })
557 return r
558 },
559 expected: 3,
560 },
561 }
562
563 for _, tt := range tests {
564 t.Run(tt.name, func(t *testing.T) {
565 r := tt.setup()
566 var middlewareCount int
567 err := Walk(r, func(method, route string, handler http.Handler, middlewares ...func(http.Handler) http.Handler) error {
568 middlewareCount = len(middlewares)
569 return nil
570 })
571 if err != nil {
572 t.Fatal(err)
573 }
574 if middlewareCount != tt.expected {
575 t.Fatalf("expected %d middlewares, got %d", tt.expected, middlewareCount)
576 }
577 })
578 }
579}

Callers

nothing calls this directly

Calls 7

WithMethod · 0.95
RouteMethod · 0.95
UseMethod · 0.95
NewMuxFunction · 0.85
WalkFunction · 0.85
GroupMethod · 0.65
PostMethod · 0.65

Tested by

no test coverage detected