This is an automated email from the ASF dual-hosted git repository. sergeyb pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push: new 27e3a63 [CXF-7525] Adding the requestBodies conversion test 27e3a63 is described below commit 27e3a631dd57cec3e3742beed1cebd32c8d19ad4 Author: Sergey Beryozkin <sberyoz...@gmail.com> AuthorDate: Fri Dec 8 12:43:10 2017 +0000 [CXF-7525] Adding the requestBodies conversion test --- .../openapi/SwaggerToOpenApiConversionUtils.java | 5 +- .../SwaggerToOpenApiConversionUtilsTest.java | 193 ++++++++++++++------- 2 files changed, 136 insertions(+), 62 deletions(-) diff --git a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java index bf5a262..d1de282 100644 --- a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java +++ b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java @@ -284,7 +284,7 @@ public final class SwaggerToOpenApiConversionUtils { sw3RequestBody.setProperty("content", prepareFormContent(sw3formBody, sw2PathVerbConsumes)); } if (sw3RequestBody != null) { - if (requestBodies == null) { + if (requestBodies == null || sw3formBody != null) { sw2PathVerbProps.setProperty("requestBody", sw3RequestBody); } else { JsonMapObject content = sw3RequestBody.getJsonMapProperty("content"); @@ -292,6 +292,9 @@ public final class SwaggerToOpenApiConversionUtils { String requestBodyName = (String)content.removeProperty("requestBodyName"); if (requestBodyName != null) { requestBodies.put(requestBodyName, sw3RequestBody); + String ref = "#components/requestBodies/" + requestBodyName; + sw2PathVerbProps.setProperty("requestBody", + Collections.singletonMap("$ref", ref)); } } } diff --git a/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtilsTest.java b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtilsTest.java index 5648770..73b352e 100644 --- a/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtilsTest.java +++ b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtilsTest.java @@ -31,7 +31,7 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { @Test public void testConvertFromSwaggerToOpenApi() { - + OpenApiConfiguration cfg = new OpenApiConfiguration(); String s = SwaggerToOpenApiConversionUtils.getOpenApiFromSwaggerLoc("/swagger2petShop.json"); JsonMapObjectReaderWriter readerWriter = new JsonMapObjectReaderWriter(); JsonMapObject sw3 = readerWriter.fromJsonToJsonObject(s); @@ -39,15 +39,30 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { verifyServersProperty(sw3); verifyInfoProperty(sw3); verifyTagsProperty(sw3); - verifyPathsProperty(sw3); - verifyComponentsProperty(sw3); + verifyPathsProperty(sw3, cfg); + verifyComponentsProperty(sw3, cfg); + } + + @Test + public void testConvertFromSwaggerToOpenApiWithRequestBodies() { + OpenApiConfiguration cfg = new OpenApiConfiguration(); + cfg.setCreateRequestBodies(true); + String s = SwaggerToOpenApiConversionUtils.getOpenApiFromSwaggerLoc("/swagger2petShop.json", cfg); + JsonMapObjectReaderWriter readerWriter = new JsonMapObjectReaderWriter(); + JsonMapObject sw3 = readerWriter.fromJsonToJsonObject(s); + assertEquals("3.0.0", sw3.getStringProperty("openapi")); + verifyServersProperty(sw3); + verifyInfoProperty(sw3); + verifyTagsProperty(sw3); + verifyPathsProperty(sw3, cfg); + verifyComponentsProperty(sw3, cfg); } - private void verifyPathsProperty(JsonMapObject sw3) { + private void verifyPathsProperty(JsonMapObject sw3, OpenApiConfiguration cfg) { JsonMapObject paths = sw3.getJsonMapProperty("paths"); assertEquals(14, paths.size()); // /pet - verifyPetPath(paths); + verifyPetPath(paths, cfg); // /pet/findByStatus verifyPetFindByStatusPath(paths); // /pet/findByTags @@ -59,29 +74,29 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { // "/store/inventory" verifyStoreInventoryPath(paths); // "/store/order" - verifyStoreOrderPath(paths); + verifyStoreOrderPath(paths, cfg); // "/store/order/{orderId}" verifyStoreOrderIdPath(paths); // "/user" - verifyUserPath(paths); + verifyUserPath(paths, cfg); // "/user/createWithArray" - verifyUserCreateWithArrayPath(paths); + verifyUserCreateWithArrayPath(paths, cfg); // "/user/createWithList" - verifyUserCreateWithListPath(paths); + verifyUserCreateWithListPath(paths, cfg); // "/user/login" verifyUserLoginPath(paths); // "/user/logout" verifyUserLogoutPath(paths); // "/user/{username}" - verifyUserUsernamePath(paths); + verifyUserUsernamePath(paths, cfg); } - private void verifyPetPath(JsonMapObject paths) { + private void verifyPetPath(JsonMapObject paths, OpenApiConfiguration cfg) { // /pet JsonMapObject pet = paths.getJsonMapProperty("/pet"); assertEquals(2, pet.size()); - verifyPetPathPost(pet); - verifyPetPathPut(pet); + verifyPetPathPost(pet, cfg); + verifyPetPathPut(pet, cfg); } private void verifyPetFindByStatusPath(JsonMapObject paths) { @@ -121,11 +136,11 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { verifyStoreInventoryPathGet(store); } - private void verifyStoreOrderPath(JsonMapObject paths) { + private void verifyStoreOrderPath(JsonMapObject paths, OpenApiConfiguration cfg) { // /store/order JsonMapObject store = paths.getJsonMapProperty("/store/order"); assertEquals(1, store.size()); - verifyStoreOrderPathPost(store); + verifyStoreOrderPathPost(store, cfg); } private void verifyStoreOrderIdPath(JsonMapObject paths) { @@ -136,25 +151,25 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { verifyStoreOrderIdPathDelete(store); } - private void verifyUserPath(JsonMapObject paths) { + private void verifyUserPath(JsonMapObject paths, OpenApiConfiguration cfg) { // /user JsonMapObject user = paths.getJsonMapProperty("/user"); assertEquals(1, user.size()); - verifyUserPathPost(user); + verifyUserPathPost(user, cfg); } - private void verifyUserCreateWithArrayPath(JsonMapObject paths) { + private void verifyUserCreateWithArrayPath(JsonMapObject paths, OpenApiConfiguration cfg) { // /user/createWithArray JsonMapObject user = paths.getJsonMapProperty("/user/createWithArray"); assertEquals(1, user.size()); - verifyUserCreateWithArrayPathPost(user); + verifyUserCreateWithArrayPathPost(user, cfg); } - private void verifyUserCreateWithListPath(JsonMapObject paths) { + private void verifyUserCreateWithListPath(JsonMapObject paths, OpenApiConfiguration cfg) { // /user/createWithList JsonMapObject user = paths.getJsonMapProperty("/user/createWithList"); assertEquals(1, user.size()); - verifyUserCreateWithListPathPost(user); + verifyUserCreateWithListPathPost(user, cfg); } private void verifyUserLoginPath(JsonMapObject paths) { @@ -171,12 +186,12 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { verifyUserLogoutPathGet(user); } - private void verifyUserUsernamePath(JsonMapObject paths) { + private void verifyUserUsernamePath(JsonMapObject paths, OpenApiConfiguration cfg) { // /user/{username} JsonMapObject user = paths.getJsonMapProperty("/user/{username}"); assertEquals(3, user.size()); verifyUserUsernamePathGet(user); - verifyUserUsernamePathPut(user); + verifyUserUsernamePathPut(user, cfg); verifyUserUsernamePathDelete(user); } @@ -235,7 +250,7 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { verifySimpleContent(content, "application/xml", "User"); } - private void verifyUserUsernamePathPut(JsonMapObject user) { + private void verifyUserUsernamePathPut(JsonMapObject user, OpenApiConfiguration cfg) { JsonMapObject userPut = user.getJsonMapProperty("put"); assertEquals(7, userPut.size()); testCommonVerbPropsExceptSec(userPut, "updateUser"); @@ -243,13 +258,17 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { assertEquals(1, parameters.size()); JsonMapObject userParam = new JsonMapObject(parameters.get(0)); verifyUserNameParameter(userParam, "username", "path"); - JsonMapObject requestBody = userPut.getJsonMapProperty("requestBody"); - assertEquals(3, requestBody.size()); - assertNotNull(requestBody.getProperty("description")); - assertTrue(requestBody.getBooleanProperty("required")); - JsonMapObject content = requestBody.getJsonMapProperty("content"); - assertEquals(1, content.size()); - verifySimpleContent(content, "application/json", "User"); + if (cfg.isCreateRequestBodies()) { + verifyRequestBodyRef(userPut, "User"); + } else { + JsonMapObject requestBody = userPut.getJsonMapProperty("requestBody"); + assertEquals(3, requestBody.size()); + assertNotNull(requestBody.getProperty("description")); + assertTrue(requestBody.getBooleanProperty("required")); + JsonMapObject content = requestBody.getJsonMapProperty("content"); + assertEquals(1, content.size()); + verifySimpleContent(content, "application/json", "User"); + } JsonMapObject responses = userPut.getJsonMapProperty("responses"); assertEquals(2, responses.size()); @@ -311,14 +330,19 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { assertNotNull(responses.getProperty("404")); } - private void verifyStoreOrderPathPost(JsonMapObject store) { + private void verifyStoreOrderPathPost(JsonMapObject store, OpenApiConfiguration cfg) { JsonMapObject storePost = store.getJsonMapProperty("post"); assertEquals(6, storePost.size()); testCommonVerbPropsExceptSec(storePost, "placeOrder"); assertNull(storePost.getProperty("parameters")); - JsonMapObject contentIn = verifyRequestBodyGetContent(storePost); - assertEquals(1, contentIn.size()); - verifySimpleContent(contentIn, "application/json", "Order"); + + if (cfg.isCreateRequestBodies()) { + verifyRequestBodyRef(storePost, "Order"); + } else { + JsonMapObject contentIn = verifyRequestBodyContent(storePost); + assertEquals(1, contentIn.size()); + verifySimpleContent(contentIn, "application/json", "Order"); + } JsonMapObject responses = storePost.getJsonMapProperty("responses"); assertEquals(2, responses.size()); assertNotNull(responses.getJsonMapProperty("400")); @@ -331,14 +355,18 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { verifySimpleContent(contentOut, "application/xml", "Order"); } - private void verifyUserPathPost(JsonMapObject store) { + private void verifyUserPathPost(JsonMapObject store, OpenApiConfiguration cfg) { JsonMapObject userPost = store.getJsonMapProperty("post"); assertEquals(6, userPost.size()); testCommonVerbPropsExceptSec(userPost, "createUser"); assertNull(userPost.getProperty("parameters")); - JsonMapObject contentIn = verifyRequestBodyGetContent(userPost); - assertEquals(1, contentIn.size()); - verifySimpleContent(contentIn, "application/json", "User"); + if (cfg.isCreateRequestBodies()) { + verifyRequestBodyRef(userPost, "User"); + } else { + JsonMapObject contentIn = verifyRequestBodyContent(userPost); + assertEquals(1, contentIn.size()); + verifySimpleContent(contentIn, "application/json", "User"); + } testDefaultResponse(userPost); } @@ -349,22 +377,27 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { } - private void verifyUserCreateWithArrayPathPost(JsonMapObject store) { - verifyUserCreateWithListOrArrayPathPost(store, "createUsersWithArrayInput"); + private void verifyUserCreateWithArrayPathPost(JsonMapObject store, OpenApiConfiguration cfg) { + verifyUserCreateWithListOrArrayPathPost(store, "createUsersWithArrayInput", cfg); } - private void verifyUserCreateWithListPathPost(JsonMapObject store) { - verifyUserCreateWithListOrArrayPathPost(store, "createUsersWithListInput"); + private void verifyUserCreateWithListPathPost(JsonMapObject store, OpenApiConfiguration cfg) { + verifyUserCreateWithListOrArrayPathPost(store, "createUsersWithListInput", cfg); } - private void verifyUserCreateWithListOrArrayPathPost(JsonMapObject store, String opId) { + private void verifyUserCreateWithListOrArrayPathPost(JsonMapObject store, String opId, + OpenApiConfiguration cfg) { JsonMapObject userPost = store.getJsonMapProperty("post"); assertEquals(6, userPost.size()); testCommonVerbPropsExceptSec(userPost, opId); assertNull(userPost.getProperty("parameters")); - JsonMapObject contentIn = verifyRequestBodyGetContent(userPost); - assertEquals(1, contentIn.size()); - verifyArrayContent(contentIn, "application/json", "User"); + if (cfg.isCreateRequestBodies()) { + verifyRequestBodyRef(userPost, "UserArray"); + } else { + JsonMapObject contentIn = verifyRequestBodyContent(userPost); + assertEquals(1, contentIn.size()); + verifyArrayContent(contentIn, "application/json", "User"); + } testDefaultResponse(userPost); } @@ -560,36 +593,53 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { } } - private void verifyPetPathPost(JsonMapObject pet) { + private void verifyPetPathPost(JsonMapObject pet, OpenApiConfiguration cfg) { JsonMapObject petPost = pet.getJsonMapProperty("post"); assertEquals(7, petPost.size()); testCommonVerbProps(petPost, "addPet"); assertNull(petPost.getProperty("parameters")); - JsonMapObject content = verifyRequestBodyGetContent(petPost); - assertEquals(2, content.size()); - verifySimpleContent(content, "application/json", "Pet"); - verifySimpleContent(content, "application/xml", "Pet"); + if (cfg.isCreateRequestBodies()) { + verifyRequestBodyRef(petPost, "Pet"); + } else { + JsonMapObject content = verifyRequestBodyContent(petPost); + assertEquals(2, content.size()); + verifySimpleContent(content, "application/json", "Pet"); + verifySimpleContent(content, "application/xml", "Pet"); + } JsonMapObject responses = petPost.getJsonMapProperty("responses"); assertEquals(1, responses.size()); assertNotNull(responses.getProperty("405")); } - private JsonMapObject verifyRequestBodyGetContent(JsonMapObject json) { - JsonMapObject requestBody = json.getJsonMapProperty("requestBody"); + private JsonMapObject verifyRequestBodyContent(JsonMapObject json) { + return verifyRequestBodyContent(json, "requestBody"); + } + private JsonMapObject verifyRequestBodyContent(JsonMapObject json, String propName) { + JsonMapObject requestBody = json.getJsonMapProperty(propName); assertEquals(3, requestBody.size()); assertNotNull(requestBody.getProperty("description")); assertTrue(requestBody.getBooleanProperty("required")); return requestBody.getJsonMapProperty("content"); } + private void verifyRequestBodyRef(JsonMapObject json, String refName) { + JsonMapObject requestBody = json.getJsonMapProperty("requestBody"); + assertEquals(1, requestBody.size()); + assertEquals("#components/requestBodies/" + refName, + requestBody.getProperty("$ref")); + } - private void verifyPetPathPut(JsonMapObject pet) { + private void verifyPetPathPut(JsonMapObject pet, OpenApiConfiguration cfg) { JsonMapObject petPut = pet.getJsonMapProperty("put"); assertEquals(7, petPut.size()); testCommonVerbProps(petPut, "updatePet"); assertNull(petPut.getProperty("parameters")); - JsonMapObject content = verifyRequestBodyGetContent(petPut); - assertEquals(2, content.size()); - verifySimpleContent(content, "application/json", "Pet"); - verifySimpleContent(content, "application/xml", "Pet"); + if (cfg.isCreateRequestBodies()) { + verifyRequestBodyRef(petPut, "Pet"); + } else { + JsonMapObject content = verifyRequestBodyContent(petPut); + assertEquals(2, content.size()); + verifySimpleContent(content, "application/json", "Pet"); + verifySimpleContent(content, "application/xml", "Pet"); + } JsonMapObject responses = petPut.getJsonMapProperty("responses"); assertEquals(3, responses.size()); assertNotNull(responses.getProperty("400")); @@ -678,11 +728,32 @@ public class SwaggerToOpenApiConversionUtilsTest extends Assert { assertNotNull(sw3.getListMapProperty("tags")); } - private void verifyComponentsProperty(JsonMapObject sw3) { + private void verifyComponentsProperty(JsonMapObject sw3, OpenApiConfiguration cfg) { JsonMapObject comps = sw3.getJsonMapProperty("components"); assertEquals(3, comps.size()); JsonMapObject requestBodies = comps.getJsonMapProperty("requestBodies"); - assertEquals(0, requestBodies.size()); + if (cfg.isCreateRequestBodies()) { + assertEquals(4, requestBodies.size()); + // UserArray + JsonMapObject userArrayContent = verifyRequestBodyContent(requestBodies, "UserArray"); + assertEquals(1, userArrayContent.size()); + verifyArrayContent(userArrayContent, "application/json", "User"); + // Pet + JsonMapObject petContent = verifyRequestBodyContent(requestBodies, "Pet"); + assertEquals(2, petContent.size()); + verifySimpleContent(petContent, "application/json", "Pet"); + verifySimpleContent(petContent, "application/xml", "Pet"); + // User + JsonMapObject userContent = verifyRequestBodyContent(requestBodies, "User"); + assertEquals(1, userContent.size()); + verifySimpleContent(userContent, "application/json", "User"); + // Order + JsonMapObject orderContent = verifyRequestBodyContent(requestBodies, "Order"); + assertEquals(1, orderContent.size()); + verifySimpleContent(orderContent, "application/json", "Order"); + } else { + assertEquals(0, requestBodies.size()); + } assertNotNull(comps.getJsonMapProperty("schemas")); assertNotNull(comps.getJsonMapProperty("securitySchemes")); -- To stop receiving notification emails like this one, please contact ['"commits@cxf.apache.org" <commits@cxf.apache.org>'].