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) {
|
||||
for (Entry<String, List<String>> values : uriComponents.getQueryParams().entrySet()) {
|
||||
String name = values.getKey();
|
||||
for (String value : values.getValue()) {
|
||||
for (Entry<String, List<String>> entry : uriComponents.getQueryParams().entrySet()) {
|
||||
String name = entry.getKey();
|
||||
for (String value : entry.getValue()) {
|
||||
try {
|
||||
if (value != null) {
|
||||
value = URLDecoder.decode(value, "UTF-8");
|
||||
}
|
||||
value = (value != null ? URLDecoder.decode(value, "UTF-8") : "");
|
||||
request.addParameter(name, value);
|
||||
}
|
||||
catch (UnsupportedEncodingException e) {
|
||||
|
|
|
@ -417,7 +417,7 @@ public class HtmlUnitRequestBuilderTests {
|
|||
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
|
||||
|
||||
assertThat(actualRequest.getParameterMap().size(), equalTo(1));
|
||||
assertThat(actualRequest.getParameter("name"), nullValue());
|
||||
assertThat(actualRequest.getParameter("name"), equalTo(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue