use of io.swagger.v3.oas.annotations.media.ArraySchema in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testArrayQueryParam.
@Test
public void testArrayQueryParam() throws Exception {
String yaml = "openapi: 3.0.0\n" + "servers: []\n" + "paths:\n" + " /pet/findByStatus:\n" + " get:\n" + " parameters:\n" + " - name: status\n" + " in: query\n" + " description: Status values that need to be considered for filter\n" + " required: false\n" + " style: pipeDelimited\n" + " schema:\n" + " type: array\n" + " items:\n" + " type: string\n" + " default: available\n" + " responses:\n" + " '200':\n" + " description: successful operation\n" + " content:\n" + " '*/*':\n" + " schema:\n" + " $ref: #/components/schemas/PetArray\n" + "info:\n" + " version: ''\n" + " title: ''";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
OpenAPI openAPI = result.getOpenAPI();
Parameter param = openAPI.getPaths().get("/pet/findByStatus").getGet().getParameters().get(0);
assertTrue(param instanceof QueryParameter);
QueryParameter qp = (QueryParameter) param;
Schema p = qp.getSchema();
assertEquals(p.getType(), "array");
assertTrue(((ArraySchema) p).getItems() instanceof StringSchema);
}
use of io.swagger.v3.oas.annotations.media.ArraySchema in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testArrayItems.
@Test
public void testArrayItems() {
String yaml = "openapi: 3.0.0\n" + "info:\n" + " title: Test\n" + " version: 1.0.0\n" + "paths:\n" + " \"/store/inventory\":\n" + " post:\n" + " requestBody:\n" + " content:\n" + " application/json:\n" + " schema:\n" + " type: array\n" + " minItems: 1\n" + " responses:\n" + " '200':\n" + " description: successful operation\n" + " content:\n" + " application/json:\n" + " schema:\n" + " items:\n" + " type: string";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
assertEquals(result.getMessages(), Arrays.asList("attribute paths.'/store/inventory'(post).requestBody.content.'application/json'.schema.items is missing"));
OpenAPI openAPI = result.getOpenAPI();
Schema body = openAPI.getPaths().get("/store/inventory").getPost().getRequestBody().getContent().get("application/json").getSchema();
assertFalse(body.getClass().equals(ArraySchema.class), "body is an ArraySchema");
assertEquals(body.getType(), "array");
assertEquals(body.getMinItems(), Integer.valueOf(1));
Schema response = openAPI.getPaths().get("/store/inventory").getPost().getResponses().get("200").getContent().get("application/json").getSchema();
assertTrue(response.getClass().equals(ArraySchema.class), "response is an ArraySchema");
assertEquals(body.getType(), "array");
}
use of io.swagger.v3.oas.annotations.media.ArraySchema in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method readOAS.
@Test
public void readOAS() throws /*JsonNode rootNode*/
Exception {
final ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
final JsonNode rootNode = mapper.readTree(Files.readAllBytes(java.nio.file.Paths.get(getClass().getResource("/oas4.yaml").toURI())));
final OpenAPIDeserializer deserializer = new OpenAPIDeserializer();
final SwaggerParseResult result = deserializer.deserialize(rootNode);
Assert.assertNotNull(result);
final OpenAPI openAPI = result.getOpenAPI();
Assert.assertNotNull(openAPI);
final Paths paths = openAPI.getPaths();
Assert.assertNotNull(paths);
Assert.assertNotNull(paths);
Assert.assertEquals(paths.size(), 114);
PathItem stripe = paths.get("/v1/3d_secure");
Assert.assertNotNull(stripe);
Assert.assertNotNull(stripe.getPost());
Assert.assertEquals(stripe.getPost().getDescription(), "");
Assert.assertEquals(stripe.getPost().getOperationId(), "Create3DSecure");
Assert.assertNotNull(stripe.getPost().getParameters());
ApiResponses responses = stripe.getPost().getResponses();
Assert.assertNotNull(responses);
assertTrue(responses.containsKey("200"));
ApiResponse response = responses.get("200");
Assert.assertEquals(response.getDescription(), "Successful response.");
Assert.assertEquals(response.getContent().get("application/json").getSchema().get$ref(), "#/components/schemas/three_d_secure");
PathItem stripeGet = paths.get("/v1/account/external_accounts");
Assert.assertNotNull(stripeGet);
Assert.assertNotNull(stripeGet.getGet());
Assert.assertEquals(stripeGet.getGet().getDescription(), "");
Assert.assertEquals(stripeGet.getGet().getOperationId(), "AllAccountExternalAccounts");
Assert.assertNotNull(stripeGet.getGet().getParameters());
ApiResponses responsesGet = stripeGet.getGet().getResponses();
Assert.assertNotNull(responsesGet);
assertTrue(responsesGet.containsKey("200"));
ApiResponse responseGet = responsesGet.get("200");
Assert.assertEquals(responseGet.getDescription(), "Successful response.");
Map<String, Schema> properties = (Map<String, Schema>) responseGet.getContent().get("application/json").getSchema().getProperties();
Assert.assertNotNull(properties);
Assert.assertNull(properties.get("data").getType());
Assert.assertEquals(properties.get("has_more").getDescription(), "True if this list has another page of items after this one that can be fetched.");
assertTrue(properties.get("data") instanceof ComposedSchema);
ComposedSchema data = (ComposedSchema) properties.get("data");
assertTrue(data.getOneOf().get(0) instanceof ArraySchema);
ArraySchema items = (ArraySchema) data.getOneOf().get(0);
Assert.assertEquals(items.getItems().get$ref(), "#/components/schemas/bank_account");
}
use of io.swagger.v3.oas.annotations.media.ArraySchema in project swagger-parser by swagger-api.
the class InlineModelResolverTest method resolveInlineArrayResponse.
@Test
public void resolveInlineArrayResponse() throws Exception {
OpenAPI openAPI = new OpenAPI();
ObjectSchema items = new ObjectSchema();
items.addExtension("x-ext", "ext-items");
items.addProperties("name", new StringSchema());
ArraySchema schema = new ArraySchema().items(items);
schema.addExtension("x-ext", "ext-prop");
ApiResponse response = new ApiResponse();
response.addExtension("x-foo", "bar");
response.description("it works!");
response.content(new Content().addMediaType("*/*", new MediaType().schema(schema)));
openAPI.path("/foo/baz", new PathItem().get(new Operation().responses(new ApiResponses().addApiResponse("200", response))));
new InlineModelResolver().flatten(openAPI);
ApiResponse apiResponse = openAPI.getPaths().get("/foo/baz").getGet().getResponses().get("200");
assertNotNull(apiResponse);
assertNotNull(apiResponse.getContent().get("*/*").getSchema());
Schema responseProperty = apiResponse.getContent().get("*/*").getSchema();
// no need to flatten more
assertTrue(responseProperty instanceof ArraySchema);
ArraySchema ap = (ArraySchema) responseProperty;
assertEquals(1, ap.getExtensions().size());
assertEquals("ext-prop", ap.getExtensions().get("x-ext"));
Schema p = ap.getItems();
assertNotNull(p);
assertEquals("#/components/schemas/inline_response_200", p.get$ref());
assertEquals(1, p.getExtensions().size());
assertEquals("ext-items", p.getExtensions().get("x-ext"));
Schema inline = openAPI.getComponents().getSchemas().get("inline_response_200");
assertNotNull(inline);
assertTrue(inline instanceof Schema);
assertNotNull(inline.getProperties().get("name"));
assertTrue(inline.getProperties().get("name") instanceof StringSchema);
}
use of io.swagger.v3.oas.annotations.media.ArraySchema in project swagger-parser by swagger-api.
the class InlineModelResolverTest method testArrayResponse.
@Test
public void testArrayResponse() {
OpenAPI openAPI = new OpenAPI();
ObjectSchema objectSchema = new ObjectSchema();
objectSchema.addProperties("name", new StringSchema());
ArraySchema schema = new ArraySchema();
schema.setItems(objectSchema);
ApiResponse apiResponse = new ApiResponse();
apiResponse.addExtension("x-foo", "bar");
apiResponse.setDescription("it works!");
apiResponse.setContent(new Content().addMediaType("*/*", new MediaType().schema(schema)));
openAPI.path("/foo/baz", new PathItem().get(new Operation().responses(new ApiResponses().addApiResponse("200", apiResponse))));
new InlineModelResolver().flatten(openAPI);
ApiResponse response = openAPI.getPaths().get("/foo/baz").getGet().getResponses().get("200");
assertTrue(response.getContent().get("*/*").getSchema() instanceof ArraySchema);
ArraySchema am = (ArraySchema) response.getContent().get("*/*").getSchema();
Schema items = am.getItems();
assertTrue(items.get$ref() != null);
assertEquals(items.get$ref(), "#/components/schemas/inline_response_200");
Schema inline = openAPI.getComponents().getSchemas().get("inline_response_200");
assertTrue(inline instanceof Schema);
assertNotNull(inline.getProperties().get("name"));
assertTrue(inline.getProperties().get("name") instanceof StringSchema);
}
Aggregations