Merge branch '4.1.x' into 4.2.x
This commit is contained in:
@@ -329,10 +329,10 @@ public abstract class BeforeFilterFunctions {
|
||||
Pattern pattern = Pattern.compile(regexp);
|
||||
return request -> {
|
||||
MvcUtils.addOriginalRequestUrl(request, request.uri());
|
||||
String path = request.uri().getRawPath();
|
||||
String path = request.uri().getPath();
|
||||
String newPath = pattern.matcher(path).replaceAll(normalizedReplacement);
|
||||
|
||||
URI rewrittenUri = UriComponentsBuilder.fromUri(request.uri()).replacePath(newPath).build().toUri();
|
||||
URI rewrittenUri = UriComponentsBuilder.fromUri(request.uri()).replacePath(newPath).encode().build().toUri();
|
||||
|
||||
ServerRequest modified = ServerRequest.from(request).uri(rewrittenUri).build();
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* @author raccoonback
|
||||
* @author Jens Mallien
|
||||
*/
|
||||
class BeforeFilterFunctionsTests {
|
||||
|
||||
@@ -181,4 +182,52 @@ class BeforeFilterFunctionsTests {
|
||||
assertThat(result.uri().toString()).hasToString("http://localhost/depth3?baz%5B%5D=qux%5B%5D");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rewritePath() {
|
||||
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/get")
|
||||
.buildRequest(null);
|
||||
|
||||
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
|
||||
|
||||
ServerRequest modified = BeforeFilterFunctions.rewritePath("get", "modified").apply(request);
|
||||
|
||||
assertThat(modified.uri().getRawPath()).isEqualTo("/modified");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rewritePathWithSpace() {
|
||||
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/get/path/with spaces")
|
||||
.buildRequest(null);
|
||||
|
||||
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
|
||||
|
||||
ServerRequest modified = BeforeFilterFunctions.rewritePath("get", "modified").apply(request);
|
||||
|
||||
assertThat(modified.uri().getRawPath()).isEqualTo("/modified/path/with%20spaces");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rewritePathWithEnDash() {
|
||||
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/get/path/with–en–dashes")
|
||||
.buildRequest(null);
|
||||
|
||||
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
|
||||
|
||||
ServerRequest modified = BeforeFilterFunctions.rewritePath("get", "modified").apply(request);
|
||||
|
||||
assertThat(modified.uri().getRawPath()).isEqualTo("/modified/path/with%E2%80%93en%E2%80%93dashes");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rewritePathWithEnDashAndSpace() {
|
||||
MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/get/path/with–en–dashes and spaces")
|
||||
.buildRequest(null);
|
||||
|
||||
ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList());
|
||||
|
||||
ServerRequest modified = BeforeFilterFunctions.rewritePath("get", "modified").apply(request);
|
||||
|
||||
assertThat(modified.uri().getRawPath()).isEqualTo("/modified/path/with%E2%80%93en%E2%80%93dashes%20and%20spaces");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user