From 59b3b631f890e1298c7c6a996c42d21d6146b7d1 Mon Sep 17 00:00:00 2001 From: Joel Jonsson Date: Tue, 26 Sep 2017 16:59:48 +0200 Subject: [PATCH] `Json.pretty(openAPI)` is makes the extensions go under its own `extension` node resulting in parsing it again they will be gone. --- .../io/swagger/parser/OpenAPIParserTest.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/modules/swagger-parser/src/test/java/io/swagger/parser/OpenAPIParserTest.java b/modules/swagger-parser/src/test/java/io/swagger/parser/OpenAPIParserTest.java index b3edd967eb..a9402a0705 100644 --- a/modules/swagger-parser/src/test/java/io/swagger/parser/OpenAPIParserTest.java +++ b/modules/swagger-parser/src/test/java/io/swagger/parser/OpenAPIParserTest.java @@ -1,7 +1,9 @@ package io.swagger.parser; +import io.swagger.oas.models.OpenAPI; import io.swagger.parser.models.ParseOptions; import io.swagger.parser.models.SwaggerParseResult; +import io.swagger.util.Json; import org.junit.Test; import static org.testng.Assert.assertEquals; @@ -56,4 +58,29 @@ public void test30() { assertNotNull(result.getOpenAPI()); assertEquals(result.getOpenAPI().getOpenapi(), "3.0.0-rc1"); } + + @Test + public void testParsingPrettifiedExtensions() throws Exception { + String json = + "{\n" + + " \"openapi\": \"3.0.0\",\n" + + " \"x-some-extension\": \"some-value\"\n" + + "}"; + + SwaggerParseResult result = new OpenAPIParser().readContents(json, null, null); + assertNotNull(result); + OpenAPI openAPI = result.getOpenAPI(); + assertNotNull(openAPI); + assertNotNull(openAPI.getExtensions()); + assertEquals(openAPI.getExtensions().get("x-some-extension"), "some-value"); + + String prettyJson = Json.pretty(openAPI); + + SwaggerParseResult prettyResult = new OpenAPIParser().readContents(prettyJson, null, null); + assertNotNull(prettyResult); + OpenAPI prettyOpenAPI = prettyResult.getOpenAPI(); + assertNotNull(prettyOpenAPI); + assertNotNull(prettyOpenAPI.getExtensions()); + assertEquals(prettyOpenAPI.getExtensions().get("x-some-extension"), "some-value"); + } }