Exemple #1
0
        public void AttributeWithIClientValidatableGetsClientValidationRules()
        {
            // Arrange
            var expected = new ModelClientValidationStringLengthRule("Error", 1, 10);
            var context  = new ControllerContext();
            var metadata = ModelMetadataProviders.Current.GetMetadataForType(
                () => null,
                typeof(string)
                );
            var attribute = new Mock <ValidationAttribute> {
                CallBase = true
            };

            attribute
            .As <IClientValidatable>()
            .Setup(cv => cv.GetClientValidationRules(metadata, context))
            .Returns(new[] { expected })
            .Verifiable();
            var validator = new DataAnnotationsModelValidator(metadata, context, attribute.Object);

            // Act
            ModelClientValidationRule actual = validator.GetClientValidationRules().Single();

            // Assert
            attribute.Verify();
            Assert.Same(expected, actual);
        }
        public void ModelClientValidationStringLengthRuleTestDoesNotAddMaxLengthIfSpecifiedValueIsMaxValue()
        {
            // Arrange
            var clientValidationRule = new ModelClientValidationStringLengthRule("Test message", 3, Int32.MaxValue);

            // Assert
            Assert.Equal(1, clientValidationRule.ValidationParameters.Count);
            Assert.Equal(3, clientValidationRule.ValidationParameters["min"]);
        }
        public void ModelClientValidationStringLengthRuleTestDoesNotAddMaxLengthIfSpecifiedValueIsMaxValue()
        {
            // Arrange
            var clientValidationRule = new ModelClientValidationStringLengthRule("Test message", 3, Int32.MaxValue);

            // Assert
            Assert.Equal(1, clientValidationRule.ValidationParameters.Count);
            Assert.Equal(3, clientValidationRule.ValidationParameters["min"]);
        }
        public void ModelClientValidationStringLengthRuleTestDoesNotAddMinLengthParameterIfSpecifiedValueIs0()
        {
            // Arrange
            var clientValidationRule = new ModelClientValidationStringLengthRule("Test message", 0, 10);

            // Assert
            Assert.Equal(1, clientValidationRule.ValidationParameters.Count);
            Assert.Equal(10, clientValidationRule.ValidationParameters["max"]);
        }
        public void ModelClientValidationStringLengthRuleTestDoesNotAddMinLengthParameterIfSpecifiedValueIs0()
        {
            // Arrange
            var clientValidationRule = new ModelClientValidationStringLengthRule("Test message", 0, 10);

            // Assert
            Assert.Equal(1, clientValidationRule.ValidationParameters.Count);
            Assert.Equal(10, clientValidationRule.ValidationParameters["max"]);
        }
        public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            ErrorMessage = UmbracoValidationHelper.GetPropertyValue(_propertyAlias);

            var error = FormatErrorMessage(metadata.DisplayName);
            var rule  = new ModelClientValidationStringLengthRule(error, _minimumLength, _maximumLength);

            yield return(rule);
        }
        public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            ErrorMessage = UmbracoValidationHelper.GetDictionaryItem(_errorMessageDictionaryKey);

            var error = FormatErrorMessage(metadata.DisplayName);
            var rule  = new ModelClientValidationStringLengthRule(error, MinimumLength, MaximumLength);

            yield return(rule);
        }
Exemple #8
0
        public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            ErrorMessage = UmbracoPropertyValidationHelper.GetPropertyValueItem(_errorMessageKey);
            var    error        = FormatErrorMessage(metadata.DisplayName);
            string errorMessage = StringBuilderMessageStringLength.Message(error, MinimumLength, MaximumLength);

            var rule = new ModelClientValidationStringLengthRule($"{_errorFieldName} - {errorMessage}", MinimumLength, MaximumLength);

            yield return(rule);
        }
        public IEnumerable <ModelClientValidationRule> GetClientValidationRules(
            ModelMetadata metadata,
            ControllerContext context)
        {
            var rule = new ModelClientValidationStringLengthRule(
                ErrorMessageString,
                MinimumLength,
                MaximumLength);

            return(new[] { rule });
        }
        public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            this.EnsureLegalLengths();
            var rule = new ModelClientValidationStringLengthRule(this.ErrorMessage, this._min,
                                                                 this._max)
            {
                ValidationType = "length"
            };

            yield return(rule);
        }
        public void ModelClientValidationStringLengthRuleTestAddsMinLengthParameter()
        {
            // Arrange
            string message = "Password must contain only letters and must be between 3-8 characters long";
            var    clientValidationRule = new ModelClientValidationStringLengthRule(message, 3, 8);

            // Assert
            Assert.Equal(2, clientValidationRule.ValidationParameters.Count);
            Assert.Equal(message, clientValidationRule.ErrorMessage);
            Assert.Equal(3, clientValidationRule.ValidationParameters["min"]);
            Assert.Equal(8, clientValidationRule.ValidationParameters["max"]);
        }
        public void ModelClientValidationStringLengthRuleTestAddsMinLengthParameter()
        {
            // Arrange
            string message = "Password must contain only letters and must be between 3-8 characters long";
            var clientValidationRule = new ModelClientValidationStringLengthRule(message, 3, 8);

            // Assert
            Assert.Equal(2, clientValidationRule.ValidationParameters.Count);
            Assert.Equal(message, clientValidationRule.ErrorMessage);
            Assert.Equal(3, clientValidationRule.ValidationParameters["min"]);
            Assert.Equal(8, clientValidationRule.ValidationParameters["max"]);
        }
        public override IEnumerable <ModelClientValidationRule> GetClientValidationRules()
        {
            var maxLenghtValidator = new ModelClientValidationStringLengthRule(null, 0, Attribute.MaximumLength);

            if (Attribute.MinimumLength != 0)
            {
                ModelClientValidationRule rule = new ModelClientValidationRule()
                {
                    ErrorMessage = null, ValidationType = "stringMinLength"
                };
                rule.ValidationParameters.Add("minimumLength", Attribute.MinimumLength);
                return(new[] { maxLenghtValidator, rule });
            }
            return(new[] { maxLenghtValidator });
        }
Exemple #14
0
        public static IValidator StringLength(
            int maxLength,
            int minLength       = 0,
            string errorMessage = null
            )
        {
            if (minLength == 0)
            {
                errorMessage = String.Format(
                    CultureInfo.CurrentCulture,
                    DefaultIfEmpty(errorMessage, WebPageResources.ValidationDefault_StringLength),
                    maxLength
                    );
            }
            else
            {
                errorMessage = DefaultIfEmpty(
                    errorMessage,
                    WebPageResources.ValidationDefault_StringLengthRange
                    );
                errorMessage = String.Format(
                    CultureInfo.CurrentCulture,
                    errorMessage,
                    minLength,
                    maxLength
                    );
            }
            var clientAttributes = new ModelClientValidationStringLengthRule(
                errorMessage,
                minLength,
                maxLength
                );

            // We don't care if the value is unsafe when checking the length of the request field passed to us.
            return(new ValidationAttributeAdapter(
                       new StringLengthAttribute(maxLength)
            {
                MinimumLength = minLength
            },
                       errorMessage,
                       clientAttributes,
                       useUnvalidatedValues: true
                       ));
        }
Exemple #15
0
        public void GetValidatorsReturnsClientValidatorForDerivedTypeAppliedAgainstBaseTypeViaFromLambdaExpression()   // Dev10 Bug #868619
        // Arrange
        {
            var provider = new DataAnnotationsModelValidatorProvider();
            var context  = new ControllerContext();
            var viewdata = new ViewDataDictionary <DerivedModel>();
            var metadata = ModelMetadata.FromLambdaExpression(m => m.MyProperty, viewdata); // Bug is in FromLambdaExpression

            // Act
            IEnumerable <ModelValidator> validators = provider.GetValidators(metadata, context);

            // Assert
            ModelValidator            validator  = validators.Single();
            ModelClientValidationRule clientRule = validator.GetClientValidationRules().Single();

            Assert.IsInstanceOfType(clientRule, typeof(ModelClientValidationStringLengthRule));
            ModelClientValidationStringLengthRule stringLengthRule = (ModelClientValidationStringLengthRule)clientRule;

            Assert.AreEqual(10, stringLengthRule.ValidationParameters["max"]);
        }
Exemple #16
0
        public override IEnumerable <ModelClientValidationRule> GetClientValidationRules()
        {
            if (!ShouldGenerateClientSideRules())
            {
                yield break;
            }

            // Don't generate clientside rules if min/max are lazily loaded.
            var lengthVal = LengthValidator as LengthValidator;

            if (lengthVal != null && lengthVal.MaxFunc != null && lengthVal.MinFunc != null)
            {
                yield break;
            }

            var formatter = ValidatorOptions.MessageFormatterFactory()
                            .AppendPropertyName(Rule.GetDisplayName())
                            .AppendArgument("MinLength", LengthValidator.Min)
                            .AppendArgument("MaxLength", LengthValidator.Max);

            var    messageNeedsSplitting = LengthValidator.ErrorMessageSource.ResourceType == typeof(LanguageManager);
            string message;

            try {
                message = LengthValidator.ErrorMessageSource.GetString(null);
            }
            catch (FluentValidationMessageFormatException) {
                // Use provided a message that contains placeholders based on object properties. We can't use that here, so just fall back to the default.
                if (lengthVal is MinimumLengthValidator)
                {
                    message = ValidatorOptions.LanguageManager.GetStringForValidator <MinimumLengthValidator>();
                }
                else if (lengthVal is MaximumLengthValidator)
                {
                    message = ValidatorOptions.LanguageManager.GetStringForValidator <MaximumLengthValidator>();
                }
                else if (lengthVal is ExactLengthValidator)
                {
                    message = ValidatorOptions.LanguageManager.GetStringForValidator <ExactLengthValidator>();
                }
                else
                {
                    message = ValidatorOptions.LanguageManager.GetStringForValidator <LengthValidator>();
                }
                messageNeedsSplitting = true;
            }

            if (messageNeedsSplitting)
            {
                // If we're using the default resources then the mesage for length errors will have two parts, eg:
                // '{PropertyName}' must be between {MinLength} and {MaxLength} characters. You entered {TotalLength} characters.
                // We can't include the "TotalLength" part of the message because this information isn't available at the time the message is constructed.
                // Instead, we'll just strip this off by finding the index of the period that separates the two parts of the message.

                message = message.Substring(0, message.IndexOf(".") + 1);
            }

            message = formatter.BuildMessage(message);

            ModelClientValidationRule rule;

            if (lengthVal is MinimumLengthValidator)
            {
                rule = new ModelClientValidationMinLengthRule(message, LengthValidator.Min);
            }
            else if (lengthVal is MaximumLengthValidator)
            {
                rule = new ModelClientValidationMaxLengthRule(message, LengthValidator.Max);
            }
            else
            {
                rule = new ModelClientValidationStringLengthRule(message, LengthValidator.Min, LengthValidator.Max);
            }
            yield return(rule);
        }
        public void AttributeWithIClientValidatableGetsClientValidationRules()
        {
            // Arrange
            var expected = new ModelClientValidationStringLengthRule("Error", 1, 10);
            var context = new ControllerContext();
            var metadata = ModelMetadataProviders.Current.GetMetadataForType(() => null, typeof(string));
            var attribute = new Mock<ValidationAttribute> { CallBase = true };
            attribute.As<IClientValidatable>()
                .Setup(cv => cv.GetClientValidationRules(metadata, context))
                .Returns(new[] { expected })
                .Verifiable();
            var validator = new DataAnnotationsModelValidator(metadata, context, attribute.Object);

            // Act
            ModelClientValidationRule actual = validator.GetClientValidationRules().Single();

            // Assert
            attribute.Verify();
            Assert.Same(expected, actual);
        }