@@ -147,6 +147,54 @@ void ordering_is_by_order_field() {
147147 assertEquals (List .of ("f10" , "f20" , "f30" , "handler" ), events );
148148 }
149149
150+ @ Test
151+ void global_stop_filter_prevents_route_and_handler () {
152+ List <String > events = new ArrayList <>();
153+
154+ HttpFilter globalStop = new TestFilter ("gStop" , events , true );
155+ HttpFilter routeFilter = new TestFilter ("r1" , events , false );
156+
157+ List <FilterRegistration > regs = List .of (
158+ new FilterRegistration (globalStop , 1 , null ),
159+ new FilterRegistration (routeFilter , 1 , List .of ("/api/*" ))
160+ );
161+
162+ ConfigurableFilterPipeline pipeline =
163+ new ConfigurableFilterPipeline (regs );
164+
165+ HttpResponse response = pipeline .execute (
166+ new HttpRequest ("GET" , "/api/users" ),
167+ new TestHandler (events )
168+ );
169+
170+ assertEquals (403 , response .getStatusCode ());
171+ assertEquals (List .of ("gStop" ), events );
172+ }
173+
174+ @ Test
175+ void route_stop_filter_prevents_handler_but_global_runs () {
176+ List <String > events = new ArrayList <>();
177+
178+ HttpFilter global = new TestFilter ("g1" , events , false );
179+ HttpFilter routeStop = new TestFilter ("rStop" , events , true );
180+
181+ List <FilterRegistration > regs = List .of (
182+ new FilterRegistration (global , 1 , null ),
183+ new FilterRegistration (routeStop , 1 , List .of ("/api/*" ))
184+ );
185+
186+ ConfigurableFilterPipeline pipeline =
187+ new ConfigurableFilterPipeline (regs );
188+
189+ HttpResponse response = pipeline .execute (
190+ new HttpRequest ("GET" , "/api/users" ),
191+ new TestHandler (events )
192+ );
193+
194+ assertEquals (403 , response .getStatusCode ());
195+ assertEquals (List .of ("g1" , "rStop" ), events );
196+ }
197+
150198
151199 static class TestFilter implements HttpFilter {
152200
0 commit comments