Пример #1
0
        private static Task HandleModelValidationExceptionAsync(HttpContext context, ModelValidationException resultException)
        {
            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = resultException.StatusCode;

            return(context.Response.WriteAsync(JsonConvert.SerializeObject(new ApiResponse(false,
                                                                                           resultException.ErrorMessage, null, resultException.ErrorData))));
        }
        public static void AddModelError(this ModelStateDictionary modelState, ModelValidationException modelValidationException)
        {
            if (modelValidationException == null)
            {
                throw new ArgumentNullException("modelValidationException cannot be null.");
            }

            modelState.AddModelError(modelValidationException.ValidationResult);
        }
Пример #3
0
 public override async Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
 {
     if (actionContext.ModelState.IsValid == false)
     {
         var exception     = new ModelValidationException(actionContext.ModelState);
         var developerName = ExceptionHandlerUtilities.GetDeveloperName(actionContext.Request);
         actionContext.Response = await ExceptionHandlerUtilities.ReportExceptionAndCreateResponseAsync(actionContext.Request, exception, developerName);
     }
 }
Пример #4
0
        public void Should_keep_validation_errors()
        {
            List <ValidationResult>      validationResults = new List <ValidationResult>();
            ModelValidationException     ex = new ModelValidationException(validationResults);
            ModelValidationErrorResponse er = new ModelValidationErrorResponse();

            er.FillFromException(ex);

            Assert.Equal(validationResults, er.ValidationErrors);
        }
Пример #5
0
        public void String_and_inner_Ctor_creates_empty_exception()
        {
            CodeGenerator.IsValidLanguageIndependentIdentifier("d");

            var inner = new InvalidOperationException();
            var e     = new ModelValidationException("A", inner);

            Assert.Equal("A", e.Message);
            Assert.Equal(inner, e.InnerException);
        }
Пример #6
0
        private static string GetMessage(ModelValidationException ex)
        {
            var errors = new StringBuilder();

            errors.AppendLine();
#if DEBUG
            errors.AppendLine($"[{ex.GetType().Name}]");
#endif
            errors.AppendLine($"داده های ارسالی به ساختار داده ای نامعتبر می باشد");
            return(errors.ToString());
        }
Пример #7
0
        public void Can_create_exception_with_errors()
        {
            var modelValidationException
                = new ModelValidationException(
                      new[]
            {
                (new DataModelErrorEventArgs
                {
                    ErrorMessage = "Foo"
                })
            });

            Assert.True(modelValidationException.Message.Contains("Foo"));
        }
Пример #8
0
        public void Should_serializate_correctly()
        {
            ModelValidationException ex = new ModelValidationException(ValidationResults);

            // Save the full ToString() value, including the exception message and stack trace.
            string exceptionToString = ex.ToString();

            string serializedData = JsonSerializer.Serialize(ex);

            ex = JsonSerializer.Deserialize <ModelValidationException>(serializedData);

            // Make sure custom properties are preserved after serialization
            Assert.Equal(Message, ex.Message);
            Assert.Equal(2, ex.ValidationErrors.Count);
            Assert.Equal(Error1.ErrorMessage, ex.ValidationErrors[0].ErrorMessage);
            Assert.Equal(Error2.ErrorMessage, ex.ValidationErrors[1].ErrorMessage);

            // Double-check that the exception message and stack trace (owned by the base Exception) are preserved
            Assert.Equal(exceptionToString, ex.ToString());
        }
Пример #9
0
        public void OnActionExecuting(ActionExecutingContext context)
        {
            if (!context.ModelState.IsValid)
            {
                var apiException = new ModelValidationException();
                foreach (var modelStateKey in context.ModelState.Keys)
                {
                    var modelStateVal = context.ModelState[modelStateKey];


                    var validationExceptions = new ApiValidationError()
                    {
                        Key    = modelStateKey,
                        Values = modelStateVal.Errors.Select(x => x.ErrorMessage).ToArray(),
                    };
                    apiException.apiValidationErrors.Add(validationExceptions);
                }
                throw apiException;
            }
        }
Пример #10
0
        static public IList <string> diagramValidation(EA.Repository Repository, EA.Diagram diagram)
        {
            JSchema jschema    = null;
            JObject json       = null;
            String  classifier = null;

            try
            {
                //logger.log("Validate Sample");

                Hashtable h = sampleToJObject(Repository, diagram);

                json       = (JObject)h["json"];
                classifier = (String)h["class"];

                //logger.log("JObject formed");

                EA.Package samplePkg      = Repository.GetPackageByID(diagram.PackageID);
                EA.Package samplesPackage = Repository.GetPackageByID(samplePkg.ParentID);
                EA.Package apiPackage     = Repository.GetPackageByID(samplesPackage.ParentID);

                EA.Package schemaPackage = null;

                foreach (EA.Package p in apiPackage.Packages)
                {
                    if (p != null && p.Name.Equals(APIAddinClass.API_PACKAGE_SCHEMAS))
                    {
                        schemaPackage = p;
                    }
                }
                if (schemaPackage == null)
                {
                    throw new Exception("No Schemas package found");
                }

                EA.Diagram schemaDiagram = null;
                foreach (EA.Diagram d in schemaPackage.Diagrams)
                {
                    if (d.Stereotype != null && d.Stereotype.Equals(APIAddinClass.EA_STEREOTYPE_SCHEMADIAGRAM))
                    {
                        logger.log("Checking diagram root:" + d.Name);
                        Hashtable  ht          = SchemaManager.schemaDiagramRoot(Repository, d);
                        EA.Element rootElement = (EA.Element)ht["class"];
                        logger.log("Comparing diagram root" + rootElement.Name + " equals " + classifier);
                        if (rootElement.Name == classifier)
                        {
                            logger.log("Found corresponding schema diagram:" + d.Name);
                            schemaDiagram = d;
                            break;
                        }
                    }
                }

                if (schemaDiagram == null)
                {
                    ModelValidationException mex = new ModelValidationException("Invalid Sample or Schema");
                    mex.errors.messages.Add("There is no schema with a root classifier of:" + classifier);
                    throw mex;
                }


                jschema = SchemaManager.schemaToJsonSchema(Repository, schemaDiagram).Value;
            }
            catch (ModelValidationException ex)
            {
                return(ex.errors.messages);
            }

            IList <string> messages;

            if (!json.IsValid(jschema, out messages))
            {
                logger.log("Sample is not valid:");
                return(messages);
            }
            else
            {
                logger.log("Sample is Valid!");
                return(null);
            }
        }
Пример #11
0
        public void String_Ctor_creates_empty_exception()
        {
            var e = new ModelValidationException("A");

            Assert.Equal("A", e.Message);
        }
Пример #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        public static string Get(this HttpContext context, Exception ex)
        {
            var responseModel = new ApiResponse();

            try
            {
                context.Response.StatusCode = (int)HttpStatusCode.OK;

                if (ex.GetType() == typeof(SecurityTokenValidationException))
                {
                    responseModel.Message       = "Invalid token";
                    responseModel.Status        = ApplicationStatusCode.InvalidToken;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(SecurityTokenInvalidIssuerException))
                {
                    responseModel.Message       = "Invalid issuer";
                    responseModel.Status        = ApplicationStatusCode.InvalidIssuer;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(SecurityTokenExpiredException))
                {
                    responseModel.Message       = "Token expired";
                    responseModel.Status        = ApplicationStatusCode.TokenExpired;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(ModelValidationException))
                {
                    ModelValidationException?error = ex as ModelValidationException;
                    responseModel.Status        = ApplicationStatusCode.ModelValidation;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(ArgumentNullException))
                {
                    ModelValidationException error = ex as ModelValidationException;
                    responseModel.Status        = ApplicationStatusCode.ModelValidation;
                    responseModel.Message       = "Parameter passed is incorrect.";
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(AlreadyExistException))
                {
                    responseModel.Status        = ApplicationStatusCode.AlreadyExist;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(NotFoundException))
                {
                    responseModel.Status        = ApplicationStatusCode.NotFound;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.NotFound;
                }
                else if (ex.GetType() == typeof(NotActiveException))
                {
                    responseModel.Status        = ApplicationStatusCode.NotActive;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(BadRequestException))
                {
                    responseModel.Status        = ApplicationStatusCode.BadRequest;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(VerificationCodeException))
                {
                    responseModel.Status        = ApplicationStatusCode.VerificationCode;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(PasswordException))
                {
                    responseModel.Status        = ApplicationStatusCode.PasswordError;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(SessionExpiredException))
                {
                    responseModel.Status        = ApplicationStatusCode.SessionExpired;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(InvalidOperationException))
                {
                    responseModel.Status        = ApplicationStatusCode.InvalidOperation;
                    responseModel.Message       = ex.Message; // "Invalid Request";
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else if (ex.GetType() == typeof(LoginException))
                {
                    responseModel.Status        = ApplicationStatusCode.LoginOperation;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }
                else
                {
                    responseModel.Status        = ApplicationStatusCode.GenericError;
                    responseModel.Message       = ex.Message;
                    context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                }

                return(JsonConvert.SerializeObject(responseModel));
            }
            catch (Exception _ex)
            {
                responseModel.Status  = ApplicationStatusCode.GenericError;
                responseModel.Message = _ex.Message != null ? _ex.Message : "Please contact the administrator";

                return(JsonConvert.SerializeObject(responseModel));
            }
        }