public void TestPropertyLength() { Core.Validator validator = ValidatorFromMetadata.GetValidatorFromSession(Factory); var rules = validator.GetRules(typeof(EntityBase)); Assert.That(rules, Has.Count.EqualTo(1)); }
public void BasicFieldGraphTestRecursiveInternalClassNull() { var obj = new Container3(); var v = new Core.Validator(); ValidationResult res = v.ValidateObject(obj, ValidationFlags.StopOnFirstError | ValidationFlags.RecursiveValidation); Assert.IsTrue(res); }
public static Core.Validator GetValidatorFromSession(ISessionFactory sessionFactory) { var allDefindedClasses = sessionFactory.GetAllClassMetadata(); Core.Validator validator = new Core.Validator(); foreach (KeyValuePair <string, IClassMetadata> pair in allDefindedClasses) { IClassMetadata metadata = pair.Value; foreach (string propertyName in metadata.PropertyNames) { IType propertyType = metadata.GetPropertyType(propertyName); StringType st = propertyType as StringType; if (st != null) { if (st.SqlType.Length > 0) { validator.AddRule(Rule.For(metadata.GetMappedClass(EntityMode.Poco)) .OnMember(propertyName) .MaxLength(st.SqlType.Length) .Message(String.Format( "Property {0} have a maximum length of {1}", propertyName, st.SqlType.Length))); } } } } return(validator); }
public static Core.Validator GetValidatorFromSession(ISessionFactory sessionFactory) { var allDefindedClasses = sessionFactory.GetAllClassMetadata(); Core.Validator validator = new Core.Validator(); foreach (KeyValuePair<string, IClassMetadata> pair in allDefindedClasses) { IClassMetadata metadata = pair.Value; foreach (string propertyName in metadata.PropertyNames) { IType propertyType = metadata.GetPropertyType(propertyName); StringType st = propertyType as StringType; if (st != null) { if (st.SqlType.Length > 0) { validator.AddRule(Rule.For(metadata.GetMappedClass(EntityMode.Poco)) .OnMember(propertyName) .MaxLength(st.SqlType.Length) .Message(String.Format( "Property {0} have a maximum length of {1}", propertyName, st.SqlType.Length))); } } } } return validator; }
public void TestValidateWithException() { var s1f = new Simple1Field(); var v = new Core.Validator(); Assert.Throws <ValidationException>(() => v.CheckObject(s1f)); }
public void TestBasicValidationAttributeGood() { Test test = new Test(); test.Property = "Testregexgood"; Validator.Core.Validator v = new Core.Validator(); Assert.That((Boolean)v.ValidateObject(test), Is.True); }
/// <summary> /// Create the first validator found into configuration file. /// </summary> /// <returns></returns> public Core.Validator CreateValidator() { Core.Validator validator = new Core.Validator(); XElement validatorNode = Configuration.Elements("validator").First(); Type resourceType = null; XElement resourceTypeNameNode = validatorNode.Elements("resource").FirstOrDefault(); if (resourceTypeNameNode != null) { String resourceTypeName = resourceTypeNameNode.Attribute("name").Value; resourceType = Type.GetType(resourceTypeName); if (resourceType == null) { throw new ConfigurationErrorsException( String.Format("The type {0} specified for resource is not valid", resourceTypeName)); } } foreach (XElement typeNode in validatorNode.Elements("type")) { Type currentType = Type.GetType(typeNode.Attribute("name").Value); if (currentType == null) throw new ConfigurationErrorsException("Configuration node " + typeNode.ToString() + " validate type " + typeNode.Attribute("name").Value + " that does not exists"); //A node can have one or more rules, rules are simply extractor with inner validators foreach (XElement ruleNode in typeNode.Elements()) { IExtratorNode node = XmlHelper.GetExtractorNode(ruleNode); node.Configure(resourceType, currentType, validator); } } return validator; }
internal Rule Configure(Core.Validator validator) { ValidationUnitCollection coll = validator.GetRules(Type); coll.Add(ValidationUnit.CreateValidationUnit(ErrorMessage, _CreateValidator(Extractor))); return(this); }
/// <summary> /// Create the first validator found into configuration file. /// </summary> /// <returns></returns> public Core.Validator CreateValidator() { Core.Validator validator = new Core.Validator(); XElement validatorNode = Configuration.Elements("validator").First(); Type resourceType = null; XElement resourceTypeNameNode = validatorNode.Elements("resource").FirstOrDefault(); if (resourceTypeNameNode != null) { String resourceTypeName = resourceTypeNameNode.Attribute("name").Value; resourceType = Type.GetType(resourceTypeName); if (resourceType == null) { throw new ConfigurationErrorsException( String.Format("The type {0} specified for resource is not valid", resourceTypeName)); } } foreach (XElement typeNode in validatorNode.Elements("type")) { Type currentType = Type.GetType(typeNode.Attribute("name").Value); if (currentType == null) { throw new ConfigurationErrorsException("Configuration node " + typeNode.ToString() + " validate type " + typeNode.Attribute("name").Value + " that does not exists"); } //A node can have one or more rules, rules are simply extractor with inner validators foreach (XElement ruleNode in typeNode.Elements()) { IExtratorNode node = XmlHelper.GetExtractorNode(ruleNode); node.Configure(resourceType, currentType, validator); } } return(validator); }
public void RangeTestGoodObject() { var rng = new RFTestClass1(); var v = new Core.Validator(); ValidationResult res = v.ValidateObject(rng); Assert.IsTrue(res, "Range Object does wrong validation."); }
public void BasicNullTest() { var obj = new Container1(); var v = new Core.Validator(); ValidationResult res = v.ValidateObject(obj); Assert.IsFalse(res, "Property is null should not validate"); }
public void TestFluentInvalidNoProperty() { Core.Validator v = new Core.Validator(); Assert.Throws <ArgumentException>(() => v.AddRule(Rule.ForMember <Simple1Field>(o => o.field) .IsInRange(10, 100) .Message(() => TestRes.Test))); }
public void ValidateUnknownEntity() { var v = new Core.Validator(); AnEntity bes = new AnEntity(); ValidationResult res = v.ValidateObject(bes); Assert.That(res.Success, Is.True); }
public void VerifyCollectionNotEmptyValidation() { var rng = new OwnCollectionAnotherClassTest() { List = new List<AnotherClassTest>() }; var v = new Core.Validator(); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsFalse(res); }
public void VerifyCollectionOfInt32ValidateNotEmpty() { var rng = new OwnCollectionOfBasicElement() { List = new List<Int32>(), Property = "TEST" }; var v = new Core.Validator(); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsFalse(res); }
public void TestWrongObjectNum2WithStopOnError() { var s1pf = new Simple1Field1Property(); var v = new Core.Validator(); ValidationResult res = v.ValidateObject(s1pf, ValidationFlags.StopOnFirstError); Assert.IsFalse(res, "Object does not validate well"); Assert.AreEqual(1, res.ErrorMessages.Count, "Wrong number of error detected"); }
public void BasicFieldGraphTestRecursive() { var obj = new Container1(); obj.containedField = new Contained1(); var v = new Core.Validator(); ValidationResult res = v.ValidateObject(obj, ValidationFlags.StopOnFirstError | ValidationFlags.RecursiveValidation); Assert.IsFalse(res, "Object does not works for recursive validation"); }
public void ValidateInherited2() { var v = new Core.Validator(); ChildEntity bes = new ChildEntity(); ValidationResult res = v.ValidateObject(bes); Assert.That(res.Success, Is.False); Assert.That(res.ErrorMessages[0], Is.EqualTo("This is a required field")); }
public void TestCustomValueExtractorWrong() { var obj = new FullCustomValueExtractor1ClassTest(); obj.field1 = 10; obj.field2 = 300; var v = new Core.Validator(); ValidationResult res = v.ValidateObject(obj); Assert.IsFalse(res, "Object does not validate well"); }
public void TestWrongObject() { var s1f = new Simple1Field(); var v = new Core.Validator(); ValidationResult res = v.ValidateObject(s1f); Assert.IsFalse(res, "Object does not validate well"); Assert.AreEqual(1, res.ErrorMessages.Count, "Wrong number of error detected"); Assert.AreEqual(cSimpleErrorMessage, res.ErrorMessages[0]); }
public void ValidateInheritedGood() { var v = new Core.Validator(); ChildEntity bes = new ChildEntity(); bes.RequiredString = "this"; ValidationResult res = v.ValidateObject(bes); Assert.That(res.Success, Is.True); }
public void Configure(Type messageResourceType, Type typeToValidate, Core.Validator validatorToConfigure) { foreach (IRuleNode node in RuleNodes) { Rule rule = Rule.For(typeToValidate); InnerConfigure(rule); node.Configure(messageResourceType, rule); validatorToConfigure.AddRule(rule); } }
public void ScannerInheritedTest() { var v = new Core.Validator(); ChildEntity bes = new ChildEntity(); var ts = new TypeScanner(bes.GetType()); ValidationUnitCollection vc = ts.Scan(); Assert.That(vc, Has.Count.EqualTo(2)); Assert.That(vc[1].ErrorMessage.Message, Is.EqualTo("This is a required field")); }
public void TestGoodObject() { var s1f = new Simple1Field(); s1f.field = "value"; var v = new Core.Validator(); ValidationResult res = v.ValidateObject(s1f); Assert.IsTrue(res, "Object does not validate well"); }
public void VerifyCollectionValidation() { var rng = new OwnCollectionAnotherClassTest() { List = new List<AnotherClassTest>() }; rng.List.Add(new AnotherClassTest() { Property1 = "bla", Property2 = "BEA" }); rng.List.Add(new AnotherClassTest() { Property1 = "bla" }); //this is invalid var v = new Core.Validator(); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsFalse(res); }
public void VerifyCollectionOfInt32DoesNotValidateInnerInteger() { var rng = new OwnCollectionOfBasicElement() { List = new List<Int32>(), Property = "TEST" }; rng.List.Add(11); rng.List.Add(12); var v = new Core.Validator(); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsTrue(res); }
public void TestWrongObjectNum2() { var s1pf = new Simple1Field1Property(); var v = new Core.Validator(); ValidationResult res = v.ValidateObject(s1pf); Assert.IsFalse(res, "Object does not validate well"); Assert.AreEqual(2, res.ErrorMessages.Count, "Wrong number of error detected"); Assert.IsTrue(res.ErrorMessages.Contains(cAlternativeErrorMessage)); Assert.IsTrue(res.ErrorMessages.Contains(cSimpleErrorMessage)); }
public void BasicFieldGraphTestValidationResult() { var obj = new Container1(); obj.containedField = new Contained1(); obj.containedField.requiredProperty = "This is valid"; var v = new Core.Validator(); ValidationResult res = v.ValidateObject(obj, ValidationFlags.StopOnFirstError | ValidationFlags.RecursiveValidation); Assert.IsTrue(res, "Object field should validate."); }
public void VerifyNotValidateIEnumerableProperties() { var rng = new OwnCollectionOfBasicElementIEnumerable() { }; var v = new Core.Validator(); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsTrue(res); }
public void RangeTestWrongObjectErrorContainsPropertyName() { var rng = new RFTestClass1(); rng.Property = 10000.0f; var v = new Core.Validator(); ValidationResult res = v.ValidateObject(rng); Assert.IsFalse(res, "Range Object does wrong validation."); Assert.That(res.Errors[0].SourceName, Is.EqualTo("Property")); }
public void TestFluentForSourceWithLambdaInt() { var s1f = new Simple2Property(); Core.Validator v = new Core.Validator(); v.AddRule(Rule.ForMember <Simple2Property>(o => o.IProperty) .IsInRange(10, 100) .Message(() => TestRes.Test)); ValidationResult res = v.ValidateObject(s1f); Assert.That(res.Errors[0].SourceName, Is.EqualTo("IProperty")); }
public void BasicFieldGraphTestValidationError() { var obj = new Container1(); obj.containedField = new Contained1(); var v = new Core.Validator(); ValidationResult res = v.ValidateObject(obj); Assert.IsTrue(res, "Validate object method defaults to not validate contained objects"); res = v.ValidateObject(obj.containedField); Assert.IsFalse(res, "inner object must not validate"); }
public void TestWrongObjectWithDefaultValue() { var s1p = new Simple1Property(); s1p.Property = cDefaultValueSimple1Property; var v = new Core.Validator(); ValidationResult res = v.ValidateObject(s1p); Assert.IsFalse(res, "Object does not validate well"); Assert.AreEqual(1, res.ErrorMessages.Count, "Wrong number of error detected"); Assert.AreEqual(cSimpleErrorMessage, res.ErrorMessages[0]); }
public void ValidateInheritedFluentTrue() { var v = new Core.Validator(); ChildEntityNa bes = new ChildEntityNa(); v.AddRule(Rule.For <ChildEntityNa>(e => e.RequiredString) .Required().Message("Required!!!!")); bes.RequiredString = "is here!!"; ValidationResult res = v.ValidateObject(bes); Assert.That(res.Success, Is.True); }
public void TestFluentForSourceWithLambdaAndNullableDateTime() { var s1f = new Simple2Property(); Core.Validator v = new Core.Validator(); v.AddRule(Rule.ForMember <Simple2Property>(o => o.NullableDateTime) .Required() .Message(() => TestRes.Test)); ValidationResult res = v.ValidateObject(s1f); Assert.That(res.Errors[0].SourceName, Is.EqualTo("NullableDateTime")); }
public void ValidateInheritedFluent() { var v = new Core.Validator(); ChildEntityNa bes = new ChildEntityNa(); v.AddRule(Rule.For <ChildEntityNa>(e => e.RequiredString) .Required().Message("Required!!!!")); ValidationResult res = v.ValidateObject(bes); Assert.That(res.Success, Is.False); Assert.That(res.ErrorMessages[0], Is.EqualTo("Required!!!!")); }
public void TestProgrammaticNullValidator() { var v = new Core.Validator(); v.AddValidationRule( typeof (ProgValid1), ValidationUnit.CreateValidationUnit( ErrorMessage.empty, new RequiredValidator(new NamedValueExtractor("StringProperty")))); var obj = new ProgValid1(); Assert.IsFalse(v.ValidateObject(obj), "Programmatic validation does not work"); obj.StringProperty = "notnullvalue"; Assert.IsTrue(v.ValidateObject(obj), "Programmatic validation does not work"); }
public void VerifyCollectionNotEmptyValidationFluent() { var rng = new OwnCollectionAnotherClassTestWithNoAttribute() { List = new List<AnotherClassTest>() }; Core.Validator v = new Core.Validator(); v.AddRule(Rule.For<OwnCollectionAnotherClassTestWithNoAttribute>() .OnMember("List") .NotEmpty() .Message("List should have at least one element")); ValidationResult res = v.ValidateObject(rng); Assert.IsFalse(res); Assert.That(res.ErrorMessages, Has.Count.EqualTo(1)); Assert.That(res.ErrorMessages[0], Is.EqualTo("List should have at least one element")); }
public void DefineComplexRule1() { IValueExtractor ve = new BinaryOperatorValueExtractor( new NamedValueExtractor("intField1"), new NamedValueExtractor("intField2"), BinaryOperatorValueExtractor.MathOperation.Addition); var v = new Core.Validator(); v.AddValidationRule( typeof (ProgValid1), ValidationUnit.CreateValidationUnit( ErrorMessage.empty, new RangeValueValidator(ve, 100, 1000))); var obj = new ProgValid1(); obj.intField1 = 10; obj.intField2 = 200; Assert.IsTrue(v.ValidateObject(obj), "Programmatic validation does not work"); }
public void VerifyValidateRecursiveObject() { var rng = new OwnAClassTest() { Reference = new ClassTest(), Reference2 = new ClassTest() }; var v = new Core.Validator(); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsFalse(res); Assert.That(res.Errors[0].SourceName, Is.EqualTo("Reference.Property")); res = v.ValidateObject(rng); Assert.IsTrue(res); }
public void VerifyThatWithRecursiveValidationStopOnFirstErrorIsDisabled() { var rng = new OwnAClassTest() { Reference = new ClassTest(), Reference2 = new ClassTest() }; var v = new Core.Validator(); ValidationResult res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.That(res.Errors, Has.Count.EqualTo(2)); }
public void VerifyThatWithRecursiveValidationDoesNotStopOnFirstErrorOnSubValidation() { var rng = new OwnAnotherClassTest() { Reference = new AnotherClassTest() }; var v = new Core.Validator(); ValidationResult res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.That(res.Errors, Has.Count.EqualTo(2)); }
public void VerifyNotValidateIEnumerableWhenLambdaConditionIsUsed() { var rng = new OwnCollectionOfBasicElementIEnumerable(23) { }; var v = new Core.Validator(); v.AddRule(Rule.For<OwnCollectionOfBasicElementIEnumerable>(l => l.SearchUnits) .Custom<IEnumerable<Int32>>(sl => sl.Count() > 0).Message("error")); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsTrue(res); }
public void VerifyInnerValidationGrabCorrectNameWhenPassedAsArgument() { var rng = new OwnSecondLevel() { Collection = new List<OwnCollectionOfBasicElementIEnumerable>() }; rng.Collection.Add(new OwnCollectionOfBasicElementIEnumerable(1)); rng.Collection.Add(new OwnCollectionOfBasicElementIEnumerable()); var v = new Core.Validator(); v.AddRule(Rule.For<OwnCollectionOfBasicElementIEnumerable>(l => l.SearchUnits, "SearchUnitsXX") .Custom<IEnumerable<Int32>>(sl => sl.Count() > 0) .Message("Error")); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.That(res.Errors[0].SourceName, Is.EqualTo("Collection[1].SearchUnitsXX")); //Second list does not contains elements }
public void VerifyInnerIEnumerableMessageErrorWhenLambdaIsUsed() { var rng = new OwnSecondLevel() { Collection = new List<OwnCollectionOfBasicElementIEnumerable>()}; rng.Collection.Add(new OwnCollectionOfBasicElementIEnumerable(1)); rng.Collection.Add(new OwnCollectionOfBasicElementIEnumerable()); var v = new Core.Validator(); v.AddRule(Rule.For<OwnCollectionOfBasicElementIEnumerable>(l => l.SearchUnits) .Custom<IEnumerable<Int32>>(sl => sl.Count() > 0) .Message("I want to see this message")); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.That(res.Errors[0].Message, Is.EqualTo("I want to see this message")); }
public void VerifyInnerIEnuerablePropertyOfInnerObjectIsNotValidated() { var rng = new OwnSecondLevel() { Collection = new List<OwnCollectionOfBasicElementIEnumerable>()}; rng.Collection.Add(new OwnCollectionOfBasicElementIEnumerable(1)); rng.Collection.Add(new OwnCollectionOfBasicElementIEnumerable()); var v = new Core.Validator(); v.AddRule(Rule.For<OwnCollectionOfBasicElementIEnumerable>(l => l.SearchUnits) .Custom<IEnumerable<Int32>>(sl => sl.Count() > 0) .Message("Error")); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsFalse(res); //Second list does not contains elements }
public void VerifyCollectionWhenNoRuleIsDefined() { var rng = new OwnCollectionAnotherClassTestWithNoAttribute() { List = new List<AnotherClassTest>() }; var v = new Core.Validator(); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.IsTrue(res); }
public void VerifyCollectionValidationIndexingOfPropertyInErrorList() { var rng = new OwnCollectionAnotherClassTest() { List = new List<AnotherClassTest>() }; rng.List.Add(new AnotherClassTest() { Property1 = "bla", Property2 = "BEA" }); rng.List.Add(new AnotherClassTest() { Property1 = "bla" }); //this is invalid var v = new Core.Validator(); var res = v.ValidateObject(rng, ValidationFlags.RecursiveValidation); Assert.That(res.Errors[0].SourceName, Is.EqualTo("List[1].Property2")); }
public void ValidateInheritedFluent() { var v = new Core.Validator(); ChildEntityNa bes = new ChildEntityNa(); v.AddRule(Rule.For<ChildEntityNa>(e => e.RequiredString) .Required().Message("Required!!!!")); ValidationResult res = v.ValidateObject(bes); Assert.That(res.Success, Is.False); Assert.That(res.ErrorMessages[0], Is.EqualTo("Required!!!!")); }
public void ValidateInheritedFluentTrue() { var v = new Core.Validator(); ChildEntityNa bes = new ChildEntityNa(); v.AddRule(Rule.For<ChildEntityNa>(e => e.RequiredString) .Required().Message("Required!!!!")); bes.RequiredString = "is here!!"; ValidationResult res = v.ValidateObject(bes); Assert.That(res.Success, Is.True); }