mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-10-07 23:49:08 +00:00
Consistently support no value params in query string
Closes gh-35329
This commit is contained in:
+6
-4
@@ -911,10 +911,12 @@ public abstract class AbstractMockHttpServletRequestBuilder<B extends AbstractMo
|
||||
}
|
||||
|
||||
private void addRequestParams(MockHttpServletRequest request, MultiValueMap<String, String> map) {
|
||||
map.forEach((key, values) -> values.forEach(value -> {
|
||||
value = (value != null ? UriUtils.decode(value, StandardCharsets.UTF_8) : null);
|
||||
request.addParameter(UriUtils.decode(key, StandardCharsets.UTF_8), value);
|
||||
}));
|
||||
map.forEach((key, values) ->
|
||||
request.addParameter(
|
||||
UriUtils.decode(key, StandardCharsets.UTF_8),
|
||||
values.stream()
|
||||
.map(value -> value != null ? UriUtils.decode(value, StandardCharsets.UTF_8) : null)
|
||||
.toArray(String[]::new)));
|
||||
}
|
||||
|
||||
private byte[] writeFormData(MediaType mediaType, Charset charset) {
|
||||
|
||||
+9
@@ -311,6 +311,15 @@ class MockHttpServletRequestBuilderTests {
|
||||
assertThat(request.getParameterMap().get("foo")).containsExactly();
|
||||
}
|
||||
|
||||
@Test // gh-35210
|
||||
void queryStringWithoutValues() {
|
||||
this.builder = new MockHttpServletRequestBuilder(GET).uri("/path?foo");
|
||||
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
|
||||
|
||||
assertThat(request.getQueryString()).isEqualTo("foo");
|
||||
assertThat(request.getParameterMap().get("foo")).containsExactly((String) null);
|
||||
}
|
||||
|
||||
@Test
|
||||
void formField() {
|
||||
this.builder = new MockHttpServletRequestBuilder(POST).uri("/");
|
||||
|
||||
Reference in New Issue
Block a user