Ejemplo n.º 1
0
        public void CheckOpenAPIVersion()
        {
            var stream     = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.petstore30.yaml");
            var openApiDoc = OpenApiParser.Parse(stream).OpenApiDocument;

            Assert.Equal("3.0.0", openApiDoc.Version);
        }
Ejemplo n.º 2
0
        public ActionResult Index(HomeViewModel model)
        {
            if (!String.IsNullOrWhiteSpace(model.Input))
            {
                var             openApiParser = new OpenApiParser();
                OpenApiDocument doc           = null;
                try
                {
                    doc          = openApiParser.Parse(model.Input);
                    model.Errors = String.Join("\r\n", openApiParser.ParseErrors);
                }
                catch (Exception ex)
                {
                    model.Errors = ex.Message;
                    model.Output = string.Empty;
                }
                if (doc != null)
                {
                    var outputwriter = new OpenApiV3Writer(doc);
                    var outputstream = new MemoryStream();
                    outputwriter.Write(outputstream);
                    outputstream.Position = 0;

                    model.Output = new StreamReader(outputstream).ReadToEnd();
                }
            }
            return(View("Index", model));
        }
Ejemplo n.º 3
0
        public void LoadSimpleCallbackWithRefs()
        {
            var stream     = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.CallbackSampleWithRef.yaml");
            var parser     = new OpenApiParser();
            var openApiDoc = parser.Parse(stream);

            var path      = openApiDoc.Paths.PathItems.First().Value;
            var operation = path.Operations.First().Value;

            var callbackPair = operation.Callbacks.First();

            Assert.Equal("simplehook", callbackPair.Key);

            Callback callback     = callbackPair.Value;
            var      pathItemPair = callback.PathItems.First();

            Assert.Equal("$request.body(/url)", pathItemPair.Key);

            PathItem pathItem = pathItemPair.Value;

            var       operationPair = pathItem.Operations.First();
            Operation cboperation   = operationPair.Value;

            Assert.Equal("post", operationPair.Key);

            Assert.NotNull(callback);
        }
Ejemplo n.º 4
0
        //      private Operation _PostOperation;
        public OperationTests()
        {
            var stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.petstore30.yaml");

            _PetStoreDoc = OpenApiParser.Parse(stream).OpenApiDocument;
            //_PostOperation = _PetStoreDoc.Paths.PathMap.Where(pm=>pm.Key == "/pets").Value
            //    .Operations.Where()
        }
Ejemplo n.º 5
0
        public async Task PetStoreExpandedExample()
        {
            var stream = await client.GetStreamAsync("petstore-expanded.yaml");

            var parser     = new OpenApiParser();
            var openApiDoc = parser.Parse(stream);

            Assert.Equal(0, parser.ParseErrors.Count());
        }
Ejemplo n.º 6
0
        public async Task ApiWithExamples()
        {
            var stream = await client.GetStreamAsync("api-with-examples.yaml");

            var parser     = new OpenApiParser();
            var openApiDoc = parser.Parse(stream);

            Assert.Equal(0, parser.ParseErrors.Count());
        }
        public void json_parser_should_find_four_paths_five_operations()
        {
            var openApiJson = "samples/sampleOpenApi.json";
            var openApiText = File.ReadAllText(openApiJson);
            var openApiRoot = new OpenApiParser(openApiText).Read();

            openApiRoot.Paths.Count().Should().Be(4);
            openApiRoot.Paths.SelectMany(o => o.Operations).Count().Should().Be(5);
        }
        public void json_parser_should_find_one_path_one_operation()
        {
            var openApiJson = "samples/noRevs.v1.json";
            var openApiText = File.ReadAllText(openApiJson);
            var openApiRoot = new OpenApiParser(openApiText).Read();

            openApiRoot.Paths.Count().Should().Be(1);
            openApiRoot.Paths.Select(o => o.Operations).Count().Should().Be(1);
        }
Ejemplo n.º 9
0
        public void Tests(string filename)
        {
            var v2stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.V2Tests.V2Samples.simplest.2.yaml");
            var v3stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.V2Tests.V2Samples.simplest.3.yaml");

            var openApiDoc2 = OpenApiParser.Parse(v2stream).OpenApiDocument;

            Assert.True(AreStreamsEqual(v2stream, v3stream));
        }
Ejemplo n.º 10
0
        public async Task ApiWithExamples()
        {
            var stream = await client.GetStreamAsync("api-with-examples.yaml");

            var context    = OpenApiParser.Parse(stream);
            var openApiDoc = context.OpenApiDocument;

            Assert.Equal(0, context.ParseErrors.Count());
        }
Ejemplo n.º 11
0
        public async Task PetStoreExpandedExample()
        {
            var stream = await client.GetStreamAsync("petstore-expanded.yaml");

            var context    = OpenApiParser.Parse(stream);
            var openApiDoc = context.OpenApiDocument;

            Assert.Equal(0, context.ParseErrors.Count());
        }
Ejemplo n.º 12
0
        public async Task UberExample()
        {
            var stream = await client.GetStreamAsync("uber.yaml");

            var context    = OpenApiParser.Parse(stream);
            var openApiDoc = context.OpenApiDocument;

            Assert.Equal(0, context.ParseErrors.Count());
        }
Ejemplo n.º 13
0
        public async Task UberExample()
        {
            var stream = await client.GetStreamAsync("uber.yaml");

            var parser     = new OpenApiParser();
            var openApiDoc = parser.Parse(stream);

            Assert.Equal(0, parser.ParseErrors.Count());
        }
Ejemplo n.º 14
0
        public void CheckPetStoreApiInfo()
        {
            var stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.petstore30.yaml");

            var openApiDoc = OpenApiParser.Parse(stream).OpenApiDocument;
            var operation  = openApiDoc.Paths.PathItems["/pets"].Operations["get"];
            var schema     = operation.Responses["200"].Content["application/json"].Schema;

            Assert.NotNull(schema);
        }
Ejemplo n.º 15
0
        public void ParseBrokenSimplest()
        {
            var stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.BrokenSimplest.yaml");

            var context = OpenApiParser.Parse(stream);

            Assert.Equal(2, context.ParseErrors.Count);
            Assert.NotNull(context.ParseErrors.Where(s => s.ToString() == "`openapi` property does not match the required format major.minor.patch at #/openapi").FirstOrDefault());
            Assert.NotNull(context.ParseErrors.Where(s => s.ToString() == "title is a required property of #/info").FirstOrDefault());
        }
Ejemplo n.º 16
0
        public void SimpleTest()
        {
            var stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.Simplest.yaml");

            var openApiDoc = OpenApiParser.Parse(stream).OpenApiDocument;

            var outputStream = new MemoryStream();

            openApiDoc.Save(outputStream, new OpenApiV2Writer());
        }
Ejemplo n.º 17
0
        public void CheckPetStoreApiInfo()
        {
            var stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.petstore30.yaml");

            var openApiDoc = OpenApiParser.Parse(stream).OpenApiDocument;
            var info       = openApiDoc.Info;

            Assert.Equal("Swagger Petstore (Simple)", openApiDoc.Info.Title);
            Assert.Equal("A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", info.Description);
            Assert.Equal("1.0.0", info.Version);
        }
Ejemplo n.º 18
0
        public void LoadSimpleCallback()
        {
            var stream     = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.CallbackSample.yaml");
            var openApiDoc = OpenApiParser.Parse(stream).OpenApiDocument;

            PathItem  path = openApiDoc.Paths.PathItems.First().Value;
            Operation subscribeOperation = path.Operations["post"];

            var callback  = subscribeOperation.Callbacks["mainHook"];
            var pathItem  = callback.PathItems.First().Value;
            var operation = pathItem.Operations["post"];

            Assert.NotNull(operation);
        }
Ejemplo n.º 19
0
        public void ParseSimplestOpenApiEver()
        {
            var stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.Simplest.yaml");


            var context    = OpenApiParser.Parse(stream);
            var openApiDoc = context.OpenApiDocument;

            Assert.Equal("1.0.0", openApiDoc.Version);
            Assert.Equal(0, openApiDoc.Paths.PathItems.Count());
            Assert.Equal("The Api", openApiDoc.Info.Title);
            Assert.Equal("0.9.1", openApiDoc.Info.Version);
            Assert.Equal(0, context.ParseErrors.Count);
        }
Ejemplo n.º 20
0
        public void ParseCompleteHeaderOpenApi()
        {
            var stream = this.GetType().Assembly.GetManifestResourceStream("OpenApiTests.Samples.CompleteHeader.yaml");

            var openApiDoc = OpenApiParser.Parse(stream).OpenApiDocument;

            Assert.Equal("1.0.0", openApiDoc.Version);

            Assert.Equal(0, openApiDoc.Paths.PathItems.Count());
            Assert.Equal("The Api", openApiDoc.Info.Title);
            Assert.Equal("0.9.1", openApiDoc.Info.Version);
            Assert.Equal("This is an api", openApiDoc.Info.Description);
            Assert.Equal("http://example.org/Dowhatyouwant", openApiDoc.Info.TermsOfService);
            Assert.Equal("Darrel Miller", openApiDoc.Info.Contact.Name);
            Assert.Equal("@darrel_miller", openApiDoc.Info.Contact.Extensions["x-twitter"].GetValueNode().GetScalarValue());
        }
Ejemplo n.º 21
0
        public void InlineExample()
        {
            var openApiDoc = OpenApiParser.Parse(@"
                    openapi: 3.0.0
                    info:
                        title: A simple inline example
                        version: 1.0.0
                    paths:
                      /api/home:
                        get:
                          responses:
                            200:
                              description: A home document
                    ").OpenApiDocument;

            Assert.Equal("3.0.0", openApiDoc.Version);
        }
        public void tool_should_generate_controller_revisions_if_attribute_on_controller()
        {
#if DEBUG
            var assemblyPath = "../../../../openapi-to-terraform.Tests.TestAPIControllerRevisions/bin/Debug/net5.0/openapi-to-terraform.Tests.TestAPIControllerRevisions.dll";
#else
            var assemblyPath = "../../../../openapi-to-terraform.Tests.TestAPIControllerRevisions/bin/Release/net5.0/openapi-to-terraform.Tests.TestAPIControllerRevisions.dll";
#endif
            var convertedAssemblyPath = Path.Combine(Directory.GetCurrentDirectory(), assemblyPath);
            var openApiPath           = "samples/controllerRevs.v1.json";
            var openApiText           = File.ReadAllText(openApiPath);

            var      docTree         = new OpenApiParser(openApiText).Read();
            Assembly startupAssembly = Assembly.LoadFrom(convertedAssemblyPath);
            var      revisions       = RevisionsGenerator.Generate(startupAssembly, docTree);
            IDictionary <string, JToken> revisionsFileParsed = JObject.Parse(revisions);
            revisionsFileParsed.Keys.Count.Should().Be(1); // Only one controller with one action in openapi file, so should be one key
            var revisionsCount = revisionsFileParsed.First().Value.Count();
            revisionsCount.Should().Be(2);                 // The controller has two revisions defined, so there should be two here
        }
        public void tool_should_generate_no_revisions_if_no_attributes()
        {
#if DEBUG
            var assemblyPath = "../../../../openapi-to-terraform.Tests.TestAPINoRevs/bin/Debug/net5.0/openapi-to-terraform.Tests.TestAPINoRevs.dll";
#else
            var assemblyPath = "../../../../openapi-to-terraform.Tests.TestAPINoRevs/bin/Release/net5.0/openapi-to-terraform.Tests.TestAPINoRevs.dll";
#endif
            var convertedAssemblyPath = Path.Combine(Directory.GetCurrentDirectory(), assemblyPath);
            var openApiPath           = "samples/noRevs.v1.json";
            var openApiText           = File.ReadAllText(openApiPath);

            var      docTree         = new OpenApiParser(openApiText).Read();
            Assembly startupAssembly = Assembly.LoadFrom(convertedAssemblyPath);
            var      revisions       = RevisionsGenerator.Generate(startupAssembly, docTree);
            IDictionary <string, JToken> revisionsFileParsed = JObject.Parse(revisions);
            revisionsFileParsed.Keys.Count.Should().Be(1);
            var revisionsFirstCount = revisionsFileParsed.First().Value.Count();
            revisionsFirstCount.Should().Be(1);
        }
Ejemplo n.º 24
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                txtErrors.Text = "";
                OpenApiParser openApiParser = new OpenApiParser();
                MemoryStream  stream        = CreateStream(this.txtInput.Text);


                var stopwatch = new Stopwatch();
                stopwatch.Start();
                var doc = openApiParser.Parse(stream);
                stopwatch.Stop();
                this.txtParseTime.Text = $"{stopwatch.ElapsedMilliseconds} ms";

                if (openApiParser.ParseErrors.Count == 0)
                {
                    txtErrors.Text = "OK";
                }
                else
                {
                    var errorReport = new StringBuilder();
                    foreach (var error in openApiParser.ParseErrors)
                    {
                        errorReport.AppendLine(error.ToString());
                    }
                    txtErrors.Text = errorReport.ToString();
                }

                stopwatch.Reset();
                stopwatch.Start();
                txtOutput.Text = WriteContents(doc);
                stopwatch.Stop();

                this.txtRenderTime.Text = $"{stopwatch.ElapsedMilliseconds} ms";
            }
            catch (Exception ex)
            {
                txtErrors.Text = "Failed to parse input: " + ex.Message;
            }
        }
Ejemplo n.º 25
0
        internal void Validate()
        {
            try {
                MemoryStream stream = CreateStream(input);


                var stopwatch = new Stopwatch();
                stopwatch.Start();
                var context = OpenApiParser.Parse(stream);
                stopwatch.Stop();
                ParseTime = $"{stopwatch.ElapsedMilliseconds} ms";

                if (context.ParseErrors.Count == 0)
                {
                    Errors = "OK";
                }
                else
                {
                    var errorReport = new StringBuilder();
                    foreach (var error in context.ParseErrors)
                    {
                        errorReport.AppendLine(error.ToString());
                    }
                    Errors = errorReport.ToString();
                }

                stopwatch.Reset();
                stopwatch.Start();
                Output = WriteContents(context.OpenApiDocument);
                stopwatch.Stop();

                RenderTime = $"{stopwatch.ElapsedMilliseconds} ms";
            }
            catch (Exception ex)
            {
                Errors = "Failed to parse input: " + ex.Message;
            }

            // Verify output is valid JSON or YAML
            //var dummy = YamlHelper.ParseYaml(Output);
        }
Ejemplo n.º 26
0
        public async Task <HttpResponseMessage> Post()
        {
            var parser = new OpenApiParser();
            var doc    = parser.Parse(await this.Request.Content.ReadAsStreamAsync());

            var errors = parser.ParseErrors;

            if (errors.Count == 0)
            {
                return(new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new OpenApiContent(doc)
                });
            }
            else
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(String.Join("\n", errors.Select(e => e.ToString()).ToArray()))
                });
            }
        }