From 60ae152714d8334ac892d90b3d8e19ea2ad2dc8d Mon Sep 17 00:00:00 2001 From: Florent Chamfroy Date: Sun, 5 Nov 2017 00:40:41 +0100 Subject: [PATCH] Fixing the default explode value and adding a test --- .../v3/parser/util/OpenAPIDeserializer.java | 12 ++++---- .../parser/util/OpenAPIDeserializerTest.java | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java index f745cda353..27bb0baece 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java @@ -34,6 +34,7 @@ import io.swagger.v3.oas.models.parameters.CookieParameter; import io.swagger.v3.oas.models.parameters.HeaderParameter; import io.swagger.v3.oas.models.parameters.Parameter; +import io.swagger.v3.oas.models.parameters.Parameter.StyleEnum; import io.swagger.v3.oas.models.parameters.PathParameter; import io.swagger.v3.oas.models.parameters.QueryParameter; import io.swagger.v3.oas.models.parameters.RequestBody; @@ -1312,17 +1313,18 @@ public Parameter getParameter(ObjectNode obj, String location, ParseResult resul parameter.setAllowEmptyValue(allowEmptyValue); } + value = getString("style", obj, false, location, result); + setStyle(value, parameter, location, obj, result); + Boolean explode = getBoolean("explode", obj, false, location, result); if (explode != null) { parameter.setExplode(explode); + } else if(parameter.getStyle().equals(StyleEnum.FORM)){ + parameter.setExplode(Boolean.TRUE); } else { parameter.setExplode(Boolean.FALSE); } - - value = getString("style", obj, false, location, result); - - setStyle(value, parameter, location, obj, result); - + ObjectNode parameterObject = getObject("schema",obj,false,location,result); if (parameterObject!= null) { diff --git a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/OpenAPIDeserializerTest.java b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/OpenAPIDeserializerTest.java index a5892ed6f0..41cbaa7975 100644 --- a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/OpenAPIDeserializerTest.java +++ b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/OpenAPIDeserializerTest.java @@ -23,6 +23,7 @@ import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import io.swagger.v3.oas.models.parameters.Parameter; +import io.swagger.v3.oas.models.parameters.Parameter.StyleEnum; import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.responses.ApiResponses; @@ -928,6 +929,33 @@ public void readSchemaObject(JsonNode rootNode) throws Exception { Assert.assertEquals(petByStatusEndpoint.getGet().getParameters().get(0).getIn(),"query"); } + @Test(dataProvider = "data") + public void readSchemaArray(JsonNode rootNode) throws Exception { + final OpenAPIDeserializer deserializer = new OpenAPIDeserializer(); + final SwaggerParseResult result = deserializer.deserialize(rootNode); + + Assert.assertNotNull(result); + + final OpenAPI openAPI = result.getOpenAPI(); + Assert.assertNotNull(openAPI); + + final Paths paths = openAPI.getPaths(); + Assert.assertNotNull(paths); + Assert.assertEquals(paths.size(), 18); + + //parameters operation get + PathItem petByStatusEndpoint = paths.get("/pet/findByTags"); + Assert.assertNotNull(petByStatusEndpoint.getGet()); + Assert.assertNotNull(petByStatusEndpoint.getGet().getParameters()); + Assert.assertEquals(petByStatusEndpoint.getGet().getParameters().size(), 1); + Assert.assertNotNull(petByStatusEndpoint.getGet().getParameters().get(0).getSchema()); + Assert.assertEquals(petByStatusEndpoint.getGet().getParameters().get(0).getSchema().getType(), "array"); + Assert.assertEquals(((ArraySchema)(petByStatusEndpoint.getGet().getParameters().get(0).getSchema())).getItems().getType(), "string"); + Assert.assertEquals(petByStatusEndpoint.getGet().getParameters().get(0).getName(),"tags"); + Assert.assertEquals(petByStatusEndpoint.getGet().getParameters().get(0).getExplode(), Boolean.TRUE); + Assert.assertEquals(petByStatusEndpoint.getGet().getParameters().get(0).getStyle(), StyleEnum.FORM); + } + @Test(dataProvider = "data") public void readProducesTestEndpoint(JsonNode rootNode) throws Exception { final OpenAPIDeserializer deserializer = new OpenAPIDeserializer();