@@ -866,3 +866,74 @@ func TestGroup_RouteNotFoundWithMiddleware(t *testing.T) {
866866 })
867867 }
868868}
869+
870+ func TestGroup_UseMultipleTimes (t * testing.T ) {
871+ t .Run ("Group created without middleware can call Use multiple times" , func (t * testing.T ) {
872+ e := NewWithConfig (Config {
873+ Router : NewRouter (RouterConfig {AllowOverwritingRoute : false }),
874+ })
875+
876+ g1 := e .Group ("/api" )
877+ mw1Called := false
878+ g1 .Use (func (next HandlerFunc ) HandlerFunc {
879+ mw1Called = true
880+ return func (c * Context ) error { return next (c ) }
881+ })
882+
883+ mw2Called := false
884+ g1 .Use (func (next HandlerFunc ) HandlerFunc {
885+ mw2Called = true
886+ return func (c * Context ) error { return next (c ) }
887+ })
888+
889+ g1 .GET ("/test" , func (c * Context ) error {
890+ return c .String (http .StatusTeapot , "OK" )
891+ })
892+
893+ req := httptest .NewRequest (http .MethodGet , "/api/test" , nil )
894+ rec := httptest .NewRecorder ()
895+ e .ServeHTTP (rec , req )
896+
897+ assert .True (t , mw1Called )
898+ assert .True (t , mw2Called )
899+ assert .Equal (t , http .StatusTeapot , rec .Code )
900+ })
901+
902+ t .Run ("Group created with middleware can call Use multiple times" , func (t * testing.T ) {
903+ e := NewWithConfig (Config {
904+ Router : NewRouter (RouterConfig {AllowOverwritingRoute : false }),
905+ })
906+
907+ mw0Called := true
908+ g1 := e .Group ("/api" , func (next HandlerFunc ) HandlerFunc {
909+ mw0Called = true
910+ return func (c * Context ) error { return next (c ) }
911+ })
912+
913+ mw1Called := false
914+ g1 .Use (func (next HandlerFunc ) HandlerFunc {
915+ mw1Called = true
916+ return func (c * Context ) error { return next (c ) }
917+ })
918+
919+ mw2Called := false
920+ g1 .Use (func (next HandlerFunc ) HandlerFunc {
921+ mw2Called = true
922+ return func (c * Context ) error { return next (c ) }
923+ })
924+
925+ g1 .GET ("/test" , func (c * Context ) error {
926+ return c .String (http .StatusTeapot , "OK" )
927+ })
928+
929+ req := httptest .NewRequest (http .MethodGet , "/api/test" , nil )
930+ rec := httptest .NewRecorder ()
931+ e .ServeHTTP (rec , req )
932+
933+ assert .True (t , mw0Called )
934+ assert .True (t , mw1Called )
935+ assert .True (t , mw2Called )
936+ assert .Equal (t , http .StatusTeapot , rec .Code )
937+ })
938+
939+ }
0 commit comments