diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/FieldPathPayloadSubsectionExtractor.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/FieldPathPayloadSubsectionExtractor.java index 69d48063..e91fd126 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/FieldPathPayloadSubsectionExtractor.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/payload/FieldPathPayloadSubsectionExtractor.java @@ -92,6 +92,9 @@ public byte[] extractSubsection(byte[] payload, MediaType contentType, List extractedList = (List) value; + if (extractedList.isEmpty()) { + throw new PayloadHandlingException(this.fieldPath + " identifies a section of payload, but the section is empty"); + } JsonContentHandler contentHandler = new JsonContentHandler(payload, descriptorsByPath.values()); Set uncommonPaths = JsonFieldPaths.from(extractedList).getUncommon().stream() .map((path) -> JsonFieldPath diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/FieldPathPayloadSubsectionExtractorTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/FieldPathPayloadSubsectionExtractorTests.java index 3bd66768..d8275d31 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/FieldPathPayloadSubsectionExtractorTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/payload/FieldPathPayloadSubsectionExtractorTests.java @@ -183,4 +183,12 @@ public void extractNonExistentSubsection() throws JsonParseException, JsonMappin .hasMessage("a.c does not identify a section of the payload"); } + @Test + public void extractEmptySubsection() throws JsonParseException, JsonMappingException, IOException { + assertThatThrownBy(() -> new FieldPathPayloadSubsectionExtractor("a") + .extractSubsection("{\"a\":[]}}".getBytes(), MediaType.APPLICATION_JSON)) + .isInstanceOf(PayloadHandlingException.class) + .hasMessage("a identifies a section of payload, but the section is empty"); + } + }