use of io.swagger.v3.oas.models.info.Info in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testDeserializeWithMessages.
@Test
public void testDeserializeWithMessages() {
String yaml = "openapi: '3.0.0'\n" + "info:\n" + " version: 0.0.0\n" + " title:\n" + " - bar";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
Set<String> messages = new HashSet<>(result.getMessages());
assertTrue(messages.size() == 2);
assertTrue(messages.contains("attribute info.title is not of type `string`"));
assertTrue(messages.contains("attribute paths is missing"));
}
use of io.swagger.v3.oas.models.info.Info in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testParamData.
@Test
public void testParamData() {
String json = "{" + " \"openapi\": \"3.0.0\"," + " \"info\": {" + " \"title\": \"Operations\"," + " \"version\": \"0.0.0\"" + " }," + " \"paths\": {" + " \"/operations\": {" + " \"post\": {" + " \"parameters\": [" + " {" + " \"name\": \"param0\"," + " \"in\": \"query\"" + " }," + " {" + " \"name\": \"param2\"," + " \"in\": \"query\"," + " \"content\": {" + " \"text/plain\": {" + " }" + " }," + " \"schema\": {" + " \"type\": \"object\"" + " }" + " }" + " ]," + " \"responses\": {" + " \"default\": {" + " \"description\": \"None\"" + " }" + " }" + " }" + " }" + " }" + "}";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(json, null, null);
Operation post = result.getOpenAPI().getPaths().get("/operations").getPost();
Parameter param0 = post.getParameters().stream().filter(p -> "param0".equals(p.getName())).findFirst().orElseThrow(() -> new IllegalStateException("Can't find parameter=param0"));
assertEquals(result.getMessages().contains("attribute paths.'/operations'(post).parameters.[param0].content is missing"), true, "No schema or content error reported");
assertEquals(param0.getContent(), null, "No schema or content");
Parameter param2 = post.getParameters().stream().filter(p -> "param2".equals(p.getName())).findFirst().orElseThrow(() -> new IllegalStateException("Can't find parameter=param2"));
assertEquals(result.getMessages().contains("attribute paths.'/operations'(post).parameters.[param2].content when schema defined is unsupported"), true, "Both schema and content error reported");
assertEquals(param2.getContent(), null, "Content when schema defined");
assertEquals(result.getMessages().size(), 2, "Messages");
}
use of io.swagger.v3.oas.models.info.Info in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testDeserializeDateString.
@Test
public void testDeserializeDateString() {
String yaml = "openapi: 3.0.0\n" + "servers: []\n" + "info:\n" + " version: 0.0.0\n" + " title: My Title\n" + "paths:\n" + " /persons:\n" + " get:\n" + " description: a test\n" + " responses:\n" + " '200':\n" + " description: Successful response\n" + " content:\n" + " '*/*':\n" + " schema:\n" + " type: object\n" + " properties:\n" + " date:\n" + " $ref: '#/components/schemas/DateString'\n" + "components:\n" + " schemas:\n" + " DateString:\n" + " type: string\n" + " format: date\n" + " default: 2019-01-01\n" + " enum:\n" + " - 2019-01-01\n" + " - Nope\n" + " - 2018-02-02\n" + " - 2017-03-03\n" + " - null\n" + "";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
final OpenAPI resolved = new OpenAPIResolver(result.getOpenAPI(), null).resolve();
Schema dateModel = resolved.getComponents().getSchemas().get("DateString");
assertTrue(dateModel instanceof DateSchema);
List<Date> dateValues = dateModel.getEnum();
assertEquals(dateValues.size(), 4);
assertEquals(dateValues.get(0), new Calendar.Builder().setDate(2019, 0, 1).build().getTime());
assertEquals(dateValues.get(1), new Calendar.Builder().setDate(2018, 1, 2).build().getTime());
assertEquals(dateValues.get(2), new Calendar.Builder().setDate(2017, 2, 3).build().getTime());
assertEquals(dateValues.get(3), null);
assertEquals(dateModel.getDefault(), new Calendar.Builder().setDate(2019, 0, 1).build().getTime());
assertEquals(result.getMessages(), Arrays.asList("attribute components.schemas.DateString.enum=`Nope` is not of type `date`"));
}
use of io.swagger.v3.oas.models.info.Info 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.models.info.Info in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testDeserializeWithDiscriminator.
@Test
public void testDeserializeWithDiscriminator() {
String yaml = "openapi: 3.0.0\n" + "servers: []\n" + "info:\n" + " version: ''\n" + " title: ''\n" + "paths: {}\n" + "components:\n" + " schemas:\n" + " Animal:\n" + " type: object\n" + " discriminator:\n" + " propertyName: petType\n" + " description: |\n" + " A basic `Animal` object which can extend to other animal types.\n" + " required:\n" + " - commonName\n" + " - petType\n" + " properties:\n" + " commonName:\n" + " description: the household name of the animal\n" + " type: string\n" + " petType:\n" + " description: |\n" + " The discriminator for the animal type. It _must_\n" + " match one of the concrete schemas by name (i.e. `Cat`)\n" + " for proper deserialization\n" + " type: string";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
Set<String> messages = new HashSet<>(result.getMessages());
assertFalse(messages.contains("attribute definitions.Animal.discriminator is unexpected"));
}
Aggregations