Skip to content

Commit 61a46db

Browse files
committed
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
1 parent c52f9d3 commit 61a46db

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -358,13 +358,11 @@ private void locales(MockHttpServletRequest request) {
358358
}
359359

360360
private void params(MockHttpServletRequest request, UriComponents uriComponents) {
361-
for (Entry<String, List<String>> values : uriComponents.getQueryParams().entrySet()) {
362-
String name = values.getKey();
363-
for (String value : values.getValue()) {
361+
for (Entry<String, List<String>> entry : uriComponents.getQueryParams().entrySet()) {
362+
String name = entry.getKey();
363+
for (String value : entry.getValue()) {
364364
try {
365-
if (value != null) {
366-
value = URLDecoder.decode(value, "UTF-8");
367-
}
365+
value = (value != null ? URLDecoder.decode(value, "UTF-8") : "");
368366
request.addParameter(name, value);
369367
}
370368
catch (UnsupportedEncodingException e) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ public void buildRequestParameterMapFromSingleQueryParamWithoutValueAndWithoutEq
417417
MockHttpServletRequest actualRequest = requestBuilder.buildRequest(servletContext);
418418

419419
assertThat(actualRequest.getParameterMap().size(), equalTo(1));
420-
assertThat(actualRequest.getParameter("name"), nullValue());
420+
assertThat(actualRequest.getParameter("name"), equalTo(""));
421421
}
422422

423423
@Test

0 commit comments

Comments
 (0)