/// <summary> /// Source: https://stackoverflow.com/questions/2167811/unit-testing-asp-net-dataannotations-validation /// Source2: https://github.com/ovation22/DataAnnotationsValidatorRecursive /// Validates an object based on the data annotations set on the object's properties and returns the validation result. /// </summary> /// <param name="model">The object to validate</param> /// <returns>The validation result for the object.</returns> public static IList <ValidationResult> ValidateModel(object model) { var validator = new DataAnnotationsValidator.DataAnnotationsValidator(); var validationResults = new List <ValidationResult>(); validator.TryValidateObjectRecursive(model, validationResults); return(validationResults); }
public ConfigObjectCreator(Type objectType, ConfigCache configCache, UsageTracking usageTracking, ILog log, Func <string, AggregatingHealthStatus> getAggregatedHealthCheck) { UsageTracking = usageTracking; Log = log; ObjectType = objectType; ConfigCache = configCache; ConfigPath = GetConfigPath(); healthStatus = getAggregatedHealthCheck("Configuration"); Validator = new DataAnnotationsValidator.DataAnnotationsValidator(); }
public ConfigObjectCreator(Type objectType, ConfigCache configCache, UsageTracking usageTracking, ILog log, Func <string, AggregatingHealthStatus> getAggregatedHealthCheck) { UsageTracking = usageTracking; Log = log; ObjectType = objectType; ConfigCache = configCache; ConfigPath = GetConfigPath(); Validator = new DataAnnotationsValidator.DataAnnotationsValidator(); Create(); ConfigCache.ConfigChanged.LinkTo(new ActionBlock <ConfigItemsCollection>(c => Create())); InitializeBroadcast(); healthStatus = getAggregatedHealthCheck("Configuration"); healthStatus.RegisterCheck(ObjectType.Name, HealthCheck); }
private static IEnumerable <string> ValidationErrors(object obj) { var results = new List <ValidationResult>(); var validator = new DataAnnotationsValidator.DataAnnotationsValidator(); if (!validator.TryValidateObjectRecursive(obj, results) && !results.Any()) { yield return("Object validation failed"); } foreach (var validationResult in results) { yield return(validationResult.ErrorMessage); } }
public static void Validate(object obj) { List <ValidationResult> validationResultCollection = new List <ValidationResult>(); bool isValid = new DataAnnotationsValidator.DataAnnotationsValidator().TryValidateObjectRecursive(obj, validationResultCollection); if (isValid) { return; } string errorDetails = JsonSerializer.Serialize(BuildErrorDetails(validationResultCollection)); throw BuildException(errorDetails, obj?.GetType()); }
public static void SimulateValidation(object model, ControllerBase controller) { // mimic the behaviour of the model binder which is responsible for Validating the Model var validationContext = new ValidationContext(model, null, null); var validationResults = new List <ValidationResult>(); var validator = new DataAnnotationsValidator.DataAnnotationsValidator(); validator.TryValidateObject(model, validationResults); foreach (var validationResult in validationResults) { controller.ModelState.AddModelError(validationResult.MemberNames.First(), validationResult.ErrorMessage); } }
public ConfigObjectCreator(Type objectType, ConfigCache configCache, UsageTracking usageTracking, ILog log, IHealthMonitor healthMonitor) { UsageTracking = usageTracking; Log = log; ObjectType = objectType; ConfigCache = configCache; ConfigPath = GetConfigPath(); Validator = new DataAnnotationsValidator.DataAnnotationsValidator(); Create(); ConfigCache.ConfigChanged.LinkTo(new ActionBlock <ConfigItemsCollection>(c => Create())); InitializeBroadcast(); healthMonitor.SetHealthFunction($"{ObjectType.Name} Configuration", HealthCheck); }
public bool TryValidateRecursively(T toscaObject, out List <ValidationResult> validationResults) { validationResults = new List <ValidationResult>(); var dataAnnotationsValidator = new DataAnnotationsValidator.DataAnnotationsValidator(); try { dataAnnotationsValidator.TryValidateObjectRecursive(toscaObject, validationResults); validationResults = validationResults.Distinct(new ValidationResultEqualityComparer()).ToList(); } catch (TargetInvocationException targetInvocationException) { validationResults.Add(new ValidationResult(targetInvocationException.InnerException.Message)); } return(!validationResults.Any()); }