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); }