Skip to content

Commit 4b38dc8

Browse files
committed
Fix exception mock request builder
Issue: SPR-11043
1 parent 7387cb9 commit 4b38dc8

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

spring-test-mvc/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -581,9 +581,8 @@ public final MockHttpServletRequest buildRequest(ServletContext servletContext)
581581

582582
for (Entry<String, List<String>> entry : this.uriComponents.getQueryParams().entrySet()) {
583583
for (String value : entry.getValue()) {
584-
request.addParameter(
585-
UriUtils.decode(entry.getKey(), "UTF-8"),
586-
UriUtils.decode(value, "UTF-8"));
584+
value = (value != null) ? UriUtils.decode(value, "UTF-8") : null;
585+
request.addParameter(UriUtils.decode(entry.getKey(), "UTF-8"), value);
587586
}
588587
}
589588
}

spring-test-mvc/src/test/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilderTests.java

+13
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,19 @@ public void requestParameterFromQueryWithEncoding() throws Exception {
228228
assertEquals("bar=baz", request.getParameter("foo"));
229229
}
230230

231+
// SPR-11043
232+
233+
@Test
234+
public void requestParameterFromQueryNull() throws Exception {
235+
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo");
236+
237+
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
238+
Map<String, String[]> parameterMap = request.getParameterMap();
239+
240+
assertArrayEquals(new String[]{null}, parameterMap.get("foo"));
241+
assertEquals("foo", request.getQueryString());
242+
}
243+
231244
@Test
232245
public void acceptHeader() throws Exception {
233246
this.builder.accept(MediaType.TEXT_HTML, MediaType.APPLICATION_XML);

0 commit comments

Comments
 (0)