Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,13 @@ public List<Parameter> processParameters(List<Parameter> parameters) {

}

for (Parameter parameter : processedPathLevelParameters) {
Schema schema = parameter.getSchema();
if(schema != null){
schemaProcessor.processSchema(schema);
}
}

return processedPathLevelParameters;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@
import io.swagger.v3.oas.models.parameters.RequestBody;
import io.swagger.v3.parser.ResolverCache;
import io.swagger.v3.parser.models.RefFormat;
import mockit.FullVerifications;
import mockit.Injectable;
import mockit.Mocked;
import mockit.StrictExpectations;
import mockit.*;
import org.testng.annotations.Test;


Expand Down Expand Up @@ -44,7 +41,18 @@ public void testProcessParameters_TypesThatAreNotRefOrBody(@Injectable final Hea
@Injectable final CookieParameter cookieParameter,
@Injectable final PathParameter pathParameter) throws Exception {
expectedModelProcessorCreation();

new Expectations() {
{
headerParameter.getSchema();
result = null;
queryParameter.getSchema();
result = null;
cookieParameter.getSchema();
result = null;
pathParameter.getSchema();
result = null;
}
};
final List<Parameter> processedParameters = new ParameterProcessor(cache, openAPI)
.processParameters(Arrays.<Parameter>asList(headerParameter,
queryParameter,
Expand Down Expand Up @@ -78,6 +86,12 @@ public void testProcessParameters_RefToHeader(
Parameter refParameter = new Parameter().$ref(ref);

expectLoadingRefFromCache(ref, RefFormat.INTERNAL, resolvedHeaderParam);
new Expectations() {
{
resolvedHeaderParam.getSchema();
result = null;
}
};

final List<Parameter> processedParameters = new ParameterProcessor(cache, openAPI)
.processParameters(Arrays.<Parameter>asList(refParameter));
Expand Down Expand Up @@ -132,8 +146,6 @@ private void expectedModelProcessorCreation() {
new SchemaProcessor(cache, openAPI);
times = 1;
result = modelProcessor;


}};
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,50 @@
package io.swagger.parser;

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.PathItem;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.parser.core.models.ParseOptions;
import io.swagger.v3.parser.core.models.SwaggerParseResult;
import io.swagger.v3.core.util.Json;
import org.junit.Test;

import java.util.List;
import java.util.Map;

import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;

public class OpenAPIParserTest {
@Test
public void testIssue749() {
ParseOptions options = new ParseOptions();
options.setResolve(true);
SwaggerParseResult result = new OpenAPIParser().readLocation("issue749-main.yaml", null, options);
assertNotNull(result);

OpenAPI openAPI = result.getOpenAPI();
assertNotNull(openAPI);

Components components = openAPI.getComponents();
assertNotNull(components);

PathItem pathItem = openAPI.getPaths().get("/some/ping");
assertNotNull(pathItem);
List<Parameter> parameters = pathItem.getGet().getParameters();
assertNotNull(parameters);
assertEquals(parameters.size(), 1);
assertEquals(parameters.get(0).getName(), "i");
assertNotNull(parameters.get(0).getSchema());
assertEquals(parameters.get(0).getSchema().get$ref(), "#/components/schemas/SomeId");

Map<String, Schema> schemas = components.getSchemas();
assertNotNull(schemas);
assertEquals(schemas.size(), 1);
assertNotNull(schemas.get("SomeId"));
}

@Test
public void testSimple() {
SwaggerParseResult result = new OpenAPIParser().readLocation("petstore.yaml", null, null);
Expand Down
22 changes: 22 additions & 0 deletions modules/swagger-parser/src/test/resources/issue749-main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
openapi: 3.0.1
info:
title: ping test
version: '1.0'
servers:
- url: 'http://localhost:8000/'
paths:
/some/ping:
get:
operationId: pingGet
parameters:
- name: i
in: query
description: Test
required: true
schema:
$ref: './issue749-reference.yaml#/SomeId'
responses:
'201':
description: OK
components:
schemas: {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
SomeId:
type: integer
format: int32
description: My value 123
example: 123