From 198920ae70faf9f6cb81ebb3c11206cc3d1e9930 Mon Sep 17 00:00:00 2001 From: Joel Jonsson Date: Mon, 13 Nov 2017 10:22:34 +0100 Subject: [PATCH 1/2] Added test for over quoted string examples --- .../io/swagger/parser/SwaggerParserTest.java | 23 +++++++++++++++++++ .../test/resources/over-quoted-example.yaml | 16 +++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 modules/swagger-parser/src/test/resources/over-quoted-example.yaml diff --git a/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java b/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java index a3803de613..c0167dd48e 100644 --- a/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java +++ b/modules/swagger-parser/src/test/java/io/swagger/parser/SwaggerParserTest.java @@ -1,5 +1,6 @@ package io.swagger.parser; +import com.fasterxml.jackson.databind.JsonNode; import io.swagger.models.ArrayModel; import io.swagger.models.ComposedModel; import io.swagger.models.Model; @@ -31,7 +32,9 @@ import io.swagger.util.Yaml; import org.testng.Assert; import org.testng.annotations.Test; +import org.testng.reporters.Files; +import java.io.File; import java.math.BigDecimal; import java.util.Arrays; import java.util.Collections; @@ -958,4 +961,24 @@ public void checkAllOfAreTaken() { assertEquals(2, swagger.getDefinitions().size()); } + + @Test(description = "A string example should not be over quoted when parsing a yaml string") + public void readingSpecStringShouldNotOverQuotingStringExample() throws Exception { + SwaggerParser parser = new SwaggerParser(); + final Swagger swagger = parser.read("src/test/resources/over-quoted-example.yaml", null, false); + + Map definitions = swagger.getDefinitions(); + assertEquals("NoQuotePlease", definitions.get("CustomerType").getExample()); + } + + @Test(description = "A string example should not be over quoted when parsing a yaml node") + public void readingSpecNodeShouldNotOverQuotingStringExample() throws Exception { + String yaml = Files.readFile(new File("src/test/resources/over-quoted-example.yaml")); + JsonNode rootNode = Yaml.mapper().readValue(yaml, JsonNode.class); + SwaggerParser parser = new SwaggerParser(); + Swagger swagger = parser.read(rootNode,true); + + Map definitions = swagger.getDefinitions(); + assertEquals("NoQuotePlease", definitions.get("CustomerType").getExample()); + } } \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/over-quoted-example.yaml b/modules/swagger-parser/src/test/resources/over-quoted-example.yaml new file mode 100644 index 0000000000..fd75085ef4 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/over-quoted-example.yaml @@ -0,0 +1,16 @@ +swagger: '2.0' +paths: + /newPerson: + post: + summary: Create new person + description: Create new person + parameters: [] + responses: + 200: + description: OK + schema: + $ref: "#/definitions/CustomerType" +definitions: + CustomerType: + type: string + example: NoQuotePlease From 87f6ce96e9e168f4ccdb968ee8f4238a153a211b Mon Sep 17 00:00:00 2001 From: Joel Jonsson Date: Mon, 13 Nov 2017 11:51:44 +0100 Subject: [PATCH 2/2] Fixed over quoted string examples --- .../java/io/swagger/parser/util/SwaggerDeserializer.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java b/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java index 1caf8e24e2..eb0d672718 100644 --- a/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java +++ b/modules/swagger-parser/src/main/java/io/swagger/parser/util/SwaggerDeserializer.java @@ -841,8 +841,9 @@ else if(!SCHEMA_KEYS.contains(key)) { if(on != null) { model.setExample(on); } - } - else { + } else if (exampleNode.isValueNode()) { + model.setExample(exampleNode.asText()); + } else { model.setExample(exampleNode.toString()); } }