Пример #1
0
        public void Ensure_Context_Is_Validated()
        {
            var context           = Tuple.Create("Name here", "Value here");
            var contextDictionary = new Dictionary <object, object>();

            contextDictionary.Add(context.Item1, context.Item2);

            var testContext = new TestContext();

            testContext.KeyName     = context.Item1;
            testContext.RunTimeType = typeof(string);
            testContext.Value       = "Different Value";

            var result = ValidationHandler.Validate(testContext, contextDictionary);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);

            testContext.RunTimeType = typeof(object);
            testContext.Value       = context.Item2; //set back to original
            result = ValidationHandler.Validate(testContext, contextDictionary);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);

            contextDictionary.Remove(context.Item1);
            result = ValidationHandler.Validate(testContext, contextDictionary);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
        }
Пример #2
0
        public void Ensure_Context_Handles_Nulls()
        {
            var testContext = new TestContext();

            testContext.KeyName     = "Name here";
            testContext.RunTimeType = typeof(string);
            testContext.Value       = "Value here";
            var result = ValidationHandler.Validate(testContext, null);
        }
Пример #3
0
        public void Validate_BasicObject_Valid()
        {
            var obj = new BasicValidationObject()
            {
                StringProperty = "Some String", EmailProperty = "*****@*****.**", IntegerProperty = 3
            };
            var result = ValidationHandler.Validate(obj);

            Assert.IsTrue(result == null);
        }
Пример #4
0
        public void DataAttribute_Valid()
        {
            var obj = new UnitTestModel()
            {
                Name = "F#"
            };
            var result = ValidationHandler.Validate(obj);

            Assert.IsNull(result);
        }
Пример #5
0
        public void Parent_Child_Validators_Error()
        {
            var metalGizmo         = new MetalGizmo();
            var expectedErrorCount = 2;

            var result = ValidationHandler.Validate(metalGizmo);

            Assert.IsNotNull(result);
            Assert.AreEqual(expectedErrorCount, result.Count());
        }
Пример #6
0
        public void ValidationLoader_AttributeTest_Invalid()
        {
            var obj = new DomainObject17();

            obj.ID = -5;
            var result = ValidationHandler.Validate(obj);

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.FirstOrDefault(x => x.MemberNames.Any(y => y == "ID")));
        }
Пример #7
0
        public void Parent_Child_Validator_No_Error()
        {
            var metalGizmo = new MetalGizmo()
            {
                ID = "1", Alloy = "iron"
            };

            var result = ValidationHandler.Validate(metalGizmo);

            Assert.IsNull(result, "Validation have errors");
        }
Пример #8
0
        public void ValidationLoader_AttributeTest_Valid()
        {
            var obj = new DomainObject17();

            obj.ID = 5;
            var r   = ValidationHandler.Validate(obj);
            var sum = ValidationSummary.Map(r);

            Assert.IsNull(r, "Validation Object returned not null for model with validation attributes");
            Assert.IsNotNull(sum.Errors.Count == 0);
        }
Пример #9
0
        public void Validate_BasicObject_Invalid()
        {
            var obj    = new BasicValidationObject();
            var result = ValidationHandler.Validate(obj);

            Assert.IsTrue(result.Count() > 0);
            Assert.AreEqual(3, result.Count());
            Assert.AreEqual("Required", ((ValidationPathResult)result[0]).Type);
            Assert.AreEqual("Range", ((ValidationPathResult)result[1]).Type);
            Assert.AreEqual("Required", ((ValidationPathResult)result[2]).Type);
        }
Пример #10
0
        public void Validate_NestedObject_Invalid()
        {
            var obj = new NestedValidationObject();

            obj.NestedObject = new BasicValidationObject();
            //n.NestedObject.SubNest = null;
            var r = ValidationHandler.Validate(obj);

            Assert.IsTrue(r.Count() > 0);
            Assert.AreEqual(4, r.Count());
        }
Пример #11
0
        public void Validate_NestedDictionaryObject_Invalid2()
        {
            var obj = new NestedDictionaryValidationObject <string>();

            obj.GuidID = Guid.NewGuid().ToString();
            obj.NestedDictionary.Add("1", BasicValidationObject.Valid);
            obj.NestedDictionary.Add("13", BasicValidationObject.Invalid);
            var r = ValidationHandler.Validate(obj);

            Assert.IsNotNull(r);
            Assert.IsNotNull(r.FirstOrDefault(x => x.MemberNames.Any(y => y == "NestedDictionary[\"13\"].EmailProperty")));
        }
Пример #12
0
        public void DataAttribute_Invalid()
        {
            var obj = new UnitTestModel()
            {
                Name = "<forbidden phrase>"
            };
            var result = ValidationHandler.Validate(obj);

            Assert.IsNotNull(result);

            Assert.IsTrue(result.Any(x => x.ErrorMessage.Contains("<forbidden phrase>")));
            Assert.IsTrue(result.Any(x => x.MemberNames.Any(n => n == "Name")));
        }
Пример #13
0
        public void Validate_NestedObject_Valid()
        {
            var obj = new NestedValidationObject();

            obj.GuidID       = Guid.NewGuid().ToString();
            obj.NestedObject = new BasicValidationObject()
            {
                StringProperty = "Some String", EmailProperty = "*****@*****.**", IntegerProperty = 3
            };
            var r = ValidationHandler.Validate(obj);

            Assert.IsTrue(r == null);
        }
Пример #14
0
        public bool Validate(string password)
        {
            bool hasPassedValidation = _handler.Validate(password);

            if (IsEndOfChain)
            {
                return(hasPassedValidation);
            }
            if (hasPassedValidation)
            {
                return(Successor.Validate(password));
            }
            return(false);
        }
Пример #15
0
        public void Validate_NestedListObject_Invalid()
        {
            var obj = new NestedListValidationObject();

            obj.NestedObject = new List <BasicValidationObject>();
            obj.NestedObject.Add(BasicValidationObject.Valid);
            obj.NestedObject.Add(BasicValidationObject.Invalid);
            obj.NestedObject.Add(BasicValidationObject.Valid);
            var r = ValidationHandler.Validate(obj);

            Assert.IsTrue(r.Count() > 0);
            Assert.AreEqual(4, r.Count());
            Assert.IsNotNull(r.FirstOrDefault(x => x.MemberNames.Any(y => y == "NestedObject[1].EmailProperty")));
        }
Пример #16
0
 protected override async Task <CommandResponse <Submission> > ExecuteStage(CommandStage stage, CommandResponse <Submission> previous)
 {
     switch (stage)
     {
     case CommandStage.OnValidation:
         var results = ValidationHandler.Validate(_userSubmission);
         if (!results.IsNullOrEmpty())
         {
             return(CommandResponse.Invalid <Submission>(results));
         }
         break;
     }
     return(await base.ExecuteStage(stage, previous));
 }
Пример #17
0
        public void Parent_Validators_Error()
        {
            var metalGizmo = new MetalGizmo()
            {
                Alloy = "iron"
            };
            var expectedErrorCount = 1;
            var expectedErrorMssg  = "ID is empty";

            var result = ValidationHandler.Validate(metalGizmo);

            Assert.IsNotNull(result, "Validation for {0} fail", metalGizmo.ID);
            Assert.AreEqual(expectedErrorCount, result.Count());
            Assert.AreEqual(expectedErrorMssg, result.FirstOrDefault().ErrorMessage);
        }
Пример #18
0
        public VoatValidationTests()
            : base(new Func <object, ValidationContext, List <ValidationResult>, bool, bool>((o, v, l, b) =>
        {
            var result = ValidationHandler.Validate(o);

            if (result != null)
            {
                result.ToList().ForEach(x => l.Add(new ValidationResult(x.ErrorMessage, new List <string> {
                    x.MemberNames.First()
                })));
            }

            return(l.Count() == 0);
        }))
        { }
Пример #19
0
 public override ValidationResult Validate(Entity target, object fieldValue)
 {
     if (handler.Validate(fieldValue))
     {
         return(Success());
     }
     if (Min == null)
     {
         return(Error(string.Format(Strings.ValueShouldNotBeGreaterThanMax, Max), fieldValue));
     }
     if (Max == null)
     {
         return(Error(string.Format(Strings.ValueShouldNotBeLessThanMin, Min), fieldValue));
     }
     return(Error(string.Format(Strings.ValueShouldNotBeLessThanMinOrGreaterThanMax, Min, Max), fieldValue));
 }
Пример #20
0
        public void Ensure_Context_Is_Persisted()
        {
            var context = Tuple.Create("Name here", "Value here");

            var contextDictionary = new Dictionary <object, object>();

            contextDictionary.Add(context.Item1, context.Item2);

            var testContext = new TestContext();

            testContext.KeyName     = context.Item1;
            testContext.RunTimeType = typeof(string);
            testContext.Value       = context.Item2;

            var result = ValidationHandler.Validate(testContext, contextDictionary);

            Assert.IsNull(result);
        }
Пример #21
0
        public void Validation_Nested_List_Cast_To_BaseType()
        {
            var input = "This is a long string that should not pass validation so we are going to continue rambling on and on for a while meow";
            var obj   = new NestedListValidationObject();

            obj.NestedObject.Add(new BasicValidationObject()
            {
                StringProperty = input, EmailProperty = "invalid email", IntegerProperty = 45
            });
            obj.NestedObject.Add(new ExtendedBasicValidationObject()
            {
                StringProperty = input, EmailProperty = "invalid email", IntegerProperty = 45
            });
            obj.GuidID = "Not A Guid";

            var results = ValidationHandler.Validate(obj);

            Assert.AreEqual("NestedObject[1].ExtendedProperty", results[4].MemberNames.First());
        }
Пример #22
0
 public void ValidationLoader_AttributeTest_BadTypeName()
 {
     var obj    = new DomainObjectError();
     var result = ValidationHandler.Validate(obj);
 }
Пример #23
0
        public void Pathing_Tests_IValidatableObject()
        {
            Nested <NestedSubType> n;

            n         = new Nested <NestedSubType>();
            n.Options = new List <NestedSubType> {
                new NestedSubType()
                {
                    ReturnValidationError = false
                },
                new NestedSubType()
                {
                    ReturnValidationError = false
                }
            };

            var result = ValidationHandler.Validate(n, new Dictionary <object, object>(), false);

            Assert.IsNull(result);


            n         = new Nested <NestedSubType>();
            n.Options = new List <NestedSubType> {
                new NestedSubType()
                {
                    ReturnValidationError = true, UseValidationPathResult = true
                },
                new NestedSubType()
                {
                    ReturnValidationError = true, UseValidationPathResult = true
                }
            };

            result = ValidationHandler.Validate(n, new Dictionary <object, object>(), false);
            Assert.IsNotNull(result);
            for (int i = 0; i < result.Count; i++)
            {
                Assert.AreEqual($"Options[{i}].UserName", result[i].MemberNames.FirstOrDefault());
            }

            n         = new Nested <NestedSubType>();
            n.Options = new List <NestedSubType> {
                new NestedSubType()
                {
                    ReturnValidationError = true, UseValidationPathResult = false
                },
                new NestedSubType()
                {
                    ReturnValidationError = true, UseValidationPathResult = false
                }
            };

            result = ValidationHandler.Validate(n, new Dictionary <object, object>(), false);
            Assert.IsNotNull(result);
            for (int i = 0; i < result.Count; i++)
            {
                Assert.AreEqual($"Options[{i}].UserName", result[i].MemberNames.FirstOrDefault());
            }

            n         = new Nested <NestedSubType>();
            n.Options = new List <NestedSubType> {
                new NestedSubType()
                {
                    ReturnValidationError = false
                },
            };
            n.Options[0].EndlessNesting.Add(new NestedSubType()
            {
                ReturnValidationError = true, UseValidationPathResult = true
            });
            n.Options[0].EndlessNesting.Add(new NestedSubType()
            {
                ReturnValidationError = false, UseValidationPathResult = true
            });
            n.Options[0].EndlessNesting.Add(new NestedSubType()
            {
                ReturnValidationError = true, UseValidationPathResult = true
            });

            result = ValidationHandler.Validate(n, new Dictionary <object, object>(), false);
            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count);
            Assert.AreEqual($"Options[0].EndlessNesting[0].UserName", result[0].MemberNames.FirstOrDefault());
            Assert.AreEqual($"Options[0].EndlessNesting[2].UserName", result[1].MemberNames.FirstOrDefault());
        }
Пример #24
0
        public void Pathing_Tests_IValidatableObject_BaseType()
        {
            Nested <NestedSubTypeBase> n;

            //var t = AttributeFinder.FindValidatableProperties(typeof(NestedSubType));
            //t.First().Item1.GetCustomAttributes(

            n         = new Nested <NestedSubTypeBase>();
            n.Options = new List <NestedSubTypeBase> {
                new NestedSubType()
                {
                    ReturnValidationError = false
                },
                new NestedSubType()
                {
                    ReturnValidationError = false
                }
            };

            var result = ValidationHandler.Validate(n, new Dictionary <object, object>(), false);

            Assert.IsNull(result);


            n         = new Nested <NestedSubTypeBase>();
            n.Options = new List <NestedSubTypeBase> {
                new NestedSubType()
                {
                    ReturnValidationError = true, UseValidationPathResult = true
                },
                new NestedSubType()
                {
                    ReturnValidationError = true, UseValidationPathResult = true
                }
            };

            result = ValidationHandler.Validate(n, new Dictionary <object, object>(), false);
            Assert.IsNotNull(result);
            for (int i = 0; i < result.Count; i++)
            {
                Assert.AreEqual($"Options[{i}].UserName", result[i].MemberNames.FirstOrDefault());
            }

            n         = new Nested <NestedSubTypeBase>();
            n.Options = new List <NestedSubTypeBase> {
                new NestedSubType()
                {
                    ReturnValidationError = true, UseValidationPathResult = false
                },
                new NestedSubType()
                {
                    ReturnValidationError = true, UseValidationPathResult = false
                }
            };

            result = ValidationHandler.Validate(n, new Dictionary <object, object>(), false);
            Assert.IsNotNull(result);
            for (int i = 0; i < result.Count; i++)
            {
                Assert.AreEqual($"Options[{i}].UserName", result[i].MemberNames.FirstOrDefault());
            }

            //n = new Nested<NestedSubTypeBase>();
            //n.Options = new List<NestedSubTypeBase> {
            //    new NestedSubType() { ReturnValidationError = false},
            //};
            //n.Options[0].EndlessNesting.Add(new NestedSubType() { ReturnValidationError = true, UseValidationPathResult = true });
            //n.Options[0].EndlessNesting.Add(new NestedSubType() { ReturnValidationError = false, UseValidationPathResult = true });
            //n.Options[0].EndlessNesting.Add(new NestedSubType() { ReturnValidationError = true, UseValidationPathResult = true });

            //result = ValidationHandler.Validate(n, new Dictionary<object, object>(), false);
            //Assert.IsNotNull(result);
            //Assert.AreEqual(2, result.Count);
            //Assert.AreEqual($"Options[0].EndlessNesting[0].UserName", result[0].MemberNames.FirstOrDefault());
            //Assert.AreEqual($"Options[0].EndlessNesting[2].UserName", result[1].MemberNames.FirstOrDefault());
        }
Пример #25
0
 /// <summary>
 /// Run validation event to perform custom validations
 /// </summary>
 /// <param name="validationResults">Object to contain any validation errors/warnings</param>
 /// <returns>Value indicating if the form is valid or not</returns>
 public override async Task RunValidation(object data, ModelStateDictionary validationResults)
 {
     await _validationHandler.Validate(data, validationResults);
 }