Exemple #1
0
        /// <summary>
        /// Pick out validation errors and turn these into a suitable exception structure
        /// </summary>
        /// <param name="actionContext">Action Context</param>
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            ModelStateDictionary modelState = actionContext.ModelState;

            if (modelState.IsValid)
            {
                // Only perform the FluentValidation if we've not already failed validation earlier on
                IDependencyScope         scope = actionContext.Request.GetDependencyScope();
                IFluentValidatorProvider mvp   = scope.GetService(typeof(IFluentValidatorProvider)) as IFluentValidatorProvider;

                if (mvp != null)
                {
                    ModelMetadataProvider metadataProvider = actionContext.GetMetadataProvider();

                    foreach (KeyValuePair <string, object> argument in actionContext.ActionArguments)
                    {
                        if (argument.Value != null && !argument.Value.GetType().IsSimpleType())
                        {
                            ModelMetadata metadata = metadataProvider.GetMetadataForType(
                                () => argument.Value,
                                argument.Value.GetType()
                                );

                            InternalValidationContext validationContext = new InternalValidationContext()
                            {
                                MetadataProvider = metadataProvider,
                                ActionContext    = actionContext,
                                ModelState       = actionContext.ModelState,
                                Visited          = new HashSet <object>(),
                                KeyBuilders      = new Stack <IKeyBuilder>(),
                                RootPrefix       = String.Empty,
                                Provider         = mvp,
                                Scope            = scope
                            };

                            ValidateNodeAndChildren(metadata, validationContext, null);
                        }
                    }
                }
            }
        }
Exemple #2
0
 public void Setup()
 {
     _scope       = new Mock <IDependencyScope>().Object;
     _mockFactory = new Mock <IScopedValidatorFactory>(MockBehavior.Strict);
     _sut         = new FluentValidatorProvider(_mockFactory.Object);
 }