Browse Source

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
pull/881/head
Sam Brannen 11 years ago
parent
commit
61a46db101
  1. 10
      spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java
  2. 2
      spring-test/src/test/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilderTests.java

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

@ -358,13 +358,11 @@ final class HtmlUnitRequestBuilder implements RequestBuilder, Mergeable { @@ -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) {

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

@ -417,7 +417,7 @@ public class HtmlUnitRequestBuilderTests { @@ -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…
Cancel
Save