Decode servletPath in HtmlUnitRequestBuilder
Closes gh-27837
This commit is contained in:
parent
9346c89f5c
commit
3477ec0a35
|
|
@ -57,6 +57,7 @@ import org.springframework.util.ObjectUtils;
|
|||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.util.UriComponents;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
import org.springframework.web.util.UriUtils;
|
||||
|
||||
/**
|
||||
* Internal class used to transform a {@link WebRequest} into a
|
||||
|
|
@ -262,6 +263,7 @@ final class HtmlUnitRequestBuilder implements RequestBuilder, Mergeable {
|
|||
String path = uriComponents.getPath();
|
||||
String requestPath = (path != null ? path : "");
|
||||
String servletPath = requestPath.substring(request.getContextPath().length());
|
||||
servletPath = UriUtils.decode(servletPath, StandardCharsets.UTF_8);
|
||||
request.setServletPath(servletPath);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -782,6 +782,16 @@ public class HtmlUnitRequestBuilderTests {
|
|||
assertThat(actualRequest.getServletPath()).isEqualTo("/this/here");
|
||||
}
|
||||
|
||||
@Test // gh-27837
|
||||
public void buildRequestServletPathWithEncodedUrl() throws Exception {
|
||||
webRequest.setUrl(new URL("http://localhost/test/Fr%C3%BChling%20Sommer%20Herbst%20Winter"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getRequestURI()).isEqualTo("/test/Fr%C3%BChling%20Sommer%20Herbst%20Winter");
|
||||
assertThat(actualRequest.getServletPath()).isEqualTo("/Frühling Sommer Herbst Winter");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestSession() throws Exception {
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
|
|
|||
Loading…
Reference in New Issue