From fce909d729b947e738e5e5ebe466df3a7793582a Mon Sep 17 00:00:00 2001 From: gracekarina Date: Tue, 28 May 2019 08:09:00 -0500 Subject: [PATCH 1/2] fix for #1094 --- .../parser/processors/ParameterProcessor.java | 18 +++++++++++++++ .../v3/parser/processors/PathsProcessor.java | 1 - .../processors/ParameterProcessorTest.java | 3 +++ .../v3/parser/test/OpenAPIV3ParserTest.java | 9 ++++++++ .../src/test/resources/issue-1094/common.yaml | 14 ++++++++++++ .../test/resources/issue-1094/swagger.yaml | 22 +++++++++++++++++++ 6 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 modules/swagger-parser-v3/src/test/resources/issue-1094/common.yaml create mode 100644 modules/swagger-parser-v3/src/test/resources/issue-1094/swagger.yaml diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/ParameterProcessor.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/ParameterProcessor.java index b2d60b75cc..07b85bc82f 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/ParameterProcessor.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/ParameterProcessor.java @@ -2,6 +2,7 @@ import io.swagger.v3.oas.models.examples.Example; +import io.swagger.v3.oas.models.media.Content; import io.swagger.v3.oas.models.media.MediaType; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.parameters.Parameter; @@ -142,6 +143,23 @@ public List processParameters(List parameters) { Schema schema = parameter.getSchema(); if(schema != null){ schemaProcessor.processSchema(schema); + }else if(parameter.getContent() != null){ + Map content = parameter.getContent(); + for( String mediaName : content.keySet()) { + MediaType mediaType = content.get(mediaName); + if(mediaType.getSchema()!= null) { + schema = mediaType.getSchema(); + if (schema != null) { + schemaProcessor.processSchema(schema); + } + } + if(mediaType.getExamples() != null) { + for(Example ex: mediaType.getExamples().values()){ + exampleProcessor.processExample(ex); + } + } + } + } } diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/PathsProcessor.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/PathsProcessor.java index 0c4c55a3f8..22faf04c02 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/PathsProcessor.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/processors/PathsProcessor.java @@ -75,7 +75,6 @@ public void processPaths() { final List processedPathParameters = parameterProcessor.processParameters(pathItem.getParameters()); pathItem.setParameters(processedPathParameters); - //addParametersToEachOperation(pathItem); final Map operationMap = pathItem.readOperationsMap(); diff --git a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java index 318c0f0e49..a15ef497c2 100644 --- a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java +++ b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java @@ -88,7 +88,10 @@ public void testProcessParameters_RefToHeader( expectLoadingRefFromCache(ref, RefFormat.INTERNAL, resolvedHeaderParam); new Expectations() { { + resolvedHeaderParam.getSchema(); + + result = null; } }; diff --git a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java index c5cd8d1d93..b07dd75620 100644 --- a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java +++ b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java @@ -65,6 +65,15 @@ public class OpenAPIV3ParserTest { protected int serverPort = getDynamicPort(); protected WireMockServer wireMockServer; + @Test + public void testRemoteParameterIssue1094(@Injectable final List auths) throws Exception{ + + OpenAPI result = new OpenAPIV3Parser().read("issue-1094/swagger.yaml"); + Assert.assertNotNull(result); + Assert.assertNotNull(result.getComponents().getSchemas().get("PlmnId")); + + } + @Test public void testIssue1071() { diff --git a/modules/swagger-parser-v3/src/test/resources/issue-1094/common.yaml b/modules/swagger-parser-v3/src/test/resources/issue-1094/common.yaml new file mode 100644 index 0000000000..f5f0cf0e2f --- /dev/null +++ b/modules/swagger-parser-v3/src/test/resources/issue-1094/common.yaml @@ -0,0 +1,14 @@ +openapi: "3.0.0" +info: + version: 15.3.0 + title: "Common Data Types" +paths: {} +components: + schemas: + PlmnId: + type: object + properties: + mcc: + type: string + mnc: + type: string \ No newline at end of file diff --git a/modules/swagger-parser-v3/src/test/resources/issue-1094/swagger.yaml b/modules/swagger-parser-v3/src/test/resources/issue-1094/swagger.yaml new file mode 100644 index 0000000000..1ca2e0e51c --- /dev/null +++ b/modules/swagger-parser-v3/src/test/resources/issue-1094/swagger.yaml @@ -0,0 +1,22 @@ +openapi: "3.0.0" +info: + version: 15.3.0 + title: test +paths: + /my-app: + get: + parameters: + - name: target-plmn-list + in: query + content: + application/json: + schema: + type: array + items: + $ref: 'common.yaml#/components/schemas/PlmnId' + minItems: 1 + responses: + '200': + description: Expected response to a valid request + schema: + type: string \ No newline at end of file From e7daa56b5b26ee70d609bb2691212bee30bd458b Mon Sep 17 00:00:00 2001 From: gracekarina Date: Wed, 29 May 2019 17:19:12 -0500 Subject: [PATCH 2/2] fix for JMockit tests --- .../processors/ParameterProcessorTest.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java index a15ef497c2..7775cea28a 100644 --- a/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java +++ b/modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java @@ -45,16 +45,24 @@ public void testProcessParameters_TypesThatAreNotRefOrBody(@Injectable final Hea { headerParameter.getSchema(); result = null; + headerParameter.getContent(); + result = null; queryParameter.getSchema(); result = null; + queryParameter.getContent(); + result = null; cookieParameter.getSchema(); result = null; + cookieParameter.getContent(); + result = null; pathParameter.getSchema(); result = null; + pathParameter.getContent(); + result = null; } }; final List processedParameters = new ParameterProcessor(cache, openAPI) - .processParameters(Arrays.asList(headerParameter, + .processParameters(Arrays.asList(headerParameter, queryParameter, cookieParameter, pathParameter)); @@ -78,8 +86,7 @@ public void testProcessParameters_TypesThatAreNotRefOrBody(@Injectable final Hea } @Test - public void testProcessParameters_RefToHeader( - @Injectable final HeaderParameter resolvedHeaderParam) throws Exception { + public void testProcessParameters_RefToHeader(@Injectable final HeaderParameter resolvedHeaderParam) throws Exception { expectedModelProcessorCreation(); final String ref = "#/components/parameters/foo"; @@ -88,16 +95,14 @@ public void testProcessParameters_RefToHeader( expectLoadingRefFromCache(ref, RefFormat.INTERNAL, resolvedHeaderParam); new Expectations() { { - resolvedHeaderParam.getSchema(); - - + result = null; + resolvedHeaderParam.getContent(); result = null; } }; - final List processedParameters = new ParameterProcessor(cache, openAPI) - .processParameters(Arrays.asList(refParameter)); + final List processedParameters = new ParameterProcessor(cache, openAPI).processParameters(Arrays.asList(refParameter)); new FullVerifications(){{}};