public void OperationEntity_GetPaths_Required_Parameters() { var openApiDocument = LoadOpenApiDocument("../../samples/GetPaths2.yaml"); var operation = openApiDocument.Paths.Values.First().Operations.Values.First(); var uriParameterEntities = new List <ParameterEntity> { new ParameterEntity { In = "Path", IsRequired = true, Name = "id" }, new ParameterEntity { In = "Query", IsRequired = true, Name = "$select" }, new ParameterEntity { In = "Query", IsRequired = false, Name = "$limit" }, new ParameterEntity { In = "Header", IsRequired = true, Name = "token" } }; var requiredQueryParameters = uriParameterEntities.Where(p => p.IsRequired && p.In == "Query").ToList(); var paths = RestOperationTransformer.TransformPaths(openApiDocument.Paths.First(), operation, requiredQueryParameters); Assert.NotNull(paths); Assert.Equal(1, paths.Count); Assert.Equal("/pets?$select={$select}", paths[0]); }
public void OperationEntity_GetPaths() { var openApiDocument = LoadOpenApiDocument("../../samples/GetPaths.yaml"); var operation = openApiDocument.Paths.Values.First().Operations.Values.First(); var paths = RestOperationTransformer.TransformPaths(openApiDocument.Paths.First(), operation, null); Assert.NotNull(paths); Assert.Equal(1, paths.Count); Assert.Equal("/pets", paths[0]); }
public void OperationEntity_GetSeeAlso() { var openApiDocument = LoadOpenApiDocument("../../samples/GetSeeAlso.yaml"); var operation = openApiDocument.Paths.Values.First().Operations.Values.First(); var seeAlso = RestOperationTransformer.TransformExternalDocs(operation); Assert.NotNull(seeAlso); Assert.Equal(3, seeAlso.Count); Assert.Equal("Find more info here", seeAlso[0].Description); Assert.Equal("description A", seeAlso[1].Description); Assert.Equal("description B", seeAlso[2].Description); Assert.Equal("https://example.com/", seeAlso[0].Url); Assert.Equal("https://exampleA.com", seeAlso[1].Url); Assert.Equal("https://exampleB.com", seeAlso[2].Url); }
public void OperationEntity_GetUriParameters_WithServerId() { var openApiDocument = LoadOpenApiDocument("../../samples/GetUriParameters.yaml"); var operation = openApiDocument.Paths.Values.First().Operations.Values.First(); var expects = LoadExpectedJsonObject <List <ParameterEntity> >("../../expects/UriParameters.json"); var uriParameterEntities = RestOperationTransformer.TransformUriParameters(operation, "mockServerId"); Assert.NotNull(uriParameterEntities); Assert.Equal(expects.Count, uriParameterEntities.Count); foreach (var expect in expects) { var foundParameter = uriParameterEntities.SingleOrDefault(p => p.Name == expect.Name); Assert.NotNull(foundParameter); Assert.Equal(JsonUtility.ToJsonString(expect), JsonUtility.ToJsonString(foundParameter)); } }
public void OperationEntity_GetSecurity() { var openApiDocument = LoadOpenApiDocument("../../samples/GetSecurity.yaml"); var operation = openApiDocument.Paths.Values.First().Operations.Values.First(); var security = RestOperationTransformer.TransformSecurity(operation.Security); Assert.NotNull(security); Assert.Equal(2, security.Count); Assert.Equal("Azure Active Directory OAuth2 Flow.", security[0].Description); Assert.Equal("Azure Active Directory OAuth2 Flow2.", security[1].Description); Assert.Equal(2, security[0].Flows.Count); Assert.Equal("authorizationCode", security[0].Flows[0].Name); Assert.Equal("implicit", security[0].Flows[1].Name); Assert.Equal(2, security[0].Flows[0].Scopes.Count); Assert.Equal("user_impersonation", security[0].Flows[0].Scopes[0].Name); Assert.Equal("read", security[0].Flows[0].Scopes[1].Name); }
public void OperationEntity_GetRequestBody_With_ServerId() { var openApiDocument = LoadOpenApiDocument("../../samples/GetRequestBody2.yaml"); var operation = openApiDocument.Paths.Values.First().Operations.Values.First(); var expects = LoadExpectedJsonObject <List <RequestBodyEntity> >("../../expects/Requestbodies2.json"); var requestbodies = RestOperationTransformer.TransformRequestBody(operation, "mockServerId"); Assert.NotNull(requestbodies); Assert.Equal(requestbodies.Count, expects.Count); foreach (var expect in expects) { var foundRequestBody = requestbodies.SingleOrDefault(p => p.MediaType == expect.MediaType); Assert.NotNull(foundRequestBody); Assert.Equal(JsonUtility.ToJsonString(expect), JsonUtility.ToJsonString(foundRequestBody)); } }
public void OperationEntity_GetResponse_With_ServerId() { var openApiDocument = LoadOpenApiDocument("../../samples/GetResponse2.yaml"); var operation = openApiDocument.Paths.Values.First().Operations.Values.First(); var transformModel = new TransformModel { OpenApiDoc = openApiDocument }; var expects = LoadExpectedJsonObject <List <ResponseEntity> >("../../expects/Responses2.json"); var responses = RestOperationTransformer.TransformResponses(transformModel, operation, "mockServerId"); Assert.NotNull(responses); Assert.Equal(responses.Count, expects.Count); foreach (var expect in expects) { var foundResponse = responses.SingleOrDefault(p => p.Name == expect.Name); Assert.NotNull(foundResponse); Assert.Equal(JsonUtility.ToJsonString(expect), JsonUtility.ToJsonString(foundResponse)); } }
public static Operation ProcessOperation(string groupKey, string ymlPath, string filePath) { var swaggerModel = SwaggerJsonParser.Parse(filePath); var viewModel = SwaggerModelConverter.FromSwaggerModel(swaggerModel); if (viewModel.Metadata.TryGetValue("x-internal-split-type", out var fileType)) { string currentFileType = (string)fileType; if (string.Equals("Operation", currentFileType)) { if (viewModel.Children?.Count == 1) { var operationInfo = RestOperationTransformer.Transform(groupKey, swaggerModel, viewModel.Children.First()); if (operationInfo != null) { using (var writer = new StreamWriter(ymlPath)) { writer.WriteLine("### YamlMime:RESTOperation"); YamlSerializer.Serialize(writer, operationInfo); } return(new Operation { Id = operationInfo.Id, GroupId = operationInfo.GroupId, Summary = operationInfo.Summary }); } } else { Console.WriteLine($"Please make sure there is only 1 child here. the actual children number is : {viewModel.Children?.Count}"); } } } return(null); }