Esempio n. 1
0
        public async Task OnResourceExecutionAsync_InvalidBody_ValidationErrorRaised()
        {
            JSchemaValidationFilterAttribute attribute = new JSchemaValidationFilterAttribute();

            ResourceExecutedContext context = await CallOnResourceExecutionAsync(attribute, typeof(string));

            Assert.Equal(1, context.ModelState["input"].Errors.Count);
            Assert.IsType <JSchemaValidationErrorsException>(context.ModelState["input"].Errors[0].Exception);

            JSchemaValidationErrorsException exception = (JSchemaValidationErrorsException)context.ModelState["input"].Errors[0].Exception;

            Assert.Equal(1, exception.SchemaValidationErrors.Count);

            Assert.Equal("Invalid type. Expected String but got Object.", exception.SchemaValidationErrors[0].Message);
        }
        public async Task OnResultExecutionAsync_InvalidResult_Error()
        {
            const string content = "123";

            JSchemaValidationFilterAttribute attribute = new JSchemaValidationFilterAttribute();

            HttpContext httpContext = ObjectFactory.CreateHttpContext();

            JSchemaValidationErrorsException ex = await Assert.ThrowsAsync <JSchemaValidationErrorsException>(() => CallOnResultExecutionAsync(attribute, new Func <string>(() => string.Empty).Method, content, httpContext));

            Assert.Equal("Invalid type. Expected String but got Integer.", ex.SchemaValidationErrors[0].Message);

            Assert.Equal(3, httpContext.Response.Body.Position);

            httpContext.Response.Body.Seek(0, SeekOrigin.Begin);
            string resultContent = await new StreamReader(httpContext.Response.Body).ReadToEndAsync();

            Assert.Equal(content, resultContent);
        }