Skip to content

Commit 680854d

Browse files
committed
Merge branch '7.0.x'
2 parents 1a7161c + 63817ce commit 680854d

1 file changed

Lines changed: 45 additions & 9 deletions

File tree

spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class WebRequestDataBinderTests {
5353
void bindingWithNestedObjectCreation() {
5454
TestBean tb = new TestBean();
5555

56-
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
56+
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
5757
binder.registerCustomEditor(ITestBean.class, new PropertyEditorSupport() {
5858
@Override
5959
public void setAsText(String text) throws IllegalArgumentException {
@@ -74,7 +74,7 @@ public void setAsText(String text) throws IllegalArgumentException {
7474
void bindingWithNestedObjectCreationThroughAutoGrow() {
7575
TestBean tb = new TestBeanWithConcreteSpouse();
7676

77-
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
77+
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
7878
binder.setIgnoreUnknownFields(false);
7979

8080
MockHttpServletRequest request = new MockHttpServletRequest();
@@ -316,7 +316,7 @@ class DefaultAndMarkerPrefixTests {
316316
void shouldNotTriggerBindingWhenFieldIsNotAllowed() {
317317
TestBean tb = new TestBean();
318318

319-
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
319+
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
320320
binder.setAllowedFields("name");
321321

322322
MockHttpServletRequest request = new MockHttpServletRequest();
@@ -332,7 +332,7 @@ void shouldNotTriggerBindingWhenFieldIsNotAllowed() {
332332
void shouldNotTriggerBindingWhenFieldIsDisallowed() {
333333
TestBean tb = new TestBean();
334334

335-
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
335+
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
336336
binder.setDisallowedFields("country");
337337

338338
MockHttpServletRequest request = new MockHttpServletRequest();
@@ -344,12 +344,47 @@ void shouldNotTriggerBindingWhenFieldIsDisallowed() {
344344
assertThat(tb.getCountry()).isNull();
345345
}
346346

347+
@Test
348+
void shouldNotTriggerBindingWhenFieldIsNotAllowedWithEmptyArrayIndex() {
349+
TestBean tb = new TestBean();
350+
351+
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
352+
binder.setAllowedFields("name");
353+
354+
MockHttpServletRequest request = new MockHttpServletRequest();
355+
request.addParameter("name", "spring");
356+
request.addParameter(prefix + "stringArray[]", "ONE");
357+
request.addParameter(prefix + "stringArray[]", "TWO");
358+
binder.bind(new ServletWebRequest(request));
359+
360+
assertThat(tb.getName()).isEqualTo("spring");
361+
assertThat(tb.getStringArray()).isNull();
362+
}
363+
364+
@ParameterizedTest
365+
@ValueSource(strings = { "stringArray*", "stringArray[]" })
366+
void shouldNotTriggerBindingWhenFieldIsDisallowedWithEmptyArrayIndex(String disallowedField) {
367+
TestBean tb = new TestBean();
368+
369+
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
370+
binder.setDisallowedFields(disallowedField);
371+
372+
MockHttpServletRequest request = new MockHttpServletRequest();
373+
request.addParameter("name", "spring");
374+
request.addParameter(prefix + "stringArray[]", "ONE");
375+
request.addParameter(prefix + "stringArray[]", "TWO");
376+
binder.bind(new ServletWebRequest(request));
377+
378+
assertThat(tb.getName()).isEqualTo("spring");
379+
assertThat(tb.getStringArray()).isNull();
380+
}
381+
347382
@Test
348383
void shouldNotTriggerAutoGrowWhenFieldIsNotAllowed() {
349384
TestBean tb = new TestBean();
350385
tb.setSomeMap(null);
351386

352-
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
387+
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
353388
binder.setAllowedFields("name");
354389

355390
MockHttpServletRequest request = new MockHttpServletRequest();
@@ -361,13 +396,14 @@ void shouldNotTriggerAutoGrowWhenFieldIsNotAllowed() {
361396
assertThat(tb.getSomeMap()).isNull();
362397
}
363398

364-
@Test
365-
void shouldNotTriggerAutoGrowWhenFieldIsDisallowed() {
399+
@ParameterizedTest
400+
@ValueSource(strings = { "someMap*", "someMap[*]", "someMap[key1]" })
401+
void shouldNotTriggerAutoGrowWhenFieldIsDisallowed(String disallowedField) {
366402
TestBean tb = new TestBean();
367403
tb.setSomeMap(null);
368404

369-
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
370-
binder.setDisallowedFields("someMap[key1]");
405+
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
406+
binder.setDisallowedFields(disallowedField);
371407

372408
MockHttpServletRequest request = new MockHttpServletRequest();
373409
request.addParameter("name", "spring");

0 commit comments

Comments
 (0)