From 61a46db10179b187d52edd2a0db67b97f2faab02 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Sun, 4 Oct 2015 19:11:41 +0200 Subject: [PATCH] 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 --- .../web/servlet/htmlunit/HtmlUnitRequestBuilder.java | 10 ++++------ .../servlet/htmlunit/HtmlUnitRequestBuilderTests.java | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java index e38a9b27c2..2d2802f94e 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.java @@ -358,13 +358,11 @@ final class HtmlUnitRequestBuilder implements RequestBuilder, Mergeable { } private void params(MockHttpServletRequest request, UriComponents uriComponents) { - for (Entry> values : uriComponents.getQueryParams().entrySet()) { - String name = values.getKey(); - for (String value : values.getValue()) { + for (Entry> 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) { diff --git a/spring-test/src/test/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilderTests.java b/spring-test/src/test/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilderTests.java index 61e09c3271..3248113d69 100644 --- a/spring-test/src/test/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilderTests.java +++ b/spring-test/src/test/java/org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilderTests.java @@ -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