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\"")); }
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); }
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); }
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")); }
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")); }
/// <summary>Initializes a new instance of the <see cref="OperationParameterProcessor"/> class.</summary> /// <param name="settings">The settings.</param> public OperationParameterProcessor(WebApiOpenApiDocumentGeneratorSettings settings) { _settings = settings; }
/// <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; }