示例#1
0
        public void ValueProviderFactories_Calls_Inner()
        {
            // Arrange
            Mock <HttpParameterDescriptor> mockParamDescriptor = new Mock <HttpParameterDescriptor>()
            {
                CallBase = true
            };

            mockParamDescriptor.Setup(d => d.ParameterName).Returns("paramName");
            mockParamDescriptor.Setup(d => d.ParameterType).Returns(typeof(string));
            Mock <IModelBinder> mockModelBinder = new Mock <IModelBinder>()
            {
                CallBase = true
            };
            Mock <ValueProviderFactory> mockValueProviderFactory = new Mock <ValueProviderFactory>()
            {
                CallBase = true
            };

            List <ValueProviderFactory> expectedFactories = new List <ValueProviderFactory>
            {
                mockValueProviderFactory.Object
            };

            ModelBinderParameterBinding binding = new ModelBinderParameterBinding(mockParamDescriptor.Object, mockModelBinder.Object, expectedFactories);
            HttpParameterBindingTracer  tracer  = new HttpParameterBindingTracer(binding, new TestTraceWriter());

            // Act
            List <ValueProviderFactory> actualFactories = tracer.ValueProviderFactories.ToList();

            // Assert
            Assert.Equal(expectedFactories, actualFactories);
        }
        public void BindWithModelBinding_Default()
        {
            HttpParameterDescriptor param = CreateParameterDescriptor();

            ModelBinderParameterBinding binding = (ModelBinderParameterBinding)param.BindWithModelBinding();

            Assert.NotNull(binding);
        }
        public void BindWithModelBinding_IModelBinder()
        {
            HttpParameterDescriptor param = CreateParameterDescriptor();

            var binder = new CustomModelBinder();
            ModelBinderParameterBinding binding = (ModelBinderParameterBinding)param.BindWithModelBinding(binder);

            Assert.NotNull(binding);
            Assert.Equal(binder, binding.Binder);
        }
        public void BindWithModelBinding_Attribute()
        {
            HttpParameterDescriptor param = CreateParameterDescriptor();

            ModelBinderAttribute        attribute = new ModelBinderAttribute(typeof(CustomModelBinder));
            ModelBinderParameterBinding binding   = (ModelBinderParameterBinding)param.BindWithAttribute(attribute);

            Assert.NotNull(binding);
            Assert.IsType <CustomModelBinder>(binding.Binder);
        }
        public void BindWithModelBinding_ValueProviderFactory_Array()
        {
            HttpParameterDescriptor param = CreateParameterDescriptor();

            ModelBinderParameterBinding binding = (ModelBinderParameterBinding)param.BindWithModelBinding(new CustomValueProviderFactory1(), new CustomValueProviderFactory2());

            Assert.NotNull(binding);

            ValueProviderFactory[] vpfs = binding.ValueProviderFactories.ToArray();
            Assert.Equal(2, vpfs.Length);
            Assert.IsType <CustomValueProviderFactory1>(vpfs[0]);
            Assert.IsType <CustomValueProviderFactory2>(vpfs[1]);
        }
示例#6
0
        public void GetBinding_ReturnsSameBindingTypeAsODataModelBinderProvider()
        {
            HttpConfiguration config = new HttpConfiguration();
            Type parameterType       = typeof(Guid);
            Mock <ParameterInfo> parameterInfoMock = new Mock <ParameterInfo>();

            parameterInfoMock.Setup(info => info.ParameterType).Returns(parameterType);
            ReflectedHttpParameterDescriptor parameter = new ReflectedHttpParameterDescriptor();

            parameter.Configuration = config;
            parameter.ParameterInfo = parameterInfoMock.Object;

            HttpParameterBinding binding = new FromODataUriAttribute().GetBinding(parameter);

            ModelBinderParameterBinding modelBinding = Assert.IsType <ModelBinderParameterBinding>(binding);

            Assert.Equal(new ODataModelBinderProvider().GetBinder(config, parameterType).GetType(), modelBinding.Binder.GetType());
        }
示例#7
0
        public static bool WillReadUri(this HttpParameterBinding parameterBinding)
        {
            if (parameterBinding == null)
            {
                throw Error.ArgumentNull("parameterBinding");
            }

            ModelBinderParameterBinding modelParameterBinding = parameterBinding as ModelBinderParameterBinding;

            if (modelParameterBinding != null)
            {
                if (modelParameterBinding.ValueProviderFactories.All(factory => factory is IUriValueProviderFactory))
                {
                    return(true);
                }
            }

            return(false);
        }