use of io.swagger.v3.oas.models.Paths in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testParamContent.
@Test
public void testParamContent() {
String json = "{" + " \"openapi\": \"3.0.0\"," + " \"info\": {" + " \"title\": \"Operations\"," + " \"version\": \"0.0.0\"" + " }," + " \"paths\": {" + " \"/operations\": {" + " \"post\": {" + " \"parameters\": [" + " {" + " \"name\": \"param0\"," + " \"in\": \"query\"," + " \"content\": {" + " }" + " }," + " {" + " \"name\": \"param1\"," + " \"in\": \"query\"," + " \"content\": {" + " \"text/plain\": {" + " }" + " }" + " }," + " {" + " \"name\": \"param2\"," + " \"in\": \"query\"," + " \"content\": {" + " \"text/plain\": {" + " }," + " \"application/json\": {" + " \"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 with no media type is unsupported"), true, "No media types error reported");
assertEquals(param0.getContent(), null, "Empty content");
Parameter param1 = post.getParameters().stream().filter(p -> "param1".equals(p.getName())).findFirst().orElseThrow(() -> new IllegalStateException("Can't find parameter=param1"));
assertEquals(param1.getContent().size(), 1, "Valid content size");
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 with multiple media types is unsupported"), true, "Multiple media types error reported");
assertEquals(param2.getContent(), null, "Content with multiple media types");
assertEquals(result.getMessages().size(), 2, "Messages");
}
use of io.swagger.v3.oas.models.Paths in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testDeserializeByteString.
@Test
public void testDeserializeByteString() {
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" + " bytes:\n" + " $ref: '#/components/schemas/ByteString'\n" + "components:\n" + " schemas:\n" + " ByteString:\n" + " type: string\n" + " format: byte\n" + " default: W.T.F?\n" + " enum:\n" + " - VGhlIHdvcmxk\n" + " - aXMgYWxs\n" + " - dGhhdCBpcw==\n" + " - dGhlIGNhc2U=\n" + " - W.T.F?\n" + "";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
final OpenAPI resolved = new OpenAPIResolver(result.getOpenAPI(), null).resolve();
Schema byteModel = resolved.getComponents().getSchemas().get("ByteString");
assertTrue(byteModel instanceof ByteArraySchema);
List<byte[]> byteValues = byteModel.getEnum();
assertEquals(byteValues.size(), 4);
assertEquals(new String(byteValues.get(0)), "The world");
assertEquals(new String(byteValues.get(1)), "is all");
assertEquals(new String(byteValues.get(2)), "that is");
assertEquals(new String(byteValues.get(3)), "the case");
assertEquals(byteModel.getDefault(), null);
assertEquals(result.getMessages(), Arrays.asList("attribute components.schemas.ByteString.enum=`W.T.F?` is not of type `byte`", "attribute components.schemas.ByteString.default=`W.T.F?` is not of type `byte`"));
}
use of io.swagger.v3.oas.models.Paths in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testDefinitions.
@Test
public void testDefinitions() {
String yaml = "openapi: 3.0.0\n" + "servers: []\n" + "info:\n" + " version: ''\n" + " title: ''\n" + "paths: {}\n" + "components:\n" + " schemas:\n" + " invalid: true\n" + " Person:\n" + " required:\n" + " - id\n" + " - name\n" + " properties:\n" + " id:\n" + " type: integer\n" + " format: int64\n" + " name:\n" + " type: string";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
List<String> messageList = result.getMessages();
Set<String> messages = new HashSet<>(messageList);
assertTrue(messages.contains("attribute components.schemas.invalid is not of type `object`"));
assertTrue(result.getOpenAPI().getComponents().getSchemas().get("Person") instanceof Schema);
List<String> required = ((Schema) result.getOpenAPI().getComponents().getSchemas().get("Person")).getRequired();
Set<String> requiredKeys = new HashSet<String>(required);
assertTrue(requiredKeys.contains("id"));
assertTrue(requiredKeys.contains("name"));
assertTrue(requiredKeys.size() == 2);
}
use of io.swagger.v3.oas.models.Paths in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testIssue204_allOf.
@Test
public void testIssue204_allOf() throws Exception {
String yaml = "openapi: 3.0.0\n" + "servers: []\n" + "info:\n" + " version: 2.0.0\n" + " title: Test allOf API\n" + " description: 'Tests the allOf API for parent, interface and child models.'\n" + "paths:\n" + " /:\n" + " get:\n" + " responses:\n" + " '200':\n" + " description: OK\n" + "components:\n" + " schemas:\n" + " Pet:\n" + " type: object\n" + " required:\n" + " - id\n" + " properties:\n" + " id:\n" + " type: integer\n" + " format: int64\n" + " Furry:\n" + " type: object\n" + " required:\n" + " - coatColour\n" + " properties:\n" + " coatColour:\n" + " type: string\n" + " Dog:\n" + " type: object\n" + " allOf:\n" + " - $ref: '#/components/schemas/Pet'\n" + " - $ref: '#/components/schemas/Furry'\n" + " - required:\n" + " - name\n" + " properties:\n" + " name:\n" + " type: string";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
assertTrue(result.getMessages().isEmpty());
OpenAPI openAPI = result.getOpenAPI();
assertNotNull(openAPI);
Map<String, Schema> definitions = openAPI.getComponents().getSchemas();
assertNotNull(definitions);
assertEquals(3, definitions.size());
Schema pet = definitions.get("Pet");
Schema furry = definitions.get("Furry");
Schema dog = definitions.get("Dog");
assertNotNull(pet);
assertNotNull(furry);
assertNotNull(dog);
assertTrue(dog instanceof ComposedSchema);
ComposedSchema dogComposed = (ComposedSchema) dog;
assertNotNull(dogComposed.getAllOf());
assertEquals(3, dogComposed.getAllOf().size());
Schema dogInterfaceRef = dogComposed.getAllOf().get(0);
Schema dogInterface = definitions.get(dogInterfaceRef.get$ref());
dogInterfaceRef = dogComposed.getAllOf().get(1);
dogInterface = definitions.get(dogInterfaceRef.get$ref());
assertTrue(dogComposed.getAllOf().get(0).get$ref() != null);
}
use of io.swagger.v3.oas.models.Paths in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method readRequestBodyObject.
@Test(dataProvider = "data")
public void readRequestBodyObject(JsonNode rootNode) throws Exception {
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);
PathItem petByStatusEndpoint = paths.get("/pet/findByStatus");
Assert.assertNotNull(petByStatusEndpoint.getGet().getRequestBody());
Assert.assertEquals(petByStatusEndpoint.getGet().getRequestBody().getDescription(), "pet store to add to the system");
assertTrue(petByStatusEndpoint.getGet().getRequestBody().getRequired(), "true");
Assert.assertNotNull(petByStatusEndpoint.getGet().getRequestBody().getContent().get("multipart/mixed"));
Assert.assertEquals(petByStatusEndpoint.getGet().getRequestBody().getContent().get("multipart/mixed").getSchema().getType(), "object");
Assert.assertNotNull(petByStatusEndpoint.getGet().getRequestBody().getContent().get("multipart/mixed").getSchema().getProperties());
Assert.assertEquals(petByStatusEndpoint.getGet().getRequestBody().getContent().get("multipart/mixed").getEncoding().get("historyMetadata").getContentType(), "application/xml; charset=utf-8");
Assert.assertNotNull(petByStatusEndpoint.getGet().getRequestBody().getContent().get("multipart/mixed").getEncoding().get("profileImage").getHeaders());
Assert.assertNotNull(petByStatusEndpoint.getGet().getRequestBody().getContent().get("multipart/mixed").getEncoding().get("profileImage").getHeaders().get("X-Rate-Limit"));
}
Aggregations