public void ShouldReturnGenericErrorWhenInProduction(Exception exception) { // Arrange var environment = A.Fake <IHostingEnvironment>(opts => { opts.ConfigureFake(env => env.EnvironmentName = "Production"); }); var filter = new ExceptionFilter(environment); var filterContext = FilterContextProvider.GetExceptionContext(exception); // Act filter.OnException(filterContext); // Assert filterContext.HttpContext.Response.StatusCode.ShouldBe((int)HttpStatusCode.InternalServerError); var result = filterContext.Result as JsonResult; result.ShouldNotBeNull(); result.Value.ShouldBeOfType <Error>(); var error = (Error)result.Value; error.Type.ShouldBe(ErrorType.Critical); error.Messages.ShouldNotBeEmpty(); }
public void ShouldReturnBadRequestWhenThereAreModelStateErrors(Dictionary <string, string> errors) { // Arrange var context = FilterContextProvider.GetActionExecutingContext("POST"); foreach (var e in errors) { context.ModelState.AddModelError(e.Key, e.Value); } var filter = new ModelStateFilter(); // Act filter.OnActionExecuting(context); // Assert var result = context.Result.ShouldBeOfType <BadRequestObjectResult>(); var error = result.Value.ShouldBeOfType <Error>(); var expectedErrorMessages = errors .Select(e => e.Value) .ToArray(); error.Messages.ShouldAllBe(e => expectedErrorMessages.Contains(e)); }
public void ShouldDoNothingWhenThereAreNoModelStateErrors() { // Arrange var context = FilterContextProvider.GetActionExecutingContext("POST"); // Purposefully not adding any errors var filter = new ModelStateFilter(); // Act filter.OnActionExecuting(context); // Assert context.Result.ShouldNotBeOfType <BadRequestObjectResult>(); }
public void ShouldReturnSerializedExceptionWhenInDevelopment(Exception exception) { // Arrange var environmentMock = new Mock <IHostingEnvironment>(); environmentMock .Setup(e => e.EnvironmentName) .Returns("Development"); var filter = new ExceptionFilter(environmentMock.Object); var filterContext = FilterContextProvider.GetExceptionContext(exception); // Act filter.OnException(filterContext); // Assert filterContext.HttpContext.Response.StatusCode.ShouldBe((int)HttpStatusCode.InternalServerError); var result = filterContext.Result as JsonResult; result.ShouldNotBeNull(); result.Value.ShouldBeOfType <Exception>(); ((Exception)result.Value).Message.ShouldBe(exception.Message); }