Completely extract ServletRequestParameterPropertyValuesTests

This aligns with changes to ServletRequestParameterPropertyValuesTests
on 6.2.x.
This commit is contained in:
Sam Brannen
2026-04-16 15:11:39 +02:00
parent c9b88b4ebd
commit ab6637c670
2 changed files with 32 additions and 38 deletions
@@ -33,30 +33,47 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class ServletRequestParameterPropertyValuesTests {
private final MockHttpServletRequest request = new MockHttpServletRequest();
@Test
void noParameters() {
var pvs = new ServletRequestParameterPropertyValues(request);
assertThat(pvs.getPropertyValues()).as("Found no parameters").isEmpty();
}
@Test
void multipleValuesForParameter() {
String[] original = new String[] {"Tony", "Rod"};
request.addParameter("forname", original);
var pvs = new ServletRequestParameterPropertyValues(request);
assertThat(pvs.getPropertyValues().length).as("Found 1 parameter").isEqualTo(1);
assertThat(pvs.getPropertyValue("forname").getValue()).as("Found array value").isInstanceOf(String[].class);
String[] values = (String[]) pvs.getPropertyValue("forname").getValue();
assertThat(original).containsExactly(values);
}
@Test
void noPrefix() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("forname", "Tony");
request.addParameter("surname", "Blair");
request.addParameter("age", "" + 50);
ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(request);
testTony(pvs);
testTony(new ServletRequestParameterPropertyValues(request));
}
@Test
void prefix() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("test_forname", "Tony");
request.addParameter("test_surname", "Blair");
request.addParameter("test_age", "" + 50);
ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(request);
var pvs = new ServletRequestParameterPropertyValues(request);
assertThat(pvs.contains("forname")).as("Didn't find normal when given prefix").isFalse();
assertThat(pvs.contains("test_forname")).as("Did treat prefix as normal when not given prefix").isTrue();
pvs = new ServletRequestParameterPropertyValues(request, "test");
testTony(pvs);
testTony(new ServletRequestParameterPropertyValues(request, "test"));
}
/**
@@ -69,19 +86,18 @@ class ServletRequestParameterPropertyValuesTests {
assertThat(pvs.contains("age")).as("Contains age").isTrue();
assertThat(pvs.contains("tory")).as("Doesn't contain tory").isFalse();
PropertyValue[] pvArray = pvs.getPropertyValues();
Map<String, String> m = new HashMap<>();
m.put("forname", "Tony");
m.put("surname", "Blair");
m.put("age", "50");
for (PropertyValue pv : pvArray) {
Object val = m.get(pv.getName());
Map<String, String> map = new HashMap<>();
map.put("forname", "Tony");
map.put("surname", "Blair");
map.put("age", "50");
for (PropertyValue pv : pvs.getPropertyValues()) {
Object val = map.get(pv.getName());
assertThat(val).as("Can't have unexpected value").isNotNull();
assertThat(val).as("Val is string").isInstanceOf(String.class);
assertThat(val).as("val matches expected").isEqualTo(pv.getValue());
m.remove(pv.getName());
map.remove(pv.getName());
}
assertThat(m.size()).as("Map size is 0").isEqualTo(0);
assertThat(map).isEmpty();
}
}
@@ -17,7 +17,6 @@
package org.springframework.web.bind.support;
import java.beans.PropertyEditorSupport;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -31,7 +30,6 @@ import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.beans.testfixture.beans.ITestBean;
import org.springframework.beans.testfixture.beans.TestBean;
import org.springframework.web.bind.ServletRequestParameterPropertyValues;
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.multipart.support.StringMultipartFileEditor;
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
@@ -305,26 +303,6 @@ class WebRequestDataBinderTests {
assertThat(target.getStringArray()[1]).isEqualTo("Eva");
}
@Test
void noParameters() {
MockHttpServletRequest request = new MockHttpServletRequest();
ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(request);
assertThat(pvs.getPropertyValues().length).as("Found no parameters").isEqualTo(0);
}
@Test
void multipleValuesForParameter() {
MockHttpServletRequest request = new MockHttpServletRequest();
String[] original = new String[] {"Tony", "Rod"};
request.addParameter("forname", original);
ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(request);
assertThat(pvs.getPropertyValues().length).as("Found 1 parameter").isEqualTo(1);
assertThat(pvs.getPropertyValue("forname").getValue()).as("Found array value").isInstanceOf(String[].class);
String[] values = (String[]) pvs.getPropertyValue("forname").getValue();
assertThat(Arrays.asList(original)).as("Correct values").isEqualTo(Arrays.asList(values));
}
@ParameterizedClass // gh-36625
@ValueSource(strings = { DEFAULT_FIELD_DEFAULT_PREFIX, DEFAULT_FIELD_MARKER_PREFIX })