//[TestMethod] public void When_route_is_on_inherited_parent_class_then_it_is_used_for_swagger_generation() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController <MyController>(); //// Assert Assert.AreEqual("api/My/Foo", service.Operations.First().Path); }
public void When_accept_verbs_attribute_with_put_is_used_then_http_method_is_correct() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController<TestController>(); var operation = service.Operations.First(o => o.Operation.OperationId == "AddPut"); //// Assert Assert.AreEqual(SwaggerOperationMethod.Put, operation.HttpMethod); }
public void When_accept_verbs_attribute_with_put_is_used_then_http_method_is_correct() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController <TestController>(); var operation = service.Operations.First(o => o.Operation.OperationId == "AddPut"); //// Assert Assert.AreEqual(SwaggerOperationMethod.Put, operation.HttpMethod); }
public void When_parameter_is_complex_and_has_FromUri_then_it_is_a_query_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController <TestController>(); var operation = service.Operations.Single(o => o.Operation.OperationId == "Test_WithFromUriAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Query, operation.Parameters[0].Kind); }
public void When_parameter_is_complex_and_has_FromBody_then_it_is_a_body_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController<TestController>(); var operation = service.Operations.Single(o => o.Operation.OperationId == "WithFromBodyAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Body, operation.Parameters[0].Kind); }
public void When_SwaggerOperation_attribute_is_available_then_operation_id_is_correct() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiAssemblyToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController <OperationIdController>(); //// Assert Assert.AreEqual("MyFoo", service.Operations.First(o => o.Path == "/Foo").Operation.OperationId); Assert.AreEqual("OperationId_Bar", service.Operations.First(o => o.Path == "/Bar").Operation.OperationId); }
public void When_parameter_is_primitive_then_it_is_a_query_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController<TestController>(); var operation = service.Operations.Single(o => o.Operation.OperationId == "WithoutAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Query, operation.Parameters[0].Kind); }
public void When_web_api_path_has_constraints_then_they_are_removed_in_the_swagger_spec() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController(typeof(ConstrainedRoutePathController)); //// Assert var path = service.Paths.First().Key; Assert.AreEqual("/{id}", path); }
public void When_method_has_overload_then_operation_ids_are_still_unique() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiAssemblyToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController <OperationIdController>(); //// Assert var allIds = service.Operations.Select(o => o.Operation.OperationId).ToArray(); Assert.AreEqual(4, allIds.Distinct().Count()); }
public void When_parameter_is_complex_then_it_is_a_body_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController <TestController>(); var operation = service.Operations.Single(o => o.Operation.OperationId == "WithoutAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Body, operation.Parameters[0].Kind); Assert.AreEqual("data", operation.Parameters[0].Name); }
public void When_action_has_file_parameter_then_Stream_is_generated_in_CSharp_code() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); var service = generator.GenerateForController <FileUploadController>(); //// Act var codeGen = new SwaggerToCSharpClientGenerator(service, new SwaggerToCSharpClientGeneratorSettings()); var code = codeGen.GenerateFile(); //// Assert Assert.IsTrue(code.Contains("FileParameter file")); Assert.IsTrue(code.Contains("var content_ = new MultipartFormDataContent();")); Assert.IsTrue(code.Contains("content_.Add(new StreamContent(file.Data), \"file\"")); }
public void When_controller_has_RoutePrefix_then_paths_are_correct() { //// Arrange var swaggerGen = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var swagger = swaggerGen.GenerateForController <PersonsController>(); //// Assert Assert.IsNotNull(swagger.Paths["/api/Persons"][SwaggerOperationMethod.Get]); Assert.IsNotNull(swagger.Paths["/api/Persons/{id}"][SwaggerOperationMethod.Get]); Assert.IsNotNull(swagger.Paths["/api/Persons"][SwaggerOperationMethod.Post]); Assert.IsNotNull(swagger.Paths["/api/Persons/{id}"][SwaggerOperationMethod.Put]); Assert.IsNotNull(swagger.Paths["/api/Persons/{id}"][SwaggerOperationMethod.Delete]); }
public void When_class_has_RouteAttribute_with_placeholders_then_they_are_correctly_replaced() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController(typeof(AccountController)); //// Assert Assert.IsTrue(service.Paths.ContainsKey("/account/Get")); Assert.IsTrue(service.Paths.ContainsKey("/account/GetAll")); Assert.IsTrue(service.Paths.ContainsKey("/account/Post")); Assert.IsTrue(service.Paths.ContainsKey("/account/Verify")); Assert.IsTrue(service.Paths.ContainsKey("/account/Confirm")); }
public void When_parameter_is_primitive_and_has_FromBody_then_it_is_a_path_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var service = generator.GenerateForController <TestController>(); var operation = service.Operations.Single(o => o.Operation.OperationId == "Test_WithFromBodyAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Path, operation.ActualParameters[0].Kind); // TODO: What is correct? }
public void When_parameter_is_primitive_and_has_FromBody_then_it_is_a_body_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var document = generator.GenerateForController<TestController>(); var operation = document.Operations.Single(o => o.Operation.OperationId == "Test_WithFromBodyAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Body, operation.ActualParameters[0].Kind); }
public void When_parameter_is_primitive_and_has_FromUri_then_it_is_a_query_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var document = generator.GenerateForController <TestController>(); var operation = document.Operations.Single(o => o.Operation.OperationId == "Test_WithFromUriAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Query, operation.ActualParameters[0].Kind); }
public void When_parameter_is_primitive_and_has_FromBody_then_it_is_a_path_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var service = generator.GenerateForController<TestController>(); var operation = service.Operations.Single(o => o.Operation.OperationId == "WithFromBodyAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Path, operation.Parameters[0].Kind); // TODO: What is correct? }
public void When_parameter_is_from_uri_and_has_file_then_two_params_and_consumes_is_correct() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController(typeof(FromUriFileParameterController)); //// Assert var operation = service.Paths["/upload"][SwaggerOperationMethod.Post]; Assert.AreEqual(JsonObjectType.File, operation.ActualParameters.Single(p => p.Name == "formFile").Type); Assert.IsTrue(operation.ActualParameters.Any(p => p.Name == "formFile")); Assert.IsTrue(operation.ActualParameters.Any(p => p.Name == "CustomLocationToSave")); Assert.AreEqual("multipart/form-data", operation.Consumes[0]); }
public void When_parameter_is_complex_then_it_is_a_body_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var document = generator.GenerateForController <TestController>(); var operation = document.Operations.Single(o => o.Operation.OperationId == "Test_WithoutAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Body, operation.ActualParameters[0].Kind); Assert.AreEqual("data", operation.ActualParameters[0].Name); }
public void When_parameter_is_file_collection_then_type_is_correct_and_collection_format_is_multi() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController(typeof(FileCollectionController)); //// Assert var operation = service.Paths["/upload"][SwaggerOperationMethod.Post]; var parameter = operation.ActualParameters.Single(p => p.Name == "files"); Assert.AreEqual(JsonObjectType.File, parameter.Type); Assert.AreEqual(SwaggerParameterCollectionFormat.Multi, parameter.CollectionFormat); Assert.AreEqual("multipart/form-data", operation.Consumes[0]); }
public void When_two_methods_have_same_name_then_generated_id_is_still_different() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); var document = generator.GenerateForController<PointController>(); var codeGenerator = new SwaggerToTypeScriptClientGenerator(document, new SwaggerToTypeScriptClientGeneratorSettings { OperationGenerationMode = OperationGenerationMode.MultipleClientsFromOperationId }); //// Act var code = codeGenerator.GenerateFile(); //// Assert Assert.IsTrue(code.Contains(" get(")); Assert.IsTrue(code.Contains(" getAll(")); }
public void When_two_methods_have_same_name_then_generated_id_is_still_different() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); var service = generator.GenerateForController <PointController>(); var codeGenerator = new SwaggerToTypeScriptClientGenerator(service, new SwaggerToTypeScriptClientGeneratorSettings { OperationGenerationMode = OperationGenerationMode.MultipleClientsFromOperationId }); //// Act var code = codeGenerator.GenerateFile(); //// Assert Assert.IsTrue(code.Contains(" get(")); Assert.IsTrue(code.Contains(" get2(")); }
public void When_ConfigurationClass_is_set_then_correct_ctor_is_generated() { //// Arrange var swaggerGenerator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); var service = swaggerGenerator.GenerateForController <FooController>(); var generator = new SwaggerToCSharpClientGenerator(service, new SwaggerToCSharpClientGeneratorSettings { ConfigurationClass = "MyConfig", ClientBaseClass = "MyBaseClass" }); //// Act var code = generator.GenerateFile(); //// Assert Assert.IsTrue(code.Contains("public FooClient(string baseUrl, MyConfig configuration) : base(configuration)")); }
public void When_parameter_is_complex_and_has_FromUri_then_complex_object_properties_are_added() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var service = generator.GenerateForController <TestController>(); var operation = service.Operations.Single(o => o.Operation.OperationId == "Test_WithFromUriAttribute").Operation; //// Assert Assert.AreEqual(SwaggerParameterKind.Query, operation.ActualParameters[0].Kind); Assert.AreEqual(SwaggerParameterKind.Query, operation.ActualParameters[1].Kind); Assert.AreEqual("Foo", operation.ActualParameters[0].Name); Assert.AreEqual("bar", operation.ActualParameters[1].Name); }
public void When_parameter_is_from_uri_then_two_params_are_generated() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); //// Act var service = generator.GenerateForController(typeof(FromUriParameterController)); //// Assert var operation = service.Paths["/upload"][SwaggerOperationMethod.Post]; Assert.AreEqual(JsonObjectType.String, operation.ActualParameters.Single(p => p.Name == "Foo").Type); Assert.AreEqual(JsonObjectType.String, operation.ActualParameters.Single(p => p.Name == "Bar").Type); Assert.IsTrue(operation.ActualParameters.Any(p => p.Name == "Foo")); Assert.IsTrue(operation.ActualParameters.Any(p => p.Name == "Bar")); Assert.IsNull(operation.Consumes); }
public void When_query_parameter_is_enum_array_then_the_enum_is_referenced() { //// Arrange var settings = new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}", DefaultEnumHandling = EnumHandling.String, DefaultPropertyNameHandling = PropertyNameHandling.Default, NullHandling = NullHandling.Swagger }; var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(settings); //// Act var service = generator.GenerateForController <FooController>(); var json = service.ToJson(); //// Assert Assert.IsNotNull(service.Operations.First().Operation.Parameters.First().Schema.SchemaReference); }
public void When_UseHttpRequestMessageCreationMethod_is_set_then_CreateRequestMessage_is_generated() { //// Arrange var swaggerGenerator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings()); var service = swaggerGenerator.GenerateForController <FooController>(); var generator = new SwaggerToCSharpClientGenerator(service, new SwaggerToCSharpClientGeneratorSettings { ConfigurationClass = "MyConfig", ClientBaseClass = "MyBaseClass", UseHttpRequestMessageCreationMethod = true }); //// Act var code = generator.GenerateFile(); //// Assert Assert.IsTrue(code.Contains("var request_ = await CreateHttpRequestMessageAsync(cancellationToken).ConfigureAwait(false);")); }
public void When_parameter_is_array_and_has_FromUri_then_it_is_a_query_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var service = generator.GenerateForController <ControllerWithArrayQueryParameter>(); var json = service.ToJson(); //// Assert var operation = service.Operations.First().Operation; var parameter = operation.ActualParameters.First(); Assert.AreEqual(SwaggerParameterKind.Query, parameter.Kind); Assert.AreEqual(JsonObjectType.String, parameter.Type); Assert.AreEqual(SwaggerParameterCollectionFormat.Multi, parameter.CollectionFormat); }
public void When_parameter_is_complex_and_has_FromUri_then_complex_object_properties_are_added() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var document = generator.GenerateForController<TestController>(); var operation = document.Operations.Single(o => o.Operation.OperationId == "Test_WithFromUriAttribute").Operation; //// Assert Assert.AreEqual("My comment.", operation.Summary); Assert.AreEqual("My remarks.", operation.Description); Assert.AreEqual(SwaggerParameterKind.Query, operation.ActualParameters[0].Kind); Assert.AreEqual(SwaggerParameterKind.Query, operation.ActualParameters[1].Kind); Assert.AreEqual("Foo", operation.ActualParameters[0].Name); Assert.AreEqual("bar", operation.ActualParameters[1].Name); Assert.AreEqual("My comment.", operation.ActualParameters[1].Description); }
public void When_route_has_path_parameter_which_is_not_an_action_parameter_then_it_is_still_added_as_path_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}", AddMissingPathParameters = true }); //// Act var service = generator.GenerateForController <RoutePrefixWithPathsController>(); //// Assert var operation = service.Operations.First().Operation; var parameter = operation.Parameters.Single(p => p.Name == "companyIdentifier"); Assert.AreEqual(2, operation.ActualParameters.Count); Assert.AreEqual(SwaggerParameterKind.Path, parameter.Kind); Assert.AreEqual(JsonObjectType.String, parameter.Type); Assert.AreEqual(JsonFormatStrings.Guid, parameter.Format); }
public void When_parameter_is_array_and_has_FromUri_then_it_is_a_query_parameter() { //// Arrange var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}" }); //// Act var document = generator.GenerateForController<ControllerWithArrayQueryParameter>(); var json = document.ToJson(); //// Assert var operation = document.Operations.First().Operation; var parameter = operation.ActualParameters.First(); Assert.AreEqual(SwaggerParameterKind.Query, parameter.Kind); Assert.AreEqual(JsonObjectType.String, parameter.Type); Assert.AreEqual(SwaggerParameterCollectionFormat.Multi, parameter.CollectionFormat); }
public void When_query_parameter_is_enum_array_then_the_enum_is_referenced() { //// Arrange var settings = new WebApiToSwaggerGeneratorSettings { DefaultUrlTemplate = "api/{controller}/{action}/{id}", DefaultEnumHandling = EnumHandling.String, DefaultPropertyNameHandling = PropertyNameHandling.Default, NullHandling = NullHandling.Swagger }; var generator = new SwaggerGenerators.WebApi.WebApiToSwaggerGenerator(settings); //// Act var document = generator.GenerateForController<FooController>(); var json = document.ToJson(); //// Assert Assert.IsNotNull(document.Operations.First().Operation.Parameters.First().Schema.SchemaReference); }