Exemplo n.º 1
0
        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>()));
        }
Exemplo n.º 2
0
        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++]);
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 4
0
        public void Setup_IgnoresAcceptHeaderHavingWildCardMediaAndSubMediaTypes()
        {
            // Arrange
            var mvcOptions = new MvcOptions();
            var setup      = new MvcOptionsSetup();

            // Act
            setup.Configure(mvcOptions);

            // Assert
            Assert.False(mvcOptions.RespectBrowserAcceptHeader);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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]);
        }
Exemplo n.º 9
0
        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());
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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]);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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]);
        }
Exemplo n.º 16
0
        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");
        }
Exemplo n.º 17
0
        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);
            }
        }