private static ControllerActionInvoker GetControllerActionInvoker( string input, Type parameterType, IInputFormatter selectedFormatter, string contentType) { var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); setup.Configure(mvcOptions); var accessor = new Mock <IOptions <MvcOptions> >(); accessor.SetupGet(a => a.Options) .Returns(mvcOptions); var validatorProvider = new DefaultModelValidatorProviderProvider( accessor.Object, Mock.Of <ITypeActivator>(), Mock.Of <IServiceProvider>()); Func <object, int> method = x => 1; var actionDescriptor = new ControllerActionDescriptor { MethodInfo = method.Method, Parameters = new List <ParameterDescriptor> { new ParameterDescriptor { BinderMetadata = new FromBodyAttribute(), Name = "foo", ParameterType = parameterType, } } }; var metadataProvider = new EmptyModelMetadataProvider(); var actionContext = GetActionContext( Encodings.UTF8EncodingWithoutBOM.GetBytes(input), actionDescriptor, contentType); var inputFormatterSelector = new Mock <IInputFormatterSelector>(); inputFormatterSelector.Setup(a => a.SelectFormatter(It.IsAny <InputFormatterContext>())) .Returns(selectedFormatter); var bindingContext = new ActionBindingContext(actionContext, metadataProvider, Mock.Of <IModelBinder>(), Mock.Of <IValueProvider>(), inputFormatterSelector.Object, new CompositeModelValidatorProvider(validatorProvider)); var actionBindingContextProvider = new Mock <IActionBindingContextProvider>(); actionBindingContextProvider.Setup(p => p.GetActionBindingContextAsync(It.IsAny <ActionContext>())) .Returns(Task.FromResult(bindingContext)); var inputFormattersProvider = new Mock <IInputFormattersProvider>(); inputFormattersProvider.SetupGet(o => o.InputFormatters) .Returns(new List <IInputFormatter>()); return(new ControllerActionInvoker(actionContext, Mock.Of <INestedProviderManager <FilterProviderContext> >(), Mock.Of <IControllerFactory>(), actionDescriptor, inputFormattersProvider.Object, Mock.Of <IControllerActionArgumentBinder>())); }
public void Setup_SetsUpModelBinders() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert var i = 0; Assert.Equal(13, mvcOptions.ModelBinders.Count); Assert.IsType(typeof(BinderTypeBasedModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(ServicesModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(BodyModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(HeaderModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(TypeConverterModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(TypeMatchModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(CancellationTokenModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(ByteArrayModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(FormFileModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(FormCollectionModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(GenericModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(MutableObjectModelBinder), mvcOptions.ModelBinders[i++]); Assert.IsType(typeof(ComplexModelDtoModelBinder), mvcOptions.ModelBinders[i++]); }
public void Setup_SetsUpExcludeFromValidationDelegates() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(8, mvcOptions.ValidationExcludeFilters.Count); var i = 0; // Verify if the delegates registered by default exclude the given types. Assert.IsType(typeof(SimpleTypesExcludeFilter), mvcOptions.ValidationExcludeFilters[i++]); Assert.IsType(typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[i]); var xObjectFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[i++]); Assert.Equal(xObjectFilter.ExcludedType, typeof(XObject)); Assert.IsType(typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[i]); var typeFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[i++]); Assert.Equal(typeFilter.ExcludedType, typeof(Type)); Assert.IsType(typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[i]); var jTokenFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[i++]); Assert.Equal(jTokenFilter.ExcludedType, typeof(JToken)); Assert.IsType(typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[i]); var cancellationTokenFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[i++]); Assert.Equal(cancellationTokenFilter.ExcludedType, typeof(System.Threading.CancellationToken)); Assert.IsType(typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[i]); var formFileFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[i++]); Assert.Equal(formFileFilter.ExcludedType, typeof(Http.IFormFile)); Assert.IsType( typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[i]); var formCollectionFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[i++]); Assert.Equal(formCollectionFilter.ExcludedType, typeof(Http.IFormCollection)); Assert.IsType(typeof(DefaultTypeNameBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[i]); var xmlNodeFilter = Assert.IsType <DefaultTypeNameBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[i++]); Assert.Equal(xmlNodeFilter.ExcludedTypeName, "System.Xml.XmlNode"); }
public void Setup_IgnoresAcceptHeaderHavingWildCardMediaAndSubMediaTypes() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.False(mvcOptions.RespectBrowserAcceptHeader); }
public void Setup_SetsUpViewEngines() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(1, mvcOptions.ViewEngines.Count); Assert.Equal(typeof(RazorViewEngine), mvcOptions.ViewEngines[0].OptionType); }
public void Setup_SetsUpInputFormatters() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(1, mvcOptions.InputFormatters.Count); Assert.IsType <JsonInputFormatter>(mvcOptions.InputFormatters[0].Instance); }
public void Setup_SetsUpModelValidatorProviders() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(2, mvcOptions.ModelValidatorProviders.Count); Assert.IsType <DataAnnotationsModelValidatorProvider>(mvcOptions.ModelValidatorProviders[0].Instance); Assert.IsType <DataMemberModelValidatorProvider>(mvcOptions.ModelValidatorProviders[1].Instance); }
public void Setup_SetsUpClientModelValidatorProviders() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(2, mvcOptions.ClientModelValidatorProviders.Count); Assert.IsType <DefaultClientModelValidatorProvider>(mvcOptions.ClientModelValidatorProviders[0]); Assert.IsType <DataAnnotationsClientModelValidatorProvider>(mvcOptions.ClientModelValidatorProviders[1]); }
private static IServiceProvider GetServiceProvider() { var optionsSetup = new MvcOptionsSetup(); var options = new MvcOptions(); optionsSetup.Configure(options); var optionsAccessor = new Mock <IOptions <MvcOptions> >(); optionsAccessor.SetupGet(o => o.Options).Returns(options); var serviceCollection = new ServiceCollection(); serviceCollection.AddInstance(optionsAccessor.Object); return(serviceCollection.BuildServiceProvider()); }
public void Setup_SetsUpOutputFormatters() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(3, mvcOptions.OutputFormatters.Count); Assert.IsType <HttpNoContentOutputFormatter>(mvcOptions.OutputFormatters[0].Instance); Assert.IsType <StringOutputFormatter>(mvcOptions.OutputFormatters[1].Instance); Assert.IsType <JsonOutputFormatter>(mvcOptions.OutputFormatters[2].Instance); }
public void Setup_SetsUpOutputFormatters() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(4, mvcOptions.OutputFormatters.Count); Assert.IsType <HttpNoContentOutputFormatter>(mvcOptions.OutputFormatters[0].Instance); Assert.IsType <TextPlainFormatter>(mvcOptions.OutputFormatters[1].Instance); Assert.IsType <JsonOutputFormatter>(mvcOptions.OutputFormatters[2].Instance); Assert.IsType <XmlDataContractSerializerOutputFormatter>(mvcOptions.OutputFormatters[3].Instance); }
public void Setup_SetsUpValueProviders() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert var valueProviders = mvcOptions.ValueProviderFactories; Assert.Equal(3, valueProviders.Count); Assert.IsType <RouteValueValueProviderFactory>(valueProviders[0].Instance); Assert.IsType <QueryStringValueProviderFactory>(valueProviders[1].Instance); Assert.IsType <FormValueProviderFactory>(valueProviders[2].Instance); }
public void Setup_SetsUpInputFormatters() { // Arrange var mvcOptions = new MvcOptions(); var setup1 = new CoreMvcOptionsSetup(); var setup2 = new MvcOptionsSetup(); var setup3 = new JsonMvcOptionsSetup(new OptionsManager <MvcJsonOptions>( Enumerable.Empty <IConfigureOptions <MvcJsonOptions> >())); // Act setup1.Configure(mvcOptions); setup2.Configure(mvcOptions); setup3.Configure(mvcOptions); // Assert Assert.Equal(2, mvcOptions.InputFormatters.Count); Assert.IsType <JsonInputFormatter>(mvcOptions.InputFormatters[0]); Assert.IsType <JsonPatchInputFormatter>(mvcOptions.InputFormatters[1]); }
public void Setup_SetsUpModelBinders() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(8, mvcOptions.ModelBinders.Count); Assert.Equal(typeof(BodyModelBinder), mvcOptions.ModelBinders[0].OptionType); Assert.Equal(typeof(TypeConverterModelBinder), mvcOptions.ModelBinders[1].OptionType); Assert.Equal(typeof(TypeMatchModelBinder), mvcOptions.ModelBinders[2].OptionType); Assert.Equal(typeof(CancellationTokenModelBinder), mvcOptions.ModelBinders[3].OptionType); Assert.Equal(typeof(ByteArrayModelBinder), mvcOptions.ModelBinders[4].OptionType); Assert.Equal(typeof(GenericModelBinder), mvcOptions.ModelBinders[5].OptionType); Assert.Equal(typeof(MutableObjectModelBinder), mvcOptions.ModelBinders[6].OptionType); Assert.Equal(typeof(ComplexModelDtoModelBinder), mvcOptions.ModelBinders[7].OptionType); }
public void Setup_SetsUpOutputFormatters() { // Arrange var mvcOptions = new MvcOptions(); var setup1 = new CoreMvcOptionsSetup(); var setup2 = new MvcOptionsSetup(); var setup3 = new JsonMvcOptionsSetup(new OptionsManager <MvcJsonOptions>( Enumerable.Empty <IConfigureOptions <MvcJsonOptions> >())); // Act setup1.Configure(mvcOptions); setup2.Configure(mvcOptions); setup3.Configure(mvcOptions); // Assert Assert.Equal(4, mvcOptions.OutputFormatters.Count); Assert.IsType <HttpNoContentOutputFormatter>(mvcOptions.OutputFormatters[0]); Assert.IsType <StringOutputFormatter>(mvcOptions.OutputFormatters[1]); Assert.IsType <StreamOutputFormatter>(mvcOptions.OutputFormatters[2]); Assert.IsType <JsonOutputFormatter>(mvcOptions.OutputFormatters[3]); }
public void Setup_SetsUpExcludeFromValidationDelegates() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert Assert.Equal(5, mvcOptions.ValidationExcludeFilters.Count); // Verify if the delegates registered by default exclude the given types. Assert.Equal(typeof(SimpleTypesExcludeFilter), mvcOptions.ValidationExcludeFilters[0].OptionType); Assert.Equal(typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[1].OptionType); var xObjectFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[1].Instance); Assert.Equal(xObjectFilter.ExcludedType, typeof(XObject)); Assert.Equal(typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[2].OptionType); var typeFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[2].Instance); Assert.Equal(typeFilter.ExcludedType, typeof(Type)); Assert.Equal(typeof(DefaultTypeBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[3].OptionType); var jTokenFilter = Assert.IsType <DefaultTypeBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[3].Instance); Assert.Equal(jTokenFilter.ExcludedType, typeof(JToken)); Assert.Equal(typeof(DefaultTypeNameBasedExcludeFilter), mvcOptions.ValidationExcludeFilters[4].OptionType); var xmlNodeFilter = Assert.IsType <DefaultTypeNameBasedExcludeFilter>(mvcOptions.ValidationExcludeFilters[4].Instance); Assert.Equal(xmlNodeFilter.ExcludedTypeName, "System.Xml.XmlNode"); }
public void Setup_JsonFormattersUseSerializerSettings() { // Arrange var mvcOptions = new MvcOptions(); var setup = new MvcOptionsSetup(); // Act setup.Configure(mvcOptions); // Assert var jsonInputFormatters = mvcOptions.InputFormatters.OfType <JsonInputFormatter>(); foreach (var jsonInputFormatter in jsonInputFormatters) { Assert.Same(mvcOptions.SerializerSettings, jsonInputFormatter.SerializerSettings); } var jsonOuputFormatters = mvcOptions.OutputFormatters.OfType <JsonOutputFormatter>(); foreach (var jsonOuputFormatter in jsonOuputFormatters) { Assert.Same(mvcOptions.SerializerSettings, jsonOuputFormatter.SerializerSettings); } }