public void should_return_null_when_the_collection_is_empty() { var httpContext = Substitute.For <HttpContextBase>(); var context = new AspNetMvcContext(this, new Exception(), httpContext); context.RouteData = new RouteData(); var sut = new RouteDataProvider(); var result = sut.Collect(context); result.Should().BeNull(); }
public void should_not_return_an_empty_collection_when_the_collection_is_empty() { var httpContext = Substitute.For <HttpContextBase>(); var context = new AspNetMvcContext(this, new Exception(), httpContext); context.ModelState = new Dictionary <string, ModelState>(); var sut = new ModelStateProvider(); var result = sut.Collect(context); result.Should().BeNull(); }
public void should_include_included_items() { var httpContext = Substitute.For <HttpContextBase>(); var context = new AspNetMvcContext(this, new Exception(), httpContext); context.ViewBag = new { Id = 3, Title = "Hello world" }; var sut = new ViewBagProvider(); var result = sut.Collect(context); result.Property("Id").Should().Be("3"); result.Property("Title").Should().Be("Hello world"); }
public void should_include_included_items() { var httpContext = Substitute.For <HttpContextBase>(); var context = new AspNetMvcContext(this, new Exception(), httpContext); var routeData = new RouteData(); routeData.DataTokens.Add("MyToken", "Value1"); routeData.Values.Add("MyValue", "Value2"); context.RouteData = routeData; var sut = new RouteDataProvider(); var result = sut.Collect(context); result.Property("DataToken[\"MyToken\"]").Should().Be("Value1"); result.Property("Values[\"MyValue\"]").Should().Be("Value2"); }
public void should_include_included_items() { var httpContext = Substitute.For <HttpContextBase>(); var context = new AspNetMvcContext(this, new Exception(), httpContext); var tempData = new TempDataDictionary { { "MyToken", "Value1" }, { "MyValue", 20 } }; context.TempData = tempData; var sut = new TempDataProvider(); var result = sut.Collect(context); result.Property("MyToken").Should().Be("Value1"); result.Property("MyValue").Should().Be("20"); }
public void should_include_included_items() { var httpContext = Substitute.For <HttpContextBase>(); var context = new AspNetMvcContext(this, new Exception(), httpContext); var items = new NameValueCollection { { "MyKey", "Value" } }; httpContext.Request.QueryString.Returns(items); var sut = new QueryStringProvider(); var result = sut.Collect(context); result.Property("MyKey").Should().Be("Value"); }
public void should_include_included_items() { var httpContext = Substitute.For <HttpContextBase>(); var context = new AspNetMvcContext(this, new Exception(), httpContext); var mySession = new MySession { { "MyToken", "Value1" }, { "MyValue", 20 } }; context.HttpContext.Session.Returns(mySession); var sut = new SessionProvider(); var result = sut.Collect(context); result.Property("MyToken").Should().Be("Value1"); result.Property("MyValue").Should().Be("20"); }
public void should_include_included_items() { var httpContext = Substitute.For <HttpContextBase>(); var context = new AspNetMvcContext(this, new Exception(), httpContext); var items = new Dictionary <string, ModelState> { { "MyKey", BuildState("Raw", "Attempted", "Failed") }, { "NoError", BuildState(5, "5", null) } }; context.ModelState = items; var sut = new ModelStateProvider(); var result = sut.Collect(context); result.Property("MyKey.RawValue").Should().Be("Raw"); result.Property("MyKey.AttemptedValue").Should().Be("Attempted"); result.Property("MyKey.Error").Should().Be("Failed"); result.Properties.ContainsKey("NoError.Error").Should().BeFalse(); }
internal static ErrorReportDTO Invoke(object source, ControllerContext filterContext, Exception exception, IEnumerable <ContextCollectionDTO> extras) { var context = new AspNetMvcContext(source, exception, filterContext.HttpContext); var converter = new ObjectToContextCollectionConverter(); var items = new List <ContextCollectionDTO>(extras) { converter.Convert("IsChildAction", filterContext.IsChildAction), new ContextCollectionDTO("Controller", new Dictionary <string, string> { { "FullName", filterContext.Controller.GetType().FullName } }) }; if (filterContext.Controller == null && source is ControllerBase) { filterContext.Controller = (ControllerBase)source; } if (filterContext.Controller != null) { context.Controller = filterContext.Controller; if (filterContext.Controller.TempData != null && filterContext.Controller.TempData.Count > 0) { context.TempData = filterContext.Controller.TempData; } if (filterContext.Controller.ViewBag != null) { context.ViewBag = filterContext.Controller.ViewBag; } if (filterContext.Controller.ViewData != null && filterContext.Controller.ViewData.Count > 0) { context.ViewData = filterContext.Controller.ViewData; if (filterContext.Controller.ViewData.ModelState != null) { context.ModelState = filterContext.Controller.ViewData.ModelState; } } context.Model = filterContext.Controller?.ViewData?.Model; } if (filterContext.ParentActionViewContext != null) { items.Add(converter.Convert("ParentActionViewContext", filterContext.ParentActionViewContext)); } if (filterContext.RouteData != null) { context.RouteData = filterContext.RouteData; } return(ErrorHttpModule.ExecutePipeline(context, items.ToArray())); }
/// <summary> /// Do the codeRR collection pipeline. /// </summary> /// <param name="context">context</param> /// <param name="contextCollections">Extras</param> public static ErrorReportDTO ExecutePipeline(AspNetMvcContext context, params ContextCollectionDTO[] contextCollections) { if ( context.HttpContext.Request.Url.AbsolutePath.IndexOf("/coderr/submit", StringComparison.OrdinalIgnoreCase) != -1) { ProcessSubmit(context.HttpContext); context.HttpContext.Response.Redirect("~/"); return(null); } if (context.HttpContext.Items.Contains("CoderrReported")) { return(null); } context.HttpContext.Items.Add("CoderrReported", "true"); if (context.HttpApplication == null) { var module = context.Reporter as ErrorHttpModule; if (module?.Application != null) { context.HttpApplication = module.Application; } } if (context.HttpApplication != null) { if (DisplayErrorPage) { context.HttpApplication.Response.Clear(); } } var httpCodeIdentifier = new HttpCodeIdentifier(context.HttpApplication, context.Exception); var report = Err.GenerateReport(context); if (contextCollections.Any()) { var newList = new List <ContextCollectionDTO>(report.ContextCollections); newList.AddRange(contextCollections); report.ContextCollections = newList.ToArray(); } // Add http code var exceptionCollection = report.ContextCollections.FirstOrDefault(x => x.Name == "ExceptionProperties"); if (exceptionCollection != null) { if (!exceptionCollection.Properties.ContainsKey("HttpCode")) { exceptionCollection.Properties["HttpCode"] = httpCodeIdentifier.HttpCode.ToString(); } } if (!DisplayErrorPage || !Err.Configuration.UserInteraction.AskUserForPermission) { Err.UploadReport(report); if (!DisplayErrorPage) { return(report); } } else { TempData[report.ReportId] = report; } // Already rendered an error page. if (context.HttpContext.Items.Contains("OneTrueHandled")) { return(report); } context.HttpContext.Items["OneTrueHandled"] = true; var handler = new CustomControllerContext(context.Exception, report.ReportId) { HttpCode = httpCodeIdentifier.HttpCode, HttpCodeName = httpCodeIdentifier.HttpCodeName }; var ctx = new HttpErrorReporterContext(context.Reporter, context.Exception, context.HttpContext) { ErrorId = report.ReportId, HttpStatusCode = handler.HttpCode, HttpStatusCodeName = handler.HttpCodeName }; context.HttpContext.Response.StatusCode = handler.HttpCode; context.HttpContext.Response.StatusDescription = handler.HttpCodeName; handler.Execute(ctx); return(report); }