public void Validation_Method_Invalid_Bad_Params_Throws() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = { "LongerThan5Chars", 2.0 }; // legal params ExceptionHelper.ExpectValidationException(delegate() { ValidationUtilities.ValidateMethodCall("MethodWithParameters", context, parameters); }, "The field FirstParameterDisplayName must be a string with a maximum length of 5.", typeof(StringLengthAttribute), "LongerThan5Chars"); }
// Method level validator public static ValidationResult IsValTestMethodValid(object vtcObject, ValidationContext context) { ValidationResult validationResult = null; ValTestClass vtc = vtcObject as ValTestClass; bool result = vtc != null && vtc._failMethod == false; if (!result) { validationResult = new ValidationResult("-" + context.DisplayName); } return(validationResult ?? ValidationResult.Success); }
public void Validation_Method_Invalid_Good_Params_Throws() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = { "hello", 2.0 }; // legal params vtc._failMethod = true; // tells validation method below to fail the IsValid ExceptionHelper.ExpectValidationException(delegate() { ValidationUtilities.ValidateMethodCall("MethodWithParameters", context, parameters); }, "-MethodDisplayName", typeof(CustomValidationAttribute), vtc); }
public void Validation_Method_Valid_No_Parameters() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = null; bool isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithNoParameters", context, parameters, null); Assert.IsTrue(isValid); List<ValidationResult> output = new List<ValidationResult>(); isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithNoParameters", context, parameters, output); Assert.IsTrue(isValid); Assert.AreEqual(0, output.Count); }
// Cross-field validation -- 2 properties must be non-null and equal public static ValidationResult IsValTestValid(object vtcObject, ValidationContext context) { ValidationResult validationResult = null; ValTestClass vtc = vtcObject as ValTestClass; bool result = vtc != null && vtc.RequiredProperty != null && vtc.StringLengthProperty != null && vtc.StringLengthProperty.Equals(vtc.RequiredProperty, StringComparison.Ordinal); if (!result) { validationResult = new ValidationResult("!" + context.DisplayName); } return(validationResult ?? ValidationResult.Success); }
public void Validation_Method_Valid_No_Parameters() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = null; bool isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithNoParameters", context, parameters, null); Assert.IsTrue(isValid); List <ValidationResult> output = new List <ValidationResult>(); isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithNoParameters", context, parameters, output); Assert.IsTrue(isValid); Assert.AreEqual(0, output.Count); }
public void Validation_Method_Invalid_No_Params() { ValTestClass vtc = new ValTestClass(); vtc._failMethod = true; // forces failure ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); ExceptionHelper.ExpectException <MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, null, null); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters' accepting zero parameters could not be found."); ExceptionHelper.ExpectException <MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, null, new List <ValidationResult>()); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters' accepting zero parameters could not be found."); }
public void Validation_Method_Invalid_Null_Required_Nullable() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); string message = "The doubleParam field is required."; object[] parameters = { null }; // param is nullable but marked [Required] ExceptionHelper.ExpectValidationException(delegate { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithRequiredNullableParameter", context, parameters, null); }, message, typeof(RequiredAttribute), parameters[0]); List <ValidationResult> output = new List <ValidationResult>(); bool isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithRequiredNullableParameter", context, parameters, output); Assert.IsFalse(isValid); Assert.AreEqual(1, output.Count); UnitTestHelper.AssertListContains(output, message); }
public void Validation_Fail_Method_Null_ValueType() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = { "xxx", null }; // 2nd param should be double // IsValid entry point ExceptionHelper.ExpectException <MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters('System.String', null)' could not be found. Parameter count: 2."); // Validate entry point ExceptionHelper.ExpectException <MissingMethodException>(delegate() { ValidationUtilities.ValidateMethodCall("MethodWithParameters", context, parameters); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters('System.String', null)' could not be found. Parameter count: 2."); }
public void Validation_Method_Invalid_Null_Params() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = null; // actually requires 2 params // IsValid entry point ExceptionHelper.ExpectException <MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters' accepting zero parameters could not be found."); // Validate entry point ExceptionHelper.ExpectException <MissingMethodException>(delegate() { ValidationUtilities.ValidateMethodCall("MethodWithParameters", context, parameters); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters' accepting zero parameters could not be found."); }
public void Validation_Method_Invalid_Bad_Params() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); string message = "The field FirstParameterDisplayName must be a string with a maximum length of 5."; object[] parameters = { "LongerThan5Chars", 2.0 }; // legal params ExceptionHelper.ExpectValidationException(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, message, typeof(StringLengthAttribute), parameters[0]); List <ValidationResult> output = new List <ValidationResult>(); bool isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, output); Assert.IsFalse(isValid); Assert.AreEqual(1, output.Count); UnitTestHelper.AssertListContains(output, message); }
public void Validation_Fail_Method_Too_Many_Params() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = { "xxx", 2.0, 5 }; // actually requires 2 params // IsValid entry point ExceptionHelper.ExpectException <MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters('System.String', 'System.Double', 'System.Int32')' could not be found. Parameter count: 3."); // Validate entry point ExceptionHelper.ExpectException <MissingMethodException>(delegate() { ValidationUtilities.ValidateMethodCall("MethodWithParameters", context, parameters); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters('System.String', 'System.Double', 'System.Int32')' could not be found. Parameter count: 3."); }
public void Validation_Method_Errors_Must_Match_Expected_Method_Description() { ValTestClass instance = new ValTestClass() { _failMethod = true }; ValidationContext context = new ValidationContext(instance, null, null); MethodInfo method = typeof(ValTestClass).GetMethod("MethodWithNoParameters"); List <ValidationResult> results = new List <ValidationResult>(); ExceptionHelper.ExpectException <ValidationException>(delegate { ValidationUtilities.ValidateMethodCall("MethodWithNoParameters", context, null); }, "-MethodWithNoParameters"); bool result = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithNoParameters", context, null, results); Assert.AreEqual(1, results.Count); Assert.AreEqual("-MethodWithNoParameters", results[0].ErrorMessage); }
public void Validation_Method_Invalid_Good_Params() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); string message = "-MethodDisplayName"; vtc._failMethod = true; // tells validation method below to fail the IsValid object[] parameters = { "hello", 2.0 }; // legal params ExceptionHelper.ExpectValidationException(delegate { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, message, typeof(CustomValidationAttribute), vtc); List<ValidationResult> output = new List<ValidationResult>(); bool isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, output); Assert.IsFalse(isValid); Assert.AreEqual(1, output.Count); UnitTestHelper.AssertListContains(output, message); // hyphen means it came from default formatter }
public void Validation_Method_Invalid_Good_Params() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); string message = "-MethodDisplayName"; vtc._failMethod = true; // tells validation method below to fail the IsValid object[] parameters = { "hello", 2.0 }; // legal params ExceptionHelper.ExpectValidationException(delegate { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, message, typeof(CustomValidationAttribute), vtc); List <ValidationResult> output = new List <ValidationResult>(); bool isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, output); Assert.IsFalse(isValid); Assert.AreEqual(1, output.Count); UnitTestHelper.AssertListContains(output, message); // hyphen means it came from default formatter }
public void Validation_Method_Invalid_Bad_Params() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); string message = "The field FirstParameterDisplayName must be a string with a maximum length of 5."; object[] parameters = { "LongerThan5Chars", 2.0 }; // legal params ExceptionHelper.ExpectValidationException(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, message, typeof(StringLengthAttribute), parameters[0]); List<ValidationResult> output = new List<ValidationResult>(); bool isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, output); Assert.IsFalse(isValid); Assert.AreEqual(1, output.Count); UnitTestHelper.AssertListContains(output, message); }
public void Validation_Method_Errors_Must_Match_Expected_Method_Description() { ValTestClass instance = new ValTestClass() { _failMethod = true }; ValidationContext context = new ValidationContext(instance, null, null); MethodInfo method = typeof(ValTestClass).GetMethod("MethodWithNoParameters"); List<ValidationResult> results = new List<ValidationResult>(); ExceptionHelper.ExpectException<ValidationException>(delegate { ValidationUtilities.ValidateMethodCall("MethodWithNoParameters", context, null); }, "-MethodWithNoParameters"); bool result = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithNoParameters", context, null, results); Assert.AreEqual(1, results.Count); Assert.AreEqual("-MethodWithNoParameters", results[0].ErrorMessage); }
public void Validation_Fail_Method_Too_Many_Params() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = { "xxx", 2.0, 5 }; // actually requires 2 params // IsValid entry point ExceptionHelper.ExpectException<MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters('System.String', 'System.Double', 'System.Int32')' could not be found. Parameter count: 3."); // Validate entry point ExceptionHelper.ExpectException<MissingMethodException>(delegate() { ValidationUtilities.ValidateMethodCall("MethodWithParameters", context, parameters); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters('System.String', 'System.Double', 'System.Int32')' could not be found. Parameter count: 3."); }
public void Validation_Fail_Method_Null_ValueType() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = { "xxx", null }; // 2nd param should be double // IsValid entry point ExceptionHelper.ExpectException<MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters('System.String', null)' could not be found. Parameter count: 2."); // Validate entry point ExceptionHelper.ExpectException<MissingMethodException>(delegate() { ValidationUtilities.ValidateMethodCall("MethodWithParameters", context, parameters); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters('System.String', null)' could not be found. Parameter count: 2."); }
public void Validation_Method_Invalid_Null_Required_Nullable() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); string message = "The doubleParam field is required."; object[] parameters = { null }; // param is nullable but marked [Required] ExceptionHelper.ExpectValidationException(delegate { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithRequiredNullableParameter", context, parameters, null); }, message, typeof(RequiredAttribute), parameters[0]); List<ValidationResult> output = new List<ValidationResult>(); bool isValid = ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithRequiredNullableParameter", context, parameters, output); Assert.IsFalse(isValid); Assert.AreEqual(1, output.Count); UnitTestHelper.AssertListContains(output, message); }
public void Validation_Method_Invalid_No_Params() { ValTestClass vtc = new ValTestClass(); vtc._failMethod = true; // forces failure ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); ExceptionHelper.ExpectException<MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, null, null); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters' accepting zero parameters could not be found."); ExceptionHelper.ExpectException<MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, null, new List<ValidationResult>()); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters' accepting zero parameters could not be found."); }
public void Validation_Method_Invalid_Null_Params() { ValTestClass vtc = new ValTestClass(); ValidationContext context = ValidationUtilities.CreateValidationContext(vtc, null); object[] parameters = null; // actually requires 2 params // IsValid entry point ExceptionHelper.ExpectException<MissingMethodException>(delegate() { ValidationUtilities.TryValidateCustomUpdateMethodCall("MethodWithParameters", context, parameters, null); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters' accepting zero parameters could not be found."); // Validate entry point ExceptionHelper.ExpectException<MissingMethodException>(delegate() { ValidationUtilities.ValidateMethodCall("MethodWithParameters", context, parameters); }, "Method 'OpenRiaServices.DomainServices.Hosting.Test.ValidationUtilitiesTests+ValTestClass.MethodWithParameters' accepting zero parameters could not be found."); }