HtmlUnitRequestBuilder decodes parameter names
Previously HtmlUnitRequestBuilder did not decode parameter names. This means if a parameter like row[0] was submittted it would be encoded as row%5B0%5D When the HttpServletRequest was created the parameter name would not be decoded so the parameter name row[0] would not be found. This commit ensures that HTTP parameter names are decoded. Issue SPR-14177
This commit is contained in:
@@ -411,6 +411,27 @@ public class HtmlUnitRequestBuilderTests {
|
||||
assertThat(actualRequest.getParameter("name"), equalTo("value"));
|
||||
}
|
||||
|
||||
// SPR-14177
|
||||
@Test
|
||||
public void buildRequestParameterMapDecodesParameterName() throws Exception {
|
||||
webRequest.setUrl(new URL("http://example.com/example/?row%5B0%5D=value"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size(), equalTo(1));
|
||||
assertThat(actualRequest.getParameter("row[0]"), equalTo("value"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapDecodesParameterValue() throws Exception {
|
||||
webRequest.setUrl(new URL("http://example.com/example/?name=row%5B0%5D"));
|
||||
|
||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size(), equalTo(1));
|
||||
assertThat(actualRequest.getParameter("name"), equalTo("row[0]"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildRequestParameterMapFromSingleQueryParamWithoutValueAndWithoutEqualsSign() throws Exception {
|
||||
webRequest.setUrl(new URL("http://example.com/example/?name"));
|
||||
|
||||
Reference in New Issue
Block a user