Treat query param w/o "=" as empty string in HtmlUnitRequestBuilder
Prior to this commit, HtmlUnitRequestBuilder stored empty query parameters declared without an equals sign as null (i.e., query parameters such as 'error' in 'http://example.com/login?error'). This commit addresses this issue by ensuring that HtmlUnitRequestBuilder treats all empty query parameter values as empty strings. Consequently, query strings such as '?error' and '?error=' now both result in 'error' being stored as an empty string. Issue: SPR-13524
This commit is contained in:
parent
c52f9d3524
commit
61a46db101
|
@ -358,13 +358,11 @@ final class HtmlUnitRequestBuilder implements RequestBuilder, Mergeable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void params(MockHttpServletRequest request, UriComponents uriComponents) {
|
private void params(MockHttpServletRequest request, UriComponents uriComponents) {
|
||||||
for (Entry<String, List<String>> values : uriComponents.getQueryParams().entrySet()) {
|
for (Entry<String, List<String>> entry : uriComponents.getQueryParams().entrySet()) {
|
||||||
String name = values.getKey();
|
String name = entry.getKey();
|
||||||
for (String value : values.getValue()) {
|
for (String value : entry.getValue()) {
|
||||||
try {
|
try {
|
||||||
if (value != null) {
|
value = (value != null ? URLDecoder.decode(value, "UTF-8") : "");
|
||||||
value = URLDecoder.decode(value, "UTF-8");
|
|
||||||
}
|
|
||||||
request.addParameter(name, value);
|
request.addParameter(name, value);
|
||||||
}
|
}
|
||||||
catch (UnsupportedEncodingException e) {
|
catch (UnsupportedEncodingException e) {
|
||||||
|
|
|
@ -417,7 +417,7 @@ public class HtmlUnitRequestBuilderTests {
|
||||||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||||
|
|
||||||
assertThat(actualRequest.getParameterMap().size(), equalTo(1));
|
assertThat(actualRequest.getParameterMap().size(), equalTo(1));
|
||||||
assertThat(actualRequest.getParameter("name"), nullValue());
|
assertThat(actualRequest.getParameter("name"), equalTo(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue