Ejemplo n.º 1
0
        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]);
        }
Ejemplo n.º 2
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]);
        }
Ejemplo n.º 3
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));
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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));
            }
        }
Ejemplo n.º 7
0
        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));
            }
        }
Ejemplo n.º 8
0
        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);
        }