Browse Source

Add boundary tests for JsonValueWriter max nesting depth

Verify behavior at the maxNestingDepth boundary.

Signed-off-by: Joowon-Seo <tjwndnjs1998@gmail.com>

See gh-49662
pull/49662/head
Joowon-Seo 3 days ago committed by Andy Wilkinson
parent
commit
7f0136f8c6
  1. 32
      spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java

32
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java

@ -296,6 +296,38 @@ class JsonValueWriterTests { @@ -296,6 +296,38 @@ class JsonValueWriterTests {
"JSON nesting depth (129) exceeds maximum depth of 128 (current path: [0][0][0][0][0][0][0][0][0][0][0][0]");
}
@Test
void shouldAllowStartingObjectWhenCurrentDepthIsMaxDepth() {
StringBuilder out = new StringBuilder();
JsonValueWriter writer = new JsonValueWriter(out, 2);
writer.start(Series.OBJECT);
writer.start(Series.OBJECT);
writer.start(Series.OBJECT);
writer.end(Series.OBJECT);
writer.end(Series.OBJECT);
writer.end(Series.OBJECT);
assertThat(out).hasToString("{{{}}}");
}
@Test
void shouldAllowStartingArrayWhenCurrentDepthIsMaxDepth() {
StringBuilder out = new StringBuilder();
JsonValueWriter writer = new JsonValueWriter(out, 2);
writer.start(Series.ARRAY);
writer.start(Series.ARRAY);
writer.start(Series.ARRAY);
writer.end(Series.ARRAY);
writer.end(Series.ARRAY);
writer.end(Series.ARRAY);
assertThat(out).hasToString("[[[]]]");
}
private <V> String write(V value) {
return doWrite((valueWriter) -> valueWriter.write(value));
}

Loading…
Cancel
Save