public async Task When_controllertarget_aspnet_and_multiple_controllers_then_only_single_custom_fromheader_generated() { //// Arrange var document = await GetSwaggerDocument(); var settings = new SwaggerToCSharpControllerGeneratorSettings { ControllerTarget = CSharpControllerTarget.AspNet, ControllerStyle = CSharpControllerStyle.Abstract, OperationNameGenerator = new MultipleClientsFromFirstTagAndPathSegmentsOperationNameGenerator() }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert var fromHeaderCustomAttributeCount = Regex.Matches(code, "public class FromHeaderAttribute :").Count; Assert.Equal(1, fromHeaderCustomAttributeCount); var fromHeaderCustomBindingCount = Regex.Matches(code, "public class FromHeaderBinding :").Count; Assert.Equal(1, fromHeaderCustomBindingCount); Assert.Contains("[FromHeader", code); Assert.DoesNotContain("[Microsoft.AspNetCore.Mvc.FromHeader", code); }
/// <summary>Initializes a new instance of the <see cref="CSharpControllerTemplateModel" /> class.</summary> /// <param name="controllerName">Name of the controller.</param> /// <param name="operations">The operations.</param> /// <param name="document">The document.</param> /// <param name="settings">The settings.</param> public CSharpControllerTemplateModel( string controllerName, IEnumerable <CSharpOperationModel> operations, SwaggerDocument document, SwaggerToCSharpControllerGeneratorSettings settings) : base(controllerName, settings) { _document = document; _settings = settings; Class = controllerName; Operations = operations; BaseClass = _settings.ControllerBaseClass?.Replace("{controller}", controllerName); }
public async Task When_controller_has_operation_with_complextype_then_partialcontroller_is_generated_with_frombody_attribute() { //// Arrange var document = await GetSwaggerDocument(); var settings = new SwaggerToCSharpControllerGeneratorSettings(); //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.Contains("partial class TestController", code); Assert.Contains($"Complex([Microsoft.AspNetCore.Mvc.FromBody] ComplexType complexType)", code); Assert.Contains("Foo(string test, bool? test2)", code); Assert.Contains("Bar()", code); }
public async Task When_the_generation_of_dto_classes_are_disabled_then_file_is_generated_without_any_dto_clasess() { //// Arrange var document = await GetSwaggerDocument(); var settings = new SwaggerToCSharpControllerGeneratorSettings { GenerateDtoTypes = false }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.DoesNotContain("public partial class ComplexType", code); Assert.DoesNotContain("public partial class ComplexTypeResponse", code); }
public async Task When_controllerroutenamingstrategy_none_then_route_attribute_name_not_specified() { //// Arrange var document = await GetSwaggerDocument(); var settings = new SwaggerToCSharpControllerGeneratorSettings { RouteNamingStrategy = CSharpControllerRouteNamingStrategy.None }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.Contains("Route(\"Foo\")", code); Assert.Contains("Route(\"Bar\")", code); }
public async Task When_controller_has_operation_with_header_parameter_then_partialcontroller_is_generated_with_fromheader_attribute() { //// Arrange var document = await GetSwaggerDocument(); var settings = new SwaggerToCSharpControllerGeneratorSettings { ControllerTarget = CSharpControllerTarget.AspNet }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.Contains("partial class TestController", code); Assert.Contains($"HeaderParam([FromHeader] string comesFromHeader)", code); }
public async Task When_controllerroutenamingstrategy_operationid_then_route_attribute_name_specified() { //// Arrange var swaggerGen = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); var document = await swaggerGen.GenerateForControllerAsync <TestController>(); var settings = new SwaggerToCSharpControllerGeneratorSettings { RouteNamingStrategy = CSharpControllerRouteNamingStrategy.OperationId }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.Contains("Route(\"Foo\", Name = \"Test_Foo\")", code); Assert.Contains("Route(\"Bar\", Name = \"Test_Bar\")", code); }
public async Task When_controllertarget_aspnetcore_then_use_builtin_fromheader() { //// Arrange var document = await GetSwaggerDocument(); var settings = new SwaggerToCSharpControllerGeneratorSettings { ControllerTarget = CSharpControllerTarget.AspNetCore }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.Contains("[Microsoft.AspNetCore.Mvc.FromHeader", code); Assert.DoesNotContain("[FromHeader", code); Assert.DoesNotContain("public class FromHeaderBinding :", code); Assert.DoesNotContain("public class FromHeaderAttribute :", code); }
public async Task When_controller_has_operation_with_complextype_then_partialcontroller_is_generated_with_frombody_attribute() { //// Arrange var swaggerGen = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); var document = await swaggerGen.GenerateForControllerAsync <TestController>(); var settings = new SwaggerToCSharpControllerGeneratorSettings { AspNetNamespace = "MyCustomNameSpace" }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.IsTrue(code.Contains("partial class TestController")); Assert.IsTrue(code.Contains($"Complex([{settings.AspNetNamespace}.FromBody] ComplexType complexType)")); Assert.IsTrue(code.Contains("Foo(string test, bool test2)")); Assert.IsTrue(code.Contains("Bar()")); }
public async Task When_controller_has_operation_with_complextype_then_abstractcontroller_is_generated_with_frombody_attribute() { //// Arrange var swaggerGen = new WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); var document = await swaggerGen.GenerateForControllerAsync <TestController>(); var settings = new SwaggerToCSharpControllerGeneratorSettings { ControllerStyle = CSharpControllerStyle.Abstract, }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.Contains("abstract class TestController", code); Assert.Contains($"Complex([Microsoft.AspNetCore.Mvc.FromBody] ComplexType complexType)", code); Assert.Contains("Foo(string test, bool test2)", code); Assert.Contains("Bar()", code); }
public async Task When_controller_has_operations_with_required_parameters_then_partialcontroller_is_generated_with_bindrequired_attribute() { //// Arrange var document = await GetSwaggerDocument(); var settings = new SwaggerToCSharpControllerGeneratorSettings { GenerateModelValidationAttributes = true, }; //// Act var codeGen = new SwaggerToCSharpControllerGenerator(document, settings); var code = codeGen.GenerateFile(); //// Assert Assert.Contains("partial class TestController", code); Assert.Contains($"Complex([Microsoft.AspNetCore.Mvc.FromBody] ComplexType complexType)", code); Assert.Contains($"ComplexRequired([Microsoft.AspNetCore.Mvc.FromBody] [Microsoft.AspNetCore.Mvc.ModelBinding.BindRequired] ComplexType complexType)", code); Assert.Contains($"Foo(string test, bool? test2)", code); Assert.Contains($"FooRequired([Microsoft.AspNetCore.Mvc.ModelBinding.BindRequired] string test, [Microsoft.AspNetCore.Mvc.ModelBinding.BindRequired] bool test2)", code); Assert.Contains("Bar()", code); }
/// <summary>Initializes a new instance of the <see cref="CSharpControllerOperationModel" /> class.</summary> /// <param name="operation">The operation.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The generator.</param> /// <param name="resolver">The resolver.</param> public CSharpControllerOperationModel(SwaggerOperation operation, SwaggerToCSharpControllerGeneratorSettings settings, SwaggerToCSharpControllerGenerator generator, CSharpTypeResolver resolver) : base(operation, settings, generator, resolver) { _settings = settings; }