Ejemplo n.º 1
0
        public async Task When_redundant_attributes_are_available_then_output_is_correct()
        {
            //// Arrange
            var settings = new WebApiOpenApiDocumentGeneratorSettings
            {
                TypeMappers =
                {
                    new ObjectTypeMapper(typeof(JsonDate), new JsonSchema
                    {
                        Type   = JsonObjectType.String,
                        Format = "date"
                    })
                },
                AddMissingPathParameters = false,
                SchemaType                  = SchemaType.Swagger2,
                GenerateKnownTypes          = true,
                FlattenInheritanceHierarchy = true,
                DefaultEnumHandling         = EnumHandling.String,
                IsAspNetCore                = false,
            };
            var generator = new WebApiOpenApiDocumentGenerator(settings);

            //// Act
            var document = await generator.GenerateForControllerAsync <MyController>();

            var json = document.ToJson();

            //// Assert
            Assert.IsTrue(json.Contains("\"$ref\": \"#/definitions/LockedFlight\""));
        }
Ejemplo n.º 2
0
        public async Task When_query_parameter_is_enum_array_then_the_enum_is_referenced()
        {
            //// Arrange
            var settings = new WebApiOpenApiDocumentGeneratorSettings
            {
                DefaultUrlTemplate          = "api/{controller}/{action}/{id}",
                DefaultEnumHandling         = EnumHandling.String,
                DefaultPropertyNameHandling = PropertyNameHandling.Default,
                SchemaType = SchemaType.Swagger2,
            };
            var generator = new WebApiOpenApiDocumentGenerator(settings);

            //// Act
            var document = await generator.GenerateForControllerAsync <FooController>();

            var json = document.ToJson();

            var clientSettings = new TypeScriptClientGeneratorSettings
            {
                Template = TypeScriptTemplate.JQueryCallbacks
            };

            clientSettings.TypeScriptGeneratorSettings.TypeScriptVersion = 1.8m;

            var gen  = new TypeScriptClientGenerator(document, clientSettings);
            var code = gen.GenerateFile();

            //// Assert
            Assert.NotNull(document.Operations.First().Operation.Parameters.First().Item.Reference);
            Assert.Contains("getFoos(bars: Bar[], ", code);
        }
        private WebApiOpenApiDocumentGenerator GetOpenApi3Generator()
        {
            WebApiOpenApiDocumentGeneratorSettings settings = new WebApiOpenApiDocumentGeneratorSettings
            {
                SchemaType = SchemaType.Swagger2
            };
            WebApiOpenApiDocumentGenerator generator = new WebApiOpenApiDocumentGenerator(settings);

            return(generator);
        }
Ejemplo n.º 4
0
        public async Task When_custom_operation_processor_is_added_via_attribute_then_it_is_processed()
        {
            //// Arrange
            var settings  = new WebApiOpenApiDocumentGeneratorSettings();
            var generator = new WebApiOpenApiDocumentGenerator(settings);

            //// Act
            var document = await generator.GenerateForControllerAsync <TestController>();

            //// Assert
            Assert.IsTrue(document.Operations.First().Operation.ExtensionData.ContainsKey("x-code-samples"));
            Assert.AreEqual(2, ((IList)document.Operations.First().Operation.ExtensionData["x-code-samples"]).Count);
        }
Ejemplo n.º 5
0
        public async Task When_SwaggerResponseAttribute_is_on_class_then_it_is_applied_to_all_methods()
        {
            //// Arrange
            var settings  = new WebApiOpenApiDocumentGeneratorSettings();
            var generator = new WebApiOpenApiDocumentGenerator(settings);

            //// Act
            var document = await generator.GenerateForControllerAsync <MyController>();

            var json = document.ToJson();

            //// Assert
            Assert.IsTrue(document.Operations.First().Operation.ActualResponses.ContainsKey("403"));
        }
Ejemplo n.º 6
0
        public async Task When_swagger_spec_is_generated_then_no_route_problem_is_detected()
        {
            // Arrange
            var settings = new WebApiOpenApiDocumentGeneratorSettings
            {
                DefaultUrlTemplate       = "{controller}/{id}",
                AddMissingPathParameters = false,
            };

            // Act
            var generator = new WebApiOpenApiDocumentGenerator(settings);
            var document  = await generator.GenerateForControllerAsync <ProductsController>();

            var swaggerSpecification = document.ToJson();

            // Assert
            Assert.IsNotNull(swaggerSpecification);
        }
        public async Task When_no_IncludedVersions_are_defined_then_all_routes_are_available_and_replaced()
        {
            // Arrange
            var settings  = new WebApiOpenApiDocumentGeneratorSettings();
            var generator = new WebApiOpenApiDocumentGenerator(settings);

            // Act
            var document = await generator.GenerateForControllersAsync(new List <Type>
            {
                typeof(VersionedControllerV1),
                typeof(VersionedControllerV2)
            });

            // Assert
            Assert.AreEqual(4, document.Paths.Count);

            Assert.IsTrue(document.Paths.ContainsKey("/api/v1/foo"));
            Assert.IsTrue(document.Paths.ContainsKey("/api/v1/bar"));

            Assert.IsTrue(document.Paths.ContainsKey("/api/v2/foo"));
            Assert.IsTrue(document.Paths.ContainsKey("/api/v2/bar"));
        }
        public async Task When_IncludedVersions_are_set_then_only_these_are_available_in_document()
        {
            // Arrange
            var settings = new WebApiOpenApiDocumentGeneratorSettings();

            settings.OperationProcessors.TryGet <ApiVersionProcessor>().IncludedVersions = new[] { "1" };

            var generator = new WebApiOpenApiDocumentGenerator(settings);

            // Act
            var document = await generator.GenerateForControllersAsync(new List <Type>
            {
                typeof(VersionedControllerV1),
                typeof(VersionedControllerV2)
            });

            var json = document.ToJson();

            // Assert
            Assert.AreEqual(2, document.Paths.Count);

            Assert.IsTrue(document.Paths.ContainsKey("/api/v1/foo"));
            Assert.IsTrue(document.Paths.ContainsKey("/api/v1/bar"));
        }
Ejemplo n.º 9
0
 /// <summary>Initializes a new instance of the <see cref="OperationParameterProcessor"/> class.</summary>
 /// <param name="settings">The settings.</param>
 public OperationParameterProcessor(WebApiOpenApiDocumentGeneratorSettings settings)
 {
     _settings = settings;
 }
Ejemplo n.º 10
0
 /// <summary>Initializes a new instance of the <see cref="OperationParameterProcessor"/> class.</summary>
 /// <param name="settings">The settings.</param>
 public OperationResponseProcessor(WebApiOpenApiDocumentGeneratorSettings settings)
     : base(settings)
 {
     _settings = settings;
 }