Skip to content

Commit 3477ec0

Browse files
committed
Decode servletPath in HtmlUnitRequestBuilder
Closes gh-27837
1 parent 9346c89 commit 3477ec0

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java

+2
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import org.springframework.util.StringUtils;
5858
import org.springframework.web.util.UriComponents;
5959
import org.springframework.web.util.UriComponentsBuilder;
60+
import org.springframework.web.util.UriUtils;
6061

6162
/**
6263
* Internal class used to transform a {@link WebRequest} into a
@@ -262,6 +263,7 @@ private void servletPath(UriComponents uriComponents, MockHttpServletRequest req
262263
String path = uriComponents.getPath();
263264
String requestPath = (path != null ? path : "");
264265
String servletPath = requestPath.substring(request.getContextPath().length());
266+
servletPath = UriUtils.decode(servletPath, StandardCharsets.UTF_8);
265267
request.setServletPath(servletPath);
266268
}
267269

spring-test/src/test/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilderTests.java

+10
Original file line numberDiff line numberDiff line change
@@ -782,6 +782,16 @@ public void buildRequestServletPath() throws Exception {
782782
assertThat(actualRequest.getServletPath()).isEqualTo("/this/here");
783783
}
784784

785+
@Test // gh-27837
786+
public void buildRequestServletPathWithEncodedUrl() throws Exception {
787+
webRequest.setUrl(new URL("http://localhost/test/Fr%C3%BChling%20Sommer%20Herbst%20Winter"));
788+
789+
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
790+
791+
assertThat(actualRequest.getRequestURI()).isEqualTo("/test/Fr%C3%BChling%20Sommer%20Herbst%20Winter");
792+
assertThat(actualRequest.getServletPath()).isEqualTo("/Frühling Sommer Herbst Winter");
793+
}
794+
785795
@Test
786796
public void buildRequestSession() throws Exception {
787797
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);

0 commit comments

Comments
 (0)