use of io.swagger.v3.oas.models.callbacks.Callback in project swagger-parser by swagger-api.
the class OpenAPIResolverTest method pathsResolver.
@Test
public void pathsResolver() throws Exception {
final ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
String pathFile = FileUtils.readFileToString(new File("src/test/resources/oas3.yaml.template"));
pathFile = pathFile.replace("${dynamicPort}", String.valueOf(this.serverPort));
final JsonNode rootNode = mapper.readTree(pathFile.getBytes());
final OpenAPIDeserializer deserializer = new OpenAPIDeserializer();
final SwaggerParseResult result = deserializer.deserialize(rootNode);
Assert.assertNotNull(result);
final OpenAPI openAPI = result.getOpenAPI();
Assert.assertNotNull(openAPI);
assertEquals(new OpenAPIResolver(openAPI, new ArrayList<>(), null).resolve(), openAPI);
// internal url pathItem
assertEquals(openAPI.getPaths().get("/pathItemRef2"), openAPI.getPaths().get("/pet"));
// internal array schema inside operation -> responses -> content
ArraySchema schema = (ArraySchema) openAPI.getPaths().get("/pet").getPut().getResponses().get("400").getContent().get("application/json").getSchema();
assertEquals(schema.getItems().get$ref(), "#/components/schemas/VeryComplexType");
// replace of parameters in operation and remove the ones from the pathItem
Assert.assertNotNull(openAPI.getPaths().get("/pet").getPost().getParameters());
Assert.assertNull(openAPI.getPaths().get("/pet").getParameters());
// remote ref pathItem
assertEquals(openAPI.getPaths().get("/pathItemRef").getSummary(), "summary");
assertEquals(openAPI.getPaths().get("/pathItemRef").getPost().getResponses().get("405").getDescription(), "Invalid input");
// internal pathItem operation -> response -> schema
Assert.assertNotNull(openAPI.getPaths().get("/pet/{petId}").getGet().getResponses());
assertEquals(openAPI.getPaths().get("/pet/{petId}").getGet().getResponses().get("200").getContent().get("application/xml").getSchema().get$ref(), "#/components/schemas/Pet");
// internal pathItem -> operation -> callback -> pathItem -> operation -> response -> schema
assertEquals(openAPI.getPaths().get("/pet/{petId}").getGet().getCallbacks().get("mainHook").get("$request.body#/url").getPost().getResponses().get("200").getContent().get("application/xml").getSchema().get$ref(), "#/components/schemas/Pet");
// internal pathItem -> operation -> requestBody
Schema id = (Schema) openAPI.getPaths().get("/pet/findByStatus").getGet().getRequestBody().getContent().get("multipart/mixed").getSchema().getProperties().get("id");
assertEquals(id.get$ref(), "#/components/schemas/Pet");
// internal parameter url
assertEquals(openAPI.getPaths().get("/store/inventory").getGet().getParameters().get(0), openAPI.getComponents().getParameters().get("limitParam"));
}
use of io.swagger.v3.oas.models.callbacks.Callback in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method readComponentsObject.
@Test(dataProvider = "data")
public void readComponentsObject(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);
Assert.assertEquals(openAPI.getOpenapi(), "3.0.1");
final Components component = openAPI.getComponents();
Assert.assertNotNull(component);
Assert.assertNotNull(component.getCallbacks());
Assert.assertEquals(component.getCallbacks().get("heartbeat").get("$request.query.heartbeat-url").getPost().getResponses().get("200").getDescription(), "Consumer acknowledged the callback");
// System.out.println(component.getCallbacks().get("referenced"));
Assert.assertEquals(component.getCallbacks().get("failed").get("$response.body#/failedUrl").getPost().getResponses().get("200").getDescription(), "Consumer acknowledged the callback failed");
Assert.assertNotNull(component.getExamples());
Assert.assertEquals(component.getExamples().get("cat").getSummary(), "An example of a cat");
Assert.assertNotNull(component.getExamples().get("cat").getValue());
Assert.assertNotNull(component.getHeaders());
Assert.assertEquals(component.getHeaders().get("X-Rate-Limit-Limit").getDescription(), "The number of allowed requests in the current period");
Assert.assertEquals(component.getHeaders().get("X-Rate-Limit-Limit").getSchema().getType(), "integer");
Assert.assertNotNull(component.getLinks());
Assert.assertEquals(component.getLinks().get("unsubscribe").getOperationId(), "cancelHookCallback");
Assert.assertNotNull(component.getLinks().get("unsubscribe").getParameters());
Assert.assertEquals(component.getLinks().get("unsubscribe").getExtensions().get("x-link"), "link extension");
Assert.assertNotNull(component.getParameters());
Assert.assertEquals(component.getParameters().get("skipParam").getName(), "skip");
Assert.assertEquals(component.getParameters().get("skipParam").getIn(), "query");
Assert.assertEquals(component.getParameters().get("skipParam").getDescription(), "number of items to skip");
assertTrue(component.getParameters().get("skipParam").getRequired());
Assert.assertEquals(component.getParameters().get("skipParam").getSchema().getType(), "integer");
Assert.assertNotNull(component.getRequestBodies());
Assert.assertEquals(component.getRequestBodies().get("requestBody1").getDescription(), "request body in components");
Assert.assertEquals(component.getRequestBodies().get("requestBody1").getContent().get("application/json").getSchema().get$ref(), "#/components/schemas/Pet");
Assert.assertEquals(component.getRequestBodies().get("requestBody1").getContent().get("application/xml").getSchema().get$ref(), "#/components/schemas/Pet");
Assert.assertEquals(component.getRequestBodies().get("requestBody2").getContent().get("application/json").getSchema().getType().toString(), "array");
Assert.assertNotNull(component.getRequestBodies().get("requestBody2").getContent().get("application/json").getSchema());
Assert.assertNotNull(component.getResponses());
Assert.assertEquals(component.getResponses().get("NotFound").getDescription(), "Entity not found.");
Assert.assertEquals(component.getResponses().get("IllegalInput").getDescription(), "Illegal input for operation.");
Assert.assertEquals(component.getResponses().get("GeneralError").getDescription(), "General Error");
Assert.assertEquals(component.getResponses().get("GeneralError").getContent().get("application/json").getSchema().get$ref(), "#/components/schemas/ExtendedErrorModel");
Assert.assertNotNull(component.getSchemas());
Assert.assertEquals(component.getSchemas().get("Category").getType(), "object");
Assert.assertEquals(component.getSchemas().get("ApiResponse").getRequired().get(0), "name");
Assert.assertEquals(component.getSchemas().get("Order").getType(), "object");
Assert.assertEquals(component.getSchemas().get("Order").getNot().getType(), "integer");
assertTrue(component.getSchemas().get("Order").getAdditionalProperties() instanceof Schema);
Schema additionalProperties = (Schema) component.getSchemas().get("Order").getAdditionalProperties();
Assert.assertEquals(additionalProperties.getType(), "integer");
Schema schema = (Schema) component.getSchemas().get("Order").getProperties().get("status");
Map<String, Schema> properties = (Map<String, Schema>) component.getSchemas().get("Order").getProperties();
Assert.assertNotNull(properties);
Assert.assertEquals(properties.get("status").getType(), "string");
Assert.assertEquals(properties.get("status").getDescription(), "Order Status");
Assert.assertEquals(properties.get("status").getEnum().get(0), "placed");
Assert.assertNotNull(component.getSecuritySchemes());
Assert.assertEquals(component.getSecuritySchemes().get("petstore_auth").getType().toString(), "oauth2");
Assert.assertEquals(component.getSecuritySchemes().get("petstore_auth").getFlows().getImplicit().getAuthorizationUrl(), "http://petstore.swagger.io/oauth/dialog");
// TODO
Assert.assertNotNull(component.getSecuritySchemes().get("petstore_auth").getFlows().getImplicit().getScopes());
Assert.assertNotNull(component.getExtensions());
assertTrue(component.getExtensions().containsKey("x-component"));
Object object = component.getExtensions().get("x-component");
assertTrue(object instanceof List);
List elements = (List) object;
Assert.assertEquals(elements.size(), 1);
Map<String, Object> map = (Map) elements.get(0);
Assert.assertEquals(map.get("url"), "http://component.swagger.io/v2/swagger.json");
Assert.assertEquals(map.get("format"), "OAS");
Assert.assertEquals(map.get("version"), "3.0");
Map<String, Object> converter = (Map<String, Object>) map.get("converter");
Assert.assertNotNull(converter);
Assert.assertEquals(converter.get("url"), "https://github.com/mermade/oas3");
Assert.assertEquals(converter.get("version"), "1.2.3");
object = component.getExtensions().get("x-api-title");
assertTrue(object instanceof String);
Assert.assertEquals("pet store test api in components", object.toString());
}
use of io.swagger.v3.oas.models.callbacks.Callback in project swagger-parser by swagger-api.
the class OpenAPIDeserializer method getCallbacks.
public Map<String, Callback> getCallbacks(ObjectNode node, String location, ParseResult result, boolean underComponents) {
if (node == null) {
return null;
}
Map<String, Callback> callbacks = new LinkedHashMap<>();
Set<String> keys = getKeys(node);
for (String key : keys) {
if (underComponents) {
if (!Pattern.matches("^[a-zA-Z0-9\\.\\-_]+$", key)) {
result.warning(location, "Callback key " + key + " doesn't adhere to regular expression " + "^[a-zA-Z0-9\\.\\-_]+$");
}
}
Callback callback = getCallback((ObjectNode) node.get(key), location, result);
if (callback != null) {
callbacks.put(key, callback);
}
}
return callbacks;
}
use of io.swagger.v3.oas.models.callbacks.Callback in project swagger-parser by swagger-api.
the class PathsProcessor method updateRefs.
protected void updateRefs(PathItem path, String pathRef) {
if (path.getParameters() != null) {
List<Parameter> params = path.getParameters();
for (Parameter param : params) {
updateRefs(param, pathRef);
}
}
List<Operation> ops = path.readOperations();
for (Operation op : ops) {
if (op.getParameters() != null) {
for (Parameter param : op.getParameters()) {
updateRefs(param, pathRef);
}
}
if (op.getResponses() != null) {
for (ApiResponse response : op.getResponses().values()) {
updateRefs(response, pathRef);
}
}
if (op.getRequestBody() != null) {
updateRefs(op.getRequestBody(), pathRef);
}
if (op.getCallbacks() != null) {
Map<String, Callback> callbacks = op.getCallbacks();
for (String name : callbacks.keySet()) {
Callback callback = callbacks.get(name);
if (callback != null) {
for (String callbackName : callback.keySet()) {
PathItem pathItem = callback.get(callbackName);
updateRefs(pathItem, pathRef);
}
}
}
}
}
}
use of io.swagger.v3.oas.models.callbacks.Callback in project swagger-parser by swagger-api.
the class ComponentsProcessor method processCallbacks.
private void processCallbacks(Set<String> callbackKey, Map<String, Callback> callbacks) {
callbackKey.addAll(callbacks.keySet());
for (String callbackName : callbackKey) {
final Callback callback = callbacks.get(callbackName);
callbackProcessor.processCallback(callback);
}
}
Aggregations