From c9b88b4ebd47c7616816602204b106dd2c1275ef Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Thu, 16 Apr 2026 14:38:17 +0200 Subject: [PATCH] Extract ServletRequestParameterPropertyValuesTests --- ...etRequestParameterPropertyValuesTests.java | 87 +++++++++++++++++++ .../support/WebRequestDataBinderTests.java | 54 ------------ 2 files changed, 87 insertions(+), 54 deletions(-) create mode 100644 spring-web/src/test/java/org/springframework/web/bind/support/ServletRequestParameterPropertyValuesTests.java diff --git a/spring-web/src/test/java/org/springframework/web/bind/support/ServletRequestParameterPropertyValuesTests.java b/spring-web/src/test/java/org/springframework/web/bind/support/ServletRequestParameterPropertyValuesTests.java new file mode 100644 index 00000000000..4822469760b --- /dev/null +++ b/spring-web/src/test/java/org/springframework/web/bind/support/ServletRequestParameterPropertyValuesTests.java @@ -0,0 +1,87 @@ +/* + * Copyright 2002-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.web.bind.support; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +import org.springframework.beans.PropertyValue; +import org.springframework.beans.PropertyValues; +import org.springframework.web.bind.ServletRequestParameterPropertyValues; +import org.springframework.web.testfixture.servlet.MockHttpServletRequest; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link ServletRequestParameterPropertyValues}. + */ +class ServletRequestParameterPropertyValuesTests { + + @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); + } + + @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); + 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); + } + + /** + * Must contain: forname=Tony surname=Blair age=50 + */ + private static void testTony(PropertyValues pvs) { + assertThat(pvs.getPropertyValues().length).as("Contains 3").isEqualTo(3); + assertThat(pvs.contains("forname")).as("Contains forname").isTrue(); + assertThat(pvs.contains("surname")).as("Contains surname").isTrue(); + assertThat(pvs.contains("age")).as("Contains age").isTrue(); + assertThat(pvs.contains("tory")).as("Doesn't contain tory").isFalse(); + + PropertyValue[] pvArray = pvs.getPropertyValues(); + Map 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()); + 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()); + } + assertThat(m.size()).as("Map size is 0").isEqualTo(0); + } + +} diff --git a/spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java b/spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java index bd1d341d6fc..d126e0a6713 100644 --- a/spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java +++ b/spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java @@ -18,7 +18,6 @@ package org.springframework.web.bind.support; import java.beans.PropertyEditorSupport; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -30,8 +29,6 @@ import org.junit.jupiter.params.ParameterizedClass; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.PropertyValue; -import org.springframework.beans.PropertyValues; import org.springframework.beans.testfixture.beans.ITestBean; import org.springframework.beans.testfixture.beans.TestBean; import org.springframework.web.bind.ServletRequestParameterPropertyValues; @@ -308,57 +305,6 @@ class WebRequestDataBinderTests { assertThat(target.getStringArray()[1]).isEqualTo("Eva"); } - @Test - void noPrefix() { - MockHttpServletRequest request = new MockHttpServletRequest(); - request.addParameter("forname", "Tony"); - request.addParameter("surname", "Blair"); - request.addParameter("age", "" + 50); - - ServletRequestParameterPropertyValues pvs = new ServletRequestParameterPropertyValues(request); - doTestTony(pvs); - } - - @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); - 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"); - doTestTony(pvs); - } - - /** - * Must contain: forname=Tony surname=Blair age=50 - */ - void doTestTony(PropertyValues pvs) { - assertThat(pvs.getPropertyValues().length).as("Contains 3").isEqualTo(3); - assertThat(pvs.contains("forname")).as("Contains forname").isTrue(); - assertThat(pvs.contains("surname")).as("Contains surname").isTrue(); - assertThat(pvs.contains("age")).as("Contains age").isTrue(); - assertThat(pvs.contains("tory")).as("Doesn't contain tory").isFalse(); - - PropertyValue[] pvArray = pvs.getPropertyValues(); - Map 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()); - 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()); - } - assertThat(m.size()).as("Map size is 0").isEqualTo(0); - } - @Test void noParameters() { MockHttpServletRequest request = new MockHttpServletRequest();