From 742ff483a14a25aa7a241624bbc487e83fa65264 Mon Sep 17 00:00:00 2001 From: Jeremie Bresson <dev@jmini.fr> Date: Fri, 14 Sep 2018 08:29:06 +0200 Subject: [PATCH 1/2] [all] Add leading slash in path if missing --- .../openapitools/codegen/DefaultCodegen.java | 6 +++++- .../codegen/DefaultCodegenTest.java | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index d7115b9c8dbf..5267ee95a248 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -2254,7 +2254,11 @@ public CodegenOperation fromOperation(String path, } operationId = removeNonNameElementToCamelCase(operationId); - op.path = path; + if(path.startsWith("/")) { + op.path = path; + } else { + op.path = "/" + path; + } op.operationId = toOperationId(operationId); op.summary = escapeText(operation.getSummary()); op.unescapedNotes = operation.getDescription(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 672dd0be08ad..45d01c0f6e8c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -21,6 +21,7 @@ import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.PathItem; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Content; import io.swagger.v3.oas.models.media.MediaType; @@ -37,7 +38,6 @@ import org.testng.Assert; import org.testng.annotations.Test; -import java.lang.reflect.Method; import java.util.*; import java.util.stream.Collectors; @@ -500,6 +500,21 @@ public void testCallbacks() { }); } + @Test + public void testLeadingSlashIsAddedIfMissing() { + OpenAPI openAPI = TestUtils.createOpenAPI(); + Operation operation1 = new Operation().operationId("op1").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))); + openAPI.path("/here", new PathItem().get(operation1)); + Operation operation2 = new Operation().operationId("op2").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))); + openAPI.path("some/path", new PathItem().get(operation2)); + final DefaultCodegen codegen = new DefaultCodegen(); + + CodegenOperation co1 = codegen.fromOperation("/here", "get", operation2, ModelUtils.getSchemas(openAPI), openAPI); + Assert.assertEquals(co1.path, "/here"); + CodegenOperation co2 = codegen.fromOperation("some/path", "get", operation2, ModelUtils.getSchemas(openAPI), openAPI); + Assert.assertEquals(co2.path, "/some/path"); + } + private void verifyPersonDiscriminator(CodegenDiscriminator discriminator) { CodegenDiscriminator test = new CodegenDiscriminator(); test.setPropertyName("$_type"); From 9465821eef828bfcbd8c2e359250ed33ce89b744 Mon Sep 17 00:00:00 2001 From: Jeremie Bresson <dev@jmini.fr> Date: Fri, 14 Sep 2018 17:31:51 +0200 Subject: [PATCH 2/2] Fix unit Tests --- .../openapitools/codegen/DefaultCodegenTest.java | 13 ++++++++++--- .../codegen/DefaultGeneratorTest.java | 16 ++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 45d01c0f6e8c..9fc3d600f909 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -38,7 +38,14 @@ import org.testng.Assert; import org.testng.annotations.Test; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; @@ -224,8 +231,8 @@ public void testConsistentParameterNameAfterUniquenessRename() throws Exception .responses(new ApiResponses().addApiResponse("200", new ApiResponse().description("OK"))); DefaultCodegen codegen = new DefaultCodegen(); - CodegenOperation co = codegen.fromOperation("p/", "get", operation, Collections.emptyMap()); - Assert.assertEquals(co.path, "p/"); + CodegenOperation co = codegen.fromOperation("/some/path", "get", operation, Collections.emptyMap()); + Assert.assertEquals(co.path, "/some/path"); Assert.assertEquals(co.allParams.size(), 2); List<String> allParamsNames = co.allParams.stream().map(p -> p.paramName).collect(Collectors.toList()); Assert.assertTrue(allParamsNames.contains("myparam")); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java index 47dbcffd9df5..261149c40223 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java @@ -22,10 +22,10 @@ public class DefaultGeneratorTest { public void testProcessPaths() throws Exception { OpenAPI openAPI = TestUtils.createOpenAPI(); openAPI.setPaths(new Paths()); - openAPI.getPaths().addPathItem("path1/", new PathItem().get(new Operation().operationId("op1").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))))); - openAPI.getPaths().addPathItem("path2/", new PathItem().get(new Operation().operationId("op2").addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))))); - openAPI.getPaths().addPathItem("path3/", new PathItem().addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).get(new Operation().operationId("op3").addParametersItem(new QueryParameter().name("p2").schema(new IntegerSchema())).responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))))); - openAPI.getPaths().addPathItem("path4/", new PathItem().addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).get(new Operation().operationId("op4").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))))); + openAPI.getPaths().addPathItem("/path1", new PathItem().get(new Operation().operationId("op1").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))))); + openAPI.getPaths().addPathItem("/path2", new PathItem().get(new Operation().operationId("op2").addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))))); + openAPI.getPaths().addPathItem("/path3", new PathItem().addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).get(new Operation().operationId("op3").addParametersItem(new QueryParameter().name("p2").schema(new IntegerSchema())).responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))))); + openAPI.getPaths().addPathItem("/path4", new PathItem().addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).get(new Operation().operationId("op4").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK"))))); ClientOptInput opts = new ClientOptInput(); opts.setOpenAPI(openAPI); @@ -38,13 +38,13 @@ public void testProcessPaths() throws Exception { Assert.assertEquals(result.size(), 1); List<CodegenOperation> defaultList = result.get("Default"); Assert.assertEquals(defaultList.size(), 4); - Assert.assertEquals(defaultList.get(0).path, "path1/"); + Assert.assertEquals(defaultList.get(0).path, "/path1"); Assert.assertEquals(defaultList.get(0).allParams.size(), 0); - Assert.assertEquals(defaultList.get(1).path, "path2/"); + Assert.assertEquals(defaultList.get(1).path, "/path2"); Assert.assertEquals(defaultList.get(1).allParams.size(), 1); - Assert.assertEquals(defaultList.get(2).path, "path3/"); + Assert.assertEquals(defaultList.get(2).path, "/path3"); Assert.assertEquals(defaultList.get(2).allParams.size(), 2); - Assert.assertEquals(defaultList.get(3).path, "path4/"); + Assert.assertEquals(defaultList.get(3).path, "/path4"); Assert.assertEquals(defaultList.get(3).allParams.size(), 1); } }