Skip to content

Commit fcdcadb

Browse files
Add short-circuit tests for configurable filter pipeline
1 parent 61c3be0 commit fcdcadb

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

src/test/java/org/example/server/ConfigurableFilterPipelineTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)