public ControllerActionInvoker(
            [NotNull] ActionContext actionContext,
            [NotNull] INestedProviderManager <FilterProviderContext> filterProvider,
            [NotNull] IControllerFactory controllerFactory,
            [NotNull] ControllerActionDescriptor descriptor,
            [NotNull] IInputFormattersProvider inputFormatterProvider,
            [NotNull] IControllerActionArgumentBinder controllerActionArgumentBinder,
            [NotNull] IModelBinderProvider modelBinderProvider,
            [NotNull] IModelValidatorProviderProvider modelValidatorProviderProvider,
            [NotNull] IValueProviderFactoryProvider valueProviderFactoryProvider,
            [NotNull] IScopedInstance <ActionBindingContext> actionBindingContextAccessor)
            : base(
                actionContext,
                filterProvider,
                inputFormatterProvider,
                modelBinderProvider,
                modelValidatorProviderProvider,
                valueProviderFactoryProvider,
                actionBindingContextAccessor)
        {
            _descriptor        = descriptor;
            _controllerFactory = controllerFactory;
            _argumentBinder    = controllerActionArgumentBinder;

            if (descriptor.MethodInfo == null)
            {
                throw new ArgumentException(
                          Resources.FormatPropertyOfTypeCannotBeNull("MethodInfo",
                                                                     typeof(ControllerActionDescriptor)),
                          "descriptor");
            }
        }
Example #2
0
    public static ParameterBinder GetParameterBinder(
        IModelMetadataProvider metadataProvider,
        IModelBinderProvider binderProvider = null,
        MvcOptions mvcOptions          = null,
        ObjectModelValidator validator = null)
    {
        var services = GetServices(metadataProvider, mvcOptions: mvcOptions);
        var options  = services.GetRequiredService <IOptions <MvcOptions> >();

        if (binderProvider != null)
        {
            options.Value.ModelBinderProviders.Insert(0, binderProvider);
        }

        validator ??= new DefaultObjectValidator(
            metadataProvider,
            new[] { new CompositeModelValidatorProvider(GetModelValidatorProviders(options)) },
            options.Value);

        return(new ParameterBinder(
                   metadataProvider,
                   new ModelBinderFactory(metadataProvider, options, services),
                   validator,
                   options,
                   NullLoggerFactory.Instance));
    }
Example #3
0
        public void GetBinderDelegatesToResolver()
        {
            // Arrange
            Type         modelType      = typeof(string);
            IModelBinder expectedBinder = new Mock <IModelBinder>().Object;

            Mock <IModelBinderProvider> locatedProvider = new Mock <IModelBinderProvider>();

            locatedProvider.Setup(p => p.GetBinder(modelType))
            .Returns(expectedBinder);

            Mock <IModelBinderProvider> secondProvider = new Mock <IModelBinderProvider>();
            Mock <IModelBinderProvider> thirdProvider  = new Mock <IModelBinderProvider>();

            IModelBinderProvider[] dependencyProviders = new IModelBinderProvider[] { locatedProvider.Object, secondProvider.Object };
            IModelBinderProvider[] collectionProviders = new IModelBinderProvider[] { thirdProvider.Object };

            Mock <IDependencyResolver> resolver = new Mock <IDependencyResolver>();

            resolver.Setup(r => r.GetServices(typeof(IModelBinderProvider))).Returns(dependencyProviders);

            ModelBinderProviderCollection providers = new ModelBinderProviderCollection(collectionProviders, resolver.Object);

            // Act
            IModelBinder returnedBinder = providers.GetBinder(modelType);

            // Assert
            Assert.Same(expectedBinder, returnedBinder);
        }
Example #4
0
        public void ModelBinderProviderCollectionCombinedItemsDelegatesToResolver()
        {
            // Arrange
            var firstProvider       = new Mock <IModelBinderProvider>();
            var secondProvider      = new Mock <IModelBinderProvider>();
            var thirdProvider       = new Mock <IModelBinderProvider>();
            var dependencyProviders = new IModelBinderProvider[]
            {
                firstProvider.Object,
                secondProvider.Object
            };
            var collectionProviders = new IModelBinderProvider[] { thirdProvider.Object };
            var expectedProviders   = new IModelBinderProvider[]
            {
                firstProvider.Object,
                secondProvider.Object,
                thirdProvider.Object
            };

            var resolver = new Mock <IDependencyResolver>();

            resolver
            .Setup(r => r.GetServices(typeof(IModelBinderProvider)))
            .Returns(dependencyProviders);

            var providers = new ModelBinderProviderCollection(collectionProviders, resolver.Object);

            // Act
            IModelBinderProvider[] combined = providers.CombinedItems;

            // Assert
            Assert.Equal(expectedProviders, combined);
        }
Example #5
0
        public static void AddAuthenticatedUserIdAwareBodyModelBinderProvider(this MvcOptions options)
        {
            IModelBinderProvider bodyModelBinderProvider = options.ModelBinderProviders.Single(x => x is BodyModelBinderProvider);
            int index = options.ModelBinderProviders.IndexOf(bodyModelBinderProvider);

            options.ModelBinderProviders.Remove(bodyModelBinderProvider);
            options.ModelBinderProviders.Insert(index, new AuthenticatedUserIdAwareBodyModelBinderProvider(bodyModelBinderProvider));
        }
 public ClaimsMappingModelBinderProvider(IModelBinderProvider decoratedModelBinderProvider,
                                         ICommandClaimsBinderProvider commandClaimsBinderProvider,
                                         BindingSource bindingSource)
 {
     _decoratedModelBinderProvider = decoratedModelBinderProvider;
     _commandClaimsBinderProvider  = commandClaimsBinderProvider;
     _bindingSource = bindingSource;
 }
        /// <summary>
        /// Adds configuration based REST commanding to ASP.Net Core
        /// </summary>
        /// <param name="mvcBuilder">The MVC Builder extended</param>
        /// <param name="configurationBuilder">An action accepting a configuration builder</param>
        /// <returns>The MVC builder</returns>
        public static IMvcBuilder AddAspNetCoreCommanding(this IMvcBuilder mvcBuilder,
                                                          Action <IRestCommandBuilder> configurationBuilder)
        {
            RestCommandBuilder restCommandBuilderInstance = new RestCommandBuilder();

            configurationBuilder(restCommandBuilderInstance);
            restCommandBuilderInstance.SetDefaults();

            // When the user has completed defining their command based API through the builder we compile controllers, using Roslyn, using the definitions
            // that have been supplied
            ISyntaxTreeCompiler         syntaxTreeCompiler         = new SyntaxTreeCompiler(restCommandBuilderInstance.TemplateCompilationReferences);
            IControllerTemplateCompiler controllerTemplateCompiler = new HandlebarsControllerTemplateCompiler(restCommandBuilderInstance.ExternalTemplateProvider);
            IControllerCompiler         controllerCompiler         = new ControllerCompiler(
                controllerTemplateCompiler,
                syntaxTreeCompiler,
                restCommandBuilderInstance.ConstructedCodeLogger,
                true);
            Assembly assembly = controllerCompiler.Compile(
                restCommandBuilderInstance.ControllerBuilder.Controllers.Values.ToArray(),
                restCommandBuilderInstance.OutputNamespace);

            mvcBuilder.AddApplicationPart(assembly);

            // We pre-compile claim to command mappers for each kind of command in use - these are used by the model binders below
            ICommandClaimsBinderProvider     commandClaimsBinderProvider = restCommandBuilderInstance.ClaimsMappingBuilder.Build(restCommandBuilderInstance.GetRegisteredCommandTypes());
            IReadOnlyCollection <MemberInfo> blacklistedMembers          = restCommandBuilderInstance.GetSecurityPropertyMembers();

            // Here we add model binders that are able to map claims onto commands. These deliberately can write to the SecurityProperty marked attribute
            // of commands as these are very likely to come from claims. Binders are registered for body, path (URI), and query strings.
            // These wrap the appropriate underlying binder so that the actual model binding takes place using the existing built in binders.
            mvcBuilder
            .AddMvcOptions(options =>
            {
                IModelBinderProvider bodyModelBinderProvider =
                    options.ModelBinderProviders.Single(x => x is BodyModelBinderProvider);
                IModelBinderProvider complexTypeModelBinderProvider =
                    options.ModelBinderProviders.Single(x => x is ComplexTypeModelBinderProvider);
                options.ModelBinderProviders.Insert(0,
                                                    new ClaimsMappingModelBinderProvider(complexTypeModelBinderProvider,
                                                                                         commandClaimsBinderProvider, BindingSource.Query));
                options.ModelBinderProviders.Insert(0,
                                                    new ClaimsMappingModelBinderProvider(complexTypeModelBinderProvider,
                                                                                         commandClaimsBinderProvider, BindingSource.Path));
                options.ModelBinderProviders.Insert(0,
                                                    new ClaimsMappingModelBinderProvider(bodyModelBinderProvider, commandClaimsBinderProvider,
                                                                                         BindingSource.Body));
                options.ModelMetadataDetailsProviders.Add(new SecurityPropertyBindingMetadataProvider());
            })
            .AddJsonOptions(options =>
            {
                // Because the binding model metadata is ignored on bodyies we have to customize the
                // serializer and instruct it to ignore the SecurityProperty marked attributes
                options.SerializerSettings.ContractResolver = new JsonSecurityPropertyContractResolver();
            });

            return(mvcBuilder);
        }
        public void IgnoreEmptyModelBindingProvidersCollection(ModelBinderInspector sut, IInspectorContext context, IModelBinderProvider proxy)
        {
            ModelBinderProviders.BinderProviders.Clear();
            context.ProxyFactory.Setup(pf => pf.IsWrapInterfaceEligible<IModelBinderProvider>(It.IsAny<Type>())).Returns(true);
            context.ProxyFactory.Setup(pf => pf.WrapInterface(It.IsAny<IModelBinderProvider>(), It.IsAny<IEnumerable<IAlternateMethod>>(), Enumerable.Empty<object>())).Returns(proxy);

            sut.Setup(context);

            Assert.Empty(ModelBinderProviders.BinderProviders);
        }
        public void UpdateModelBindingProviders(ModelBinderInspector sut, IInspectorContext context, IModelBinderProvider proxy)
        {
            ModelBinderProviders.BinderProviders.Add(new DummyModelBinderProvider());
            context.ProxyFactory.Setup(pf => pf.IsWrapInterfaceEligible<IModelBinderProvider>(It.IsAny<Type>())).Returns(true);
            context.ProxyFactory.Setup(pf => pf.WrapInterface(It.IsAny<IModelBinderProvider>(), It.IsAny<IEnumerable<IAlternateMethod>>(), Enumerable.Empty<object>())).Returns(proxy);

            sut.Setup(context);

            Assert.Contains(proxy, ModelBinderProviders.BinderProviders);
            context.Logger.Verify(l => l.Info(It.IsAny<string>(), It.IsAny<object[]>()));
        }
Example #10
0
        public static void AddStringTrimmingProvider(this MvcOptions option)
        {
            IModelBinderProvider binderToFind =
                option.ModelBinderProviders.FirstOrDefault(x => x.GetType() == typeof(SimpleTypeModelBinderProvider));

            if (binderToFind == null)
            {
                return;
            }

            int index = option.ModelBinderProviders.IndexOf(binderToFind);

            option.ModelBinderProviders.Insert(index, new TrimmingModelBinderProvider());
        }
Example #11
0
 public static ParameterBinder GetParameterBinder(
     MvcOptions options = null,
     IModelBinderProvider binderProvider = null)
 {
     if (options == null)
     {
         var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
         return(GetParameterBinder(metadataProvider, binderProvider));
     }
     else
     {
         var metadataProvider = TestModelMetadataProvider.CreateProvider(options.ModelMetadataDetailsProviders);
         return(GetParameterBinder(metadataProvider, binderProvider, options));
     }
 }
Example #12
0
 public static DefaultControllerArgumentBinder GetArgumentBinder(
     MvcOptions options = null,
     IModelBinderProvider binderProvider = null)
 {
     if (options == null)
     {
         var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider();
         return(GetArgumentBinder(metadataProvider, binderProvider));
     }
     else
     {
         var metadataProvider = TestModelMetadataProvider.CreateProvider(options.ModelMetadataDetailsProviders);
         return(GetArgumentBinder(metadataProvider, binderProvider));
     }
 }
Example #13
0
        public static DefaultControllerArgumentBinder GetArgumentBinder(
            IModelMetadataProvider metadataProvider,
            IModelBinderProvider binderProvider = null)
        {
            var services = GetServices();
            var options  = services.GetRequiredService <IOptions <MvcOptions> >();

            if (binderProvider != null)
            {
                options.Value.ModelBinderProviders.Insert(0, binderProvider);
            }

            return(new DefaultControllerArgumentBinder(
                       metadataProvider,
                       new ModelBinderFactory(metadataProvider, options),
                       GetObjectValidator(metadataProvider, options)));
        }
Example #14
0
        public void Configure(MvcOptions options)
        {
            options.ModelMetadataDetailsProviders.Add(new Validation.ValidationMetadataProvider());


            int bcount = 0;
            IModelBinderProvider res = null, prev = null;

            foreach (var b in options.ModelBinderProviders)
            {
                if (b is SimpleTypeModelBinderProvider || b is FloatingPointTypeModelBinderProvider)
                {
                    res = b;
                    break;
                }
                bcount++;
                prev = b;
            }
            if (res != null)
            {
                options.ModelBinderProviders.Remove(res);
                options.ModelBinderProviders.Insert(bcount, new SimpleTypeModelBinderProviderExt());
                if (prev != null && !(prev is HeaderModelBinderProvider))
                {
                    options.ModelBinderProviders.Remove(prev);
                }
            }
            bcount = 0;
            res    = null;
            foreach (var b in options.ModelBinderProviders)
            {
                if (b is ComplexTypeModelBinderProvider)
                {
                    res = b;
                    break;
                }
                bcount++;
            }
            if (res != null)
            {
                options.ModelBinderProviders.Remove(res);
                options.ModelBinderProviders.Insert(bcount, new TransformationModelBinderProvider(res, new InterfacesModelBinderProvider(serviceProvider.GetService <IDIMeta>())));
                //options.ModelBinderProviders.Insert(bcount, new InterfacesModelBinderProvider());
            }
            options.Filters.Add(typeof(CacheViewPartsFilter));
        }
Example #15
0
        public void ModelBinderProviderCollectionCombinedItemsCaches()
        {
            // Arrange
            var providers = new IModelBinderProvider[]
            {
                new Mock <IModelBinderProvider>(MockBehavior.Strict).Object,
                new Mock <IModelBinderProvider>(MockBehavior.Strict).Object
            };
            var collection = new ModelBinderProviderCollection(providers);

            // Act
            var combined1 = collection.CombinedItems;
            var combined2 = collection.CombinedItems;

            // Assert
            Assert.Equal(providers, combined1);
            Assert.Same(combined1, combined2);
        }
Example #16
0
        public FilterActionInvoker(
            [NotNull] ActionContext actionContext,
            [NotNull] INestedProviderManager <FilterProviderContext> filterProvider,
            [NotNull] IInputFormattersProvider inputFormatterProvider,
            [NotNull] IModelBinderProvider modelBinderProvider,
            [NotNull] IModelValidatorProviderProvider modelValidatorProviderProvider,
            [NotNull] IValueProviderFactoryProvider valueProviderFactoryProvider,
            [NotNull] IScopedInstance <ActionBindingContext> actionBindingContextAccessor)
        {
            ActionContext = actionContext;

            _filterProvider                 = filterProvider;
            _inputFormatterProvider         = inputFormatterProvider;
            _modelBinderProvider            = modelBinderProvider;
            _modelValidatorProviderProvider = modelValidatorProviderProvider;
            _valueProviderFactoryProvider   = valueProviderFactoryProvider;
            _actionBindingContextAccessor   = actionBindingContextAccessor;
        }
        public void ModelBinderProviderCollectionCombinedItemsCaches()
        {
            // Arrange
            var providers = new IModelBinderProvider[] 
            {
                new Mock<IModelBinderProvider>(MockBehavior.Strict).Object, 
                new Mock<IModelBinderProvider>(MockBehavior.Strict).Object
            };
            var collection = new ModelBinderProviderCollection(providers);

            // Act
            var combined1 = collection.CombinedItems;
            var combined2 = collection.CombinedItems;

            // Assert
            Assert.Equal(providers, combined1);
            Assert.Same(combined1, combined2);
        }
Example #18
0
 public ControllerActionInvokerProvider(
     IControllerFactory controllerFactory,
     IInputFormattersProvider inputFormattersProvider,
     INestedProviderManager <FilterProviderContext> filterProvider,
     IControllerActionArgumentBinder argumentBinder,
     IModelBinderProvider modelBinderProvider,
     IModelValidatorProviderProvider modelValidationProviderProvider,
     IValueProviderFactoryProvider valueProviderFactoryProvider,
     IScopedInstance <ActionBindingContext> actionBindingContextAccessor)
 {
     _controllerFactory               = controllerFactory;
     _inputFormattersProvider         = inputFormattersProvider;
     _filterProvider                  = filterProvider;
     _argumentBinder                  = argumentBinder;
     _modelBinderProvider             = modelBinderProvider;
     _modelValidationProviderProvider = modelValidationProviderProvider;
     _valueProviderFactoryProvider    = valueProviderFactoryProvider;
     _actionBindingContextAccessor    = actionBindingContextAccessor;
 }
 public ModuleActionInvokerProvider(
     IModuleFactory moduleFactory,
     IEnumerable<IFilterProvider> filterProviders,
     IInputFormattersProvider inputFormattersProvider,
     IModelBinderProvider modelBinderProvider,
     IModelValidatorProviderProvider modelValidatorProviderProvider,
     IValueProviderFactoryProvider valueProviderFactoryProvider,
     IScopedInstance<ActionBindingContext> actionBindingContextAccessor,
     IServiceProvider serviceProvider)
 {
     _moduleFactory = moduleFactory;
     _filterProviders = filterProviders.OrderBy(p => p.Order).ToList();
     _inputFormattersProvider = inputFormattersProvider;
     _modelBinderProvider = modelBinderProvider;
     _modelValidatorProviderProvider = modelValidatorProviderProvider;
     _valueProviderFactoryProvider = valueProviderFactoryProvider;
     _actionBindingContextAccessor = actionBindingContextAccessor;
     _serviceProvider = serviceProvider;
 }
Example #20
0
        public static ParameterBinder GetParameterBinder(
            IModelMetadataProvider metadataProvider,
            IModelBinderProvider binderProvider = null,
            MvcOptions mvcOptions = null)
        {
            var services = GetServices();
            var options  = mvcOptions != null
                ? Options.Create(mvcOptions)
                : services.GetRequiredService <IOptions <MvcOptions> >();

            if (binderProvider != null)
            {
                options.Value.ModelBinderProviders.Insert(0, binderProvider);
            }

            return(new ParameterBinder(
                       metadataProvider,
                       GetModelBinderFactory(metadataProvider, options),
                       new CompositeModelValidatorProvider(GetModelValidatorProviders(options))));
        }
Example #21
0
        /// <summary> 替换 </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="providers"></param>
        /// <param name="target"></param>
        /// <param name="exist">必须存在</param>
        public static void Replace <T>(this IList <IModelBinderProvider> providers, IModelBinderProvider target, bool exist = true)
            where T : IModelBinderProvider
        {
            var source = providers.FirstOrDefault(t => t is T);

            if (exist && source == null)
            {
                return;
            }
            if (source != null)
            {
                var index = providers.IndexOf(source);
                providers.RemoveAt(index);
                providers.Insert(index, target);
            }
            else
            {
                providers.Add(target);
            }
        }
 public ControllerActionInvokerProvider(
     IControllerFactory controllerFactory,
     IInputFormattersProvider inputFormattersProvider,
     IEnumerable<IFilterProvider> filterProviders,
     IControllerActionArgumentBinder argumentBinder,
     IModelBinderProvider modelBinderProvider,
     IModelValidatorProviderProvider modelValidationProviderProvider,
     IValueProviderFactoryProvider valueProviderFactoryProvider,
     IScopedInstance<ActionBindingContext> actionBindingContextAccessor,
     ITempDataDictionary tempData)
 {
     _controllerFactory = controllerFactory;
     _inputFormattersProvider = inputFormattersProvider;
     _filterProviders = filterProviders.OrderBy(item => item.Order).ToArray();
     _argumentBinder = argumentBinder;
     _modelBinderProvider = modelBinderProvider;
     _modelValidationProviderProvider = modelValidationProviderProvider;
     _valueProviderFactoryProvider = valueProviderFactoryProvider;
     _actionBindingContextAccessor = actionBindingContextAccessor;
     _tempData = tempData;
 }
Example #23
0
 public ControllerActionInvokerProvider(
     IControllerFactory controllerFactory,
     IInputFormattersProvider inputFormattersProvider,
     IEnumerable <IFilterProvider> filterProviders,
     IControllerActionArgumentBinder argumentBinder,
     IModelBinderProvider modelBinderProvider,
     IModelValidatorProviderProvider modelValidationProviderProvider,
     IValueProviderFactoryProvider valueProviderFactoryProvider,
     IScopedInstance <ActionBindingContext> actionBindingContextAccessor,
     ITempDataDictionary tempData)
 {
     _controllerFactory               = controllerFactory;
     _inputFormattersProvider         = inputFormattersProvider;
     _filterProviders                 = filterProviders.OrderBy(item => item.Order).ToArray();
     _argumentBinder                  = argumentBinder;
     _modelBinderProvider             = modelBinderProvider;
     _modelValidationProviderProvider = modelValidationProviderProvider;
     _valueProviderFactoryProvider    = valueProviderFactoryProvider;
     _actionBindingContextAccessor    = actionBindingContextAccessor;
     _tempData = tempData;
 }
        public void ModelBinderProviderCollectionCombinedItemsDelegatesToResolver()
        {
            // Arrange
            var firstProvider = new Mock<IModelBinderProvider>();
            var secondProvider = new Mock<IModelBinderProvider>();
            var thirdProvider = new Mock<IModelBinderProvider>();
            var dependencyProviders = new IModelBinderProvider[] { firstProvider.Object, secondProvider.Object };
            var collectionProviders = new IModelBinderProvider[] { thirdProvider.Object };
            var expectedProviders = new IModelBinderProvider[] { firstProvider.Object, secondProvider.Object, thirdProvider.Object };

            var resolver = new Mock<IDependencyResolver>();
            resolver.Setup(r => r.GetServices(typeof(IModelBinderProvider))).Returns(dependencyProviders);

            var providers = new ModelBinderProviderCollection(collectionProviders, resolver.Object);

            // Act
            IModelBinderProvider[] combined = providers.CombinedItems;

            // Assert
            Assert.Equal(expectedProviders, combined);
        }
        public void UpdateModelBindingProviders(ModelBinderInspector sut, IInspectorContext context, IModelBinderProvider proxy)
        {
            ModelBinderProviders.BinderProviders.Add(new DummyModelBinderProvider());
            context.ProxyFactory.Setup(pf => pf.IsWrapInterfaceEligible <IModelBinderProvider>(It.IsAny <Type>())).Returns(true);
            context.ProxyFactory.Setup(pf => pf.WrapInterface(It.IsAny <IModelBinderProvider>(), It.IsAny <IEnumerable <IAlternateMethod> >(), Enumerable.Empty <object>())).Returns(proxy);

            sut.Setup(context);

            Assert.Contains(proxy, ModelBinderProviders.BinderProviders);
            context.Logger.Verify(l => l.Info(It.IsAny <string>(), It.IsAny <object[]>()));
        }
 public PaginationModelBinderProvider(IModelBinderProvider workerProvider)
 {
     _workerProvider = workerProvider;
 }
 public CustomValidationModelBinderProvider(IModelBinderProvider underlyingModelBinderProvider)
 {
     _underlyingModelBinderProvider = underlyingModelBinderProvider;
 }
Example #28
0
 public SortsModelBinderProvider(IModelBinderProvider workerProvider)
 {
     _workerProvider = workerProvider;
 }
Example #29
0
 public GlimpseBinderProvider(IModelBinderProvider binderProvider, IGlimpseLogger logger)
 {
     BinderProvider = binderProvider;
     Logger = logger;
 }
 public GlimpseBinderProvider(IModelBinderProvider binderProvider)
 {
     BinderProvider = binderProvider;
 }
 public RouteDataComplexTypeModelBinderProvider(IModelBinderProvider complexTypeModelBinderProvider, IHttpContextAccessor httpContextAccessor)
 {
     _httpContextAccessor            = httpContextAccessor;
     _complexTypeModelBinderProvider = complexTypeModelBinderProvider;
 }
        public void GetBinderDelegatesToResolver()
        {
            // Arrange
            Type modelType = typeof(string);
            IModelBinder expectedBinder = new Mock<IModelBinder>().Object;

            Mock<IModelBinderProvider> locatedProvider = new Mock<IModelBinderProvider>();
            locatedProvider.Setup(p => p.GetBinder(modelType))
                .Returns(expectedBinder);

            Mock<IModelBinderProvider> secondProvider = new Mock<IModelBinderProvider>();
            Mock<IModelBinderProvider> thirdProvider = new Mock<IModelBinderProvider>();
            IModelBinderProvider[] dependencyProviders = new IModelBinderProvider[] { locatedProvider.Object, secondProvider.Object };
            IModelBinderProvider[] collectionProviders = new IModelBinderProvider[] { thirdProvider.Object };

            Mock<IDependencyResolver> resolver = new Mock<IDependencyResolver>();
            resolver.Setup(r => r.GetServices(typeof(IModelBinderProvider))).Returns(dependencyProviders);

            ModelBinderProviderCollection providers = new ModelBinderProviderCollection(collectionProviders, resolver.Object);

            // Act
            IModelBinder returnedBinder = providers.GetBinder(modelType);

            // Assert
            Assert.Same(expectedBinder, returnedBinder);
        }
 /// <summary>
 /// Initialise a new instance of <see cref="ExaminationValidationModelBinderProvider"/>.
 /// </summary>
 /// <param name="originalModelBinderProvider">Original Model Binder Provider.</param>
 public ExaminationValidationModelBinderProvider(IModelBinderProvider originalModelBinderProvider)
 {
     _originalModelBinderProvider = originalModelBinderProvider;
 }
        public void IgnoreEmptyModelBindingProvidersCollection(ModelBinderInspector sut, IInspectorContext context, IModelBinderProvider proxy)
        {
            ModelBinderProviders.BinderProviders.Clear();
            context.ProxyFactory.Setup(pf => pf.IsWrapInterfaceEligible <IModelBinderProvider>(It.IsAny <Type>())).Returns(true);
            context.ProxyFactory.Setup(pf => pf.WrapInterface(It.IsAny <IModelBinderProvider>(), It.IsAny <IEnumerable <IAlternateMethod> >(), Enumerable.Empty <object>())).Returns(proxy);

            sut.Setup(context);

            Assert.Empty(ModelBinderProviders.BinderProviders);
        }
 public GlimpseBinderProvider(IModelBinderProvider binderProvider)
 {
     BinderProvider = binderProvider;
 }
 public TestControllerActionInvoker(
     ActionContext actionContext,
     IFilterProvider[] filterProvider,
     MockControllerFactory controllerFactory,
     ControllerActionDescriptor descriptor,
     IInputFormattersProvider inputFormattersProvider,
     IControllerActionArgumentBinder controllerActionArgumentBinder,
     IModelBinderProvider modelBinderProvider,
     IModelValidatorProviderProvider modelValidatorProviderProvider,
     IValueProviderFactoryProvider valueProviderFactoryProvider,
     IScopedInstance<ActionBindingContext> actionBindingContext,
     ITempDataDictionary tempData)
     : base(
           actionContext,
           filterProvider,
           controllerFactory,
           descriptor,
           inputFormattersProvider,
           controllerActionArgumentBinder,
           modelBinderProvider,
           modelValidatorProviderProvider,
           valueProviderFactoryProvider,
           actionBindingContext,
           tempData)
 {
     ControllerFactory = controllerFactory;
 }
Example #37
0
 public FiltersModelBinderProvider(IModelBinderProvider workerProvider)
 {
     _workerProvider = workerProvider;
 }
Example #38
0
 public AuthenticatedUserIdAwareBodyModelBinderProvider(IModelBinderProvider decoratedProvider)
 {
     _decoratedProvider = decoratedProvider;
 }
Example #39
0
 public GenericSearchModelBinderProvider(IModelBinderProvider fallbackModelBinderProvider) =>
 this.fallbackModelBinderProvider = fallbackModelBinderProvider;
Example #40
0
 /// <summary>
 /// Initializes a new instance of the CompositeModelBinder class.
 /// </summary>
 /// <param name="modelBindersProvider">Provides a collection of <see cref="IModelBinder"/> instances.</param>
 public CompositeModelBinder(IModelBinderProvider modelBindersProvider)
 {
     _modelBindersProvider = modelBindersProvider;
 }
Example #41
0
 /// <summary>
 /// Initializes a new instance of the CompositeModelBinder class.
 /// </summary>
 /// <param name="modelBindersProvider">Provides a collection of <see cref="IModelBinder"/> instances.</param>
 public CompositeModelBinder(IModelBinderProvider modelBindersProvider)
 {
     _modelBindersProvider = modelBindersProvider;
 }