Polishing in AbstractMockHttpServletRequestBuilder

See gh-35329
This commit is contained in:
rstoyanchev
2025-08-29 10:22:43 +03:00
parent 737f66d922
commit 268706abd2
2 changed files with 26 additions and 40 deletions
@@ -342,7 +342,7 @@ public abstract class AbstractMockHttpServletRequestBuilder<B extends AbstractMo
* @param values one or more header values
*/
public B header(String name, Object... values) {
addToMultiValueMap(this.headers, name, values);
this.headers.addAll(name, Arrays.asList(values));
return self();
}
@@ -372,11 +372,7 @@ public abstract class AbstractMockHttpServletRequestBuilder<B extends AbstractMo
* @param values one or more values
*/
public B param(String name, String... values) {
if (values.length == 0) {
this.parameters.computeIfAbsent(name, k -> new ArrayList<>());
return self();
}
addToMultiValueMap(this.parameters, name, values);
this.parameters.addAll(name, Arrays.asList(values));
return self();
}
@@ -823,10 +819,9 @@ public abstract class AbstractMockHttpServletRequestBuilder<B extends AbstractMo
if (query != null) {
request.setQueryString(query);
}
addRequestParams(request, UriComponentsBuilder.fromUri(uri).build().getQueryParams());
this.parameters.forEach((name, values) ->
request.addParameter(name, values.toArray(new String[0])));
addRequestParams(request, UriComponentsBuilder.fromUri(uri).build().getQueryParams());
this.parameters.forEach((name, values) -> request.addParameter(name, values.toArray(new String[0])));
if (!this.formFields.isEmpty()) {
if (this.content != null && this.content.length > 0) {
@@ -993,19 +988,10 @@ public abstract class AbstractMockHttpServletRequestBuilder<B extends AbstractMo
return request;
}
private static void addToMap(Map<String, Object> map, String name, Object value) {
Assert.hasLength(name, "'name' must not be empty");
Assert.notNull(value, "'value' must not be null");
map.put(name, value);
}
private static <T> void addToMultiValueMap(MultiValueMap<String, T> map, String name, T[] values) {
Assert.hasLength(name, "'name' must not be empty");
Assert.notEmpty(values, "'values' must not be empty");
for (T value : values) {
map.add(name, value);
}
}
}
@@ -230,7 +230,7 @@ class MockHttpServletRequestBuilderTests {
}
@Test
void requestParameterFromQuery() {
void requestParameterFromQueryString() {
this.builder = new MockHttpServletRequestBuilder(GET).uri("/?foo=bar&foo=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@@ -241,7 +241,7 @@ class MockHttpServletRequestBuilderTests {
}
@Test
void requestParameterFromQueryList() {
void requestParameterFromQueryStringWithListValues() {
this.builder = new MockHttpServletRequestBuilder(GET).uri("/?foo[0]=bar&foo[1]=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@@ -263,25 +263,6 @@ class MockHttpServletRequestBuilderTests {
assertThat(request.getQueryString()).isEqualTo("foo=bar&foo=baz");
}
@Test // gh-35210
void queryParameterWithoutValues() {
this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
this.builder.queryParam("foo");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getQueryString()).isEqualTo("foo");
assertThat(request.getParameterMap().get("foo")).containsExactly();
}
@Test
void queryParametersWithUriAndQueryParam() {
this.builder = new MockHttpServletRequestBuilder(GET).uri("/path?param1=value1");
this.builder.queryParam("param1", "value2");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getParameterMap().get("param1")).containsExactly("value1", "value2");
}
@Test
void queryParameterMap() {
this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
@@ -299,7 +280,7 @@ class MockHttpServletRequestBuilderTests {
}
@Test
void queryParameterList() {
void queryParameterWithListValues() {
this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
this.builder.queryParam("foo[0]", "bar");
this.builder.queryParam("foo[1]", "baz");
@@ -311,6 +292,25 @@ class MockHttpServletRequestBuilderTests {
assertThat(request.getParameter("foo[1]")).isEqualTo("baz");
}
@Test // gh-35329
void queryParameterAndQueryString() {
this.builder = new MockHttpServletRequestBuilder(GET).uri("/path?param1=value1");
this.builder.queryParam("param1", "value2");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getParameterMap().get("param1")).containsExactly("value1", "value2");
}
@Test // gh-35210
void queryParameterWithoutValues() {
this.builder = new MockHttpServletRequestBuilder(GET).uri("/");
this.builder.queryParam("foo");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertThat(request.getQueryString()).isEqualTo("foo");
assertThat(request.getParameterMap().get("foo")).containsExactly();
}
@Test
void formField() {
this.builder = new MockHttpServletRequestBuilder(POST).uri("/");