public void OnProvidersExecuting_AddsModelStateInvalidFilter_IfActionIsAnnotatedWithAttribute() { // Arrange var context = GetContext(typeof(SimpleController)); var options = new TestOptionsManager <ApiBehaviorOptions>(new ApiBehaviorOptions { InvalidModelStateResponseFactory = _ => null, }); var provider = new ApiBehaviorApplicationModelProvider(options, NullLoggerFactory.Instance); // Act provider.OnProvidersExecuting(context); // Assert Assert.Collection( Assert.Single(context.Result.Controllers).Actions.OrderBy(a => a.ActionName), action => { Assert.Contains(typeof(ModelStateInvalidFilter), action.Filters.Select(f => f.GetType())); }, action => { Assert.DoesNotContain(typeof(ModelStateInvalidFilter), action.Filters.Select(f => f.GetType())); }); }
public void OnProvidersExecuting_SkipsAddingFilterToActionIfFeatureIsDisabledUsingOptions() { // Arrange var context = GetContext(typeof(SimpleController)); var options = new TestOptionsManager <ApiBehaviorOptions>(new ApiBehaviorOptions { EnableModelStateInvalidFilter = false, }); var provider = new ApiBehaviorApplicationModelProvider(options, NullLoggerFactory.Instance); // Act provider.OnProvidersExecuting(context); // Assert Assert.Collection( Assert.Single(context.Result.Controllers).Actions.OrderBy(a => a.ActionName), action => { Assert.DoesNotContain(typeof(ModelStateInvalidFilter), action.Filters.Select(f => f.GetType())); }, action => { Assert.DoesNotContain(typeof(ModelStateInvalidFilter), action.Filters.Select(f => f.GetType())); }); }
public void ApiConventionAttributeIsAdded_IfAttributeExistsInAssembly() { // Arrange var controllerType = CreateTestControllerType(); var model = new ControllerModel(controllerType.GetTypeInfo(), Array.Empty <object>()); // Act ApiBehaviorApplicationModelProvider.AddGloballyConfiguredApiConventions(model); // Assert Assert.Collection( model.Filters, filter => Assert.IsType <ApiConventionAttribute>(filter)); }
public void OnProvidersExecuting_ThrowsIfControllerWithAttribute_HasActionsWithoutAttributeRouting() { // Arrange var context = GetContext(typeof(ActionsWithoutAttributeRouting)); var options = new TestOptionsManager <ApiBehaviorOptions>(new ApiBehaviorOptions { InvalidModelStateResponseFactory = _ => null, }); var provider = new ApiBehaviorApplicationModelProvider(options, NullLoggerFactory.Instance); // Act & Assert var ex = Assert.Throws <InvalidOperationException>(() => provider.OnProvidersExecuting(context)); Assert.Equal( "Action methods on controllers annotated with ApiControllerAttribute must have an attribute route.", ex.Message); }
public void OnProvidersExecuting_DoesNotAddModelStateInvalidFilterToController_IfFeatureIsDisabledViaOptions() { // Arrange var context = GetContext(typeof(TestApiController)); var options = new TestOptionsManager <ApiBehaviorOptions>(new ApiBehaviorOptions { EnableModelStateInvalidFilter = false, }); var provider = new ApiBehaviorApplicationModelProvider(options, NullLoggerFactory.Instance); // Act provider.OnProvidersExecuting(context); // Assert var controllerModel = Assert.Single(context.Result.Controllers); Assert.DoesNotContain(typeof(ModelStateInvalidFilter), controllerModel.Filters.Select(f => f.GetType())); }
public void OnProvidersExecuting_AddsModelStateInvalidFilter_IfTypeIsAnnotatedWithAttribute() { // Arrange var context = GetContext(typeof(TestApiController)); var options = new TestOptionsManager <ApiBehaviorOptions>(new ApiBehaviorOptions { InvalidModelStateResponseFactory = _ => null, }); var provider = new ApiBehaviorApplicationModelProvider(options, NullLoggerFactory.Instance); // Act provider.OnProvidersExecuting(context); // Assert var actionModel = Assert.Single(Assert.Single(context.Result.Controllers).Actions); Assert.IsType <ModelStateInvalidFilter>(actionModel.Filters.Last()); }
public void ApiConventionAttributeIsNotAdded_IfModelAlreadyHasAttribute() { // Arrange var attribute = new ApiConventionAttribute(typeof(DefaultApiConventions)); var controllerType = CreateTestControllerType(); var model = new ControllerModel(controllerType.GetTypeInfo(), new[] { attribute }) { Filters = { attribute, }, }; // Act ApiBehaviorApplicationModelProvider.AddGloballyConfiguredApiConventions(model); // Assert Assert.Collection( model.Filters, filter => Assert.Same(attribute, filter)); }