Skip to content

Commit 268706a

Browse files
committed
Polishing in AbstractMockHttpServletRequestBuilder
See gh-35329
1 parent 737f66d commit 268706a

File tree

2 files changed

+26
-40
lines changed

2 files changed

+26
-40
lines changed

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

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ public B accept(String... mediaTypes) {
342342
* @param values one or more header values
343343
*/
344344
public B header(String name, Object... values) {
345-
addToMultiValueMap(this.headers, name, values);
345+
this.headers.addAll(name, Arrays.asList(values));
346346
return self();
347347
}
348348

@@ -372,11 +372,7 @@ public B headers(HttpHeaders httpHeaders) {
372372
* @param values one or more values
373373
*/
374374
public B param(String name, String... values) {
375-
if (values.length == 0) {
376-
this.parameters.computeIfAbsent(name, k -> new ArrayList<>());
377-
return self();
378-
}
379-
addToMultiValueMap(this.parameters, name, values);
375+
this.parameters.addAll(name, Arrays.asList(values));
380376
return self();
381377
}
382378

@@ -823,10 +819,9 @@ public final MockHttpServletRequest buildRequest(ServletContext servletContext)
823819
if (query != null) {
824820
request.setQueryString(query);
825821
}
826-
addRequestParams(request, UriComponentsBuilder.fromUri(uri).build().getQueryParams());
827822

828-
this.parameters.forEach((name, values) ->
829-
request.addParameter(name, values.toArray(new String[0])));
823+
addRequestParams(request, UriComponentsBuilder.fromUri(uri).build().getQueryParams());
824+
this.parameters.forEach((name, values) -> request.addParameter(name, values.toArray(new String[0])));
830825

831826
if (!this.formFields.isEmpty()) {
832827
if (this.content != null && this.content.length > 0) {
@@ -993,19 +988,10 @@ public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request)
993988
return request;
994989
}
995990

996-
997991
private static void addToMap(Map<String, Object> map, String name, Object value) {
998992
Assert.hasLength(name, "'name' must not be empty");
999993
Assert.notNull(value, "'value' must not be null");
1000994
map.put(name, value);
1001995
}
1002996

1003-
private static <T> void addToMultiValueMap(MultiValueMap<String, T> map, String name, T[] values) {
1004-
Assert.hasLength(name, "'name' must not be empty");
1005-
Assert.notEmpty(values, "'values' must not be empty");
1006-
for (T value : values) {
1007-
map.add(name, value);
1008-
}
1009-
}
1010-
1011997
}

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

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ void requestParameter() {
230230
}
231231

232232
@Test
233-
void requestParameterFromQuery() {
233+
void requestParameterFromQueryString() {
234234
this.builder = new MockHttpServletRequestBuilder(GET).uri("/?foo=bar&foo=baz");
235235

236236
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@@ -241,7 +241,7 @@ void requestParameterFromQuery() {
241241
}
242242

243243
@Test
244-
void requestParameterFromQueryList() {
244+
void requestParameterFromQueryStringWithListValues() {
245245
this.builder = new MockHttpServletRequestBuilder(GET).uri("/?foo[0]=bar&foo[1]=baz");
246246

247247
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@@ -263,25 +263,6 @@ void queryParameter() {
263263
assertThat(request.getQueryString()).isEqualTo("foo=bar&foo=baz");
264264
}
265265

266-
@Test // gh-35210
267-
void queryParameterWithoutValues() {
268-
this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
269-
this.builder.queryParam("foo");
270-
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
271-
272-
assertThat(request.getQueryString()).isEqualTo("foo");
273-
assertThat(request.getParameterMap().get("foo")).containsExactly();
274-
}
275-
276-
@Test
277-
void queryParametersWithUriAndQueryParam() {
278-
this.builder = new MockHttpServletRequestBuilder(GET).uri("/path?param1=value1");
279-
this.builder.queryParam("param1", "value2");
280-
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
281-
282-
assertThat(request.getParameterMap().get("param1")).containsExactly("value1", "value2");
283-
}
284-
285266
@Test
286267
void queryParameterMap() {
287268
this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
@@ -299,7 +280,7 @@ void queryParameterMap() {
299280
}
300281

301282
@Test
302-
void queryParameterList() {
283+
void queryParameterWithListValues() {
303284
this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
304285
this.builder.queryParam("foo[0]", "bar");
305286
this.builder.queryParam("foo[1]", "baz");
@@ -311,6 +292,25 @@ void queryParameterList() {
311292
assertThat(request.getParameter("foo[1]")).isEqualTo("baz");
312293
}
313294

295+
@Test // gh-35329
296+
void queryParameterAndQueryString() {
297+
this.builder = new MockHttpServletRequestBuilder(GET).uri("/path?param1=value1");
298+
this.builder.queryParam("param1", "value2");
299+
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
300+
301+
assertThat(request.getParameterMap().get("param1")).containsExactly("value1", "value2");
302+
}
303+
304+
@Test // gh-35210
305+
void queryParameterWithoutValues() {
306+
this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
307+
this.builder.queryParam("foo");
308+
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
309+
310+
assertThat(request.getQueryString()).isEqualTo("foo");
311+
assertThat(request.getParameterMap().get("foo")).containsExactly();
312+
}
313+
314314
@Test
315315
void formField() {
316316
this.builder = new MockHttpServletRequestBuilder(POST).uri("/");

0 commit comments

Comments
 (0)