From ca11cde589b51ff7130149abb359a1a86fe228d1 Mon Sep 17 00:00:00 2001 From: ddaaac Date: Mon, 7 Jun 2021 10:05:02 +0900 Subject: [PATCH] Improve exception message when subsection is empty string --- .../payload/FieldPathPayloadSubsectionExtractor.java | 3 +++ .../payload/FieldPathPayloadSubsectionExtractorTests.java | 8 ++++++++ 2 files changed, 11 insertions(+) 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"); + } + }