Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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());
        }