예제 #1
0
        public void When_interceptor_specified_Intercepts_validation()
        {
            var form = new FormCollection {
                { "Email", "foo" },
                { "Surname", "foo" },
                { "Forename", "foo" },
            };

            var context = new ModelBindingContext {
                ModelName             = "test",
                ModelMetadata         = CreateMetaData(typeof(PropertiesTestModel)),
                ModelState            = new ModelStateDictionary(),
                FallbackToEmptyPrefix = true,
                ValueProvider         = form.ToValueProvider(),
            };

            var binder = new CustomizeValidatorAttribute {
                Interceptor = typeof(SimplePropertyInterceptor)
            };

            binder.BindModel(controllerContext, context);

            context.ModelState.IsValidField("Forename").ShouldBeFalse();
            context.ModelState.IsValidField("Surname").ShouldBeFalse();
            context.ModelState.IsValidField("Email").ShouldBeTrue();
        }
예제 #2
0
        public void Should_only_validate_specified_ruleset()
        {
            var form = new FormCollection {
                { "Email", "foo" },
                { "Surname", "foo" },
                { "Forename", "foo" },
            };

            var context = new ModelBindingContext {
                ModelName             = "test",
                ModelMetadata         = CreateMetaData(typeof(RulesetTestModel)),
                ModelState            = new ModelStateDictionary(),
                FallbackToEmptyPrefix = true,
                ValueProvider         = form.ToValueProvider(),
            };

            var binder = new CustomizeValidatorAttribute {
                RuleSet = "Names"
            };

            binder.BindModel(controllerContext, context);

            context.ModelState.IsValidField("Forename").ShouldBeFalse();
            context.ModelState.IsValidField("Surname").ShouldBeFalse();
            context.ModelState.IsValidField("Email").ShouldBeTrue();
        }
예제 #3
0
        public void Validator_customizations_should_only_apply_to_single_parameter()
        {
            var form = new FormCollection {
                { "first.Email", "foo" },
                { "first.Surname", "foo" },
                { "first.Forename", "foo" },
                { "second.Email", "foo" },
                { "second.Surname", "foo" },
                { "second.Forename", "foo" }
            };

            var modelstate = new ModelStateDictionary();

            var firstContext = new ModelBindingContext {
                ModelName             = "first",
                ModelMetadata         = CreateMetaData(typeof(RulesetTestModel)),
                ModelState            = modelstate,
                FallbackToEmptyPrefix = true,
                ValueProvider         = form.ToValueProvider(),
            };

            var secondContext = new ModelBindingContext {
                ModelName             = "second",
                ModelMetadata         = CreateMetaData(typeof(RulesetTestModel)),
                ModelState            = modelstate,
                FallbackToEmptyPrefix = true,
                ValueProvider         = form.ToValueProvider()
            };

            // Use the customizations for the first
            var binder = new CustomizeValidatorAttribute {
                RuleSet = "Names"
            };

            binder.BindModel(controllerContext, firstContext);

            // ...but not for the second.
            this.binder.BindModel(controllerContext, secondContext);

            //customizations should only apply to the first validator
            modelstate.IsValidField("first.Forename").ShouldBeFalse();
            modelstate.IsValidField("first.Surname").ShouldBeFalse();
            modelstate.IsValidField("second.Forename").ShouldBeTrue();
            modelstate.IsValidField("second.Surname").ShouldBeTrue();
        }