Append query on redirect in UrlHandlerFilter

Closes gh-35873
This commit is contained in:
rstoyanchev
2025-12-04 11:34:54 +00:00
parent e45727d4fa
commit cee185ce3b
4 changed files with 24 additions and 7 deletions
@@ -78,14 +78,18 @@ public class UrlHandlerFilterTests {
UrlHandlerFilter filter = UrlHandlerFilter.trailingSlashHandler("/path/*").redirect(status).build();
String path = "/path/123";
MockHttpServletRequest request = new MockHttpServletRequest("GET", path + "/");
MockHttpServletResponse response = new MockHttpServletResponse();
MockFilterChain chain = new MockFilterChain();
filter.doFilterInternal(new MockHttpServletRequest("GET", path + "/"), response, chain);
String queryString = "foo=bar";
request.setQueryString(queryString);
filter.doFilterInternal(request, response, chain);
assertThat(chain.getRequest()).isNull();
assertThat(response.getStatus()).isEqualTo(status.value());
assertThat(response.getHeader(HttpHeaders.LOCATION)).isEqualTo(path);
assertThat(response.getHeader(HttpHeaders.LOCATION)).isEqualTo(path + "?" + queryString);
assertThat(response.isCommitted()).isTrue();
}
@@ -64,14 +64,15 @@ public class UrlHandlerFilterTests {
UrlHandlerFilter filter = UrlHandlerFilter.trailingSlashHandler("/path/*").redirect(status).build();
String path = "/path/123";
MockServerHttpRequest original = MockServerHttpRequest.get(path + "/").build();
String queryString = "foo=bar";
MockServerHttpRequest original = MockServerHttpRequest.get(path + "/?" + queryString).build();
ServerWebExchange exchange = MockServerWebExchange.from(original);
assertThatThrownBy(() -> invokeFilter(filter, exchange))
.hasMessageContaining("No argument value was captured");
assertThat(exchange.getResponse().getStatusCode()).isEqualTo(status);
assertThat(exchange.getResponse().getHeaders().getLocation()).isEqualTo(URI.create(path));
assertThat(exchange.getResponse().getHeaders().getLocation()).isEqualTo(URI.create(path + "?" + queryString));
}
@Test