protected void Application_Error(Object sender, EventArgs e) { //disable compression (if enabled). More info - http://stackoverflow.com/questions/3960707/asp-net-mvc-weird-characters-in-error-page CompressAttribute.DisableCompression(HttpContext.Current); //log error LogException(Server.GetLastError()); }
public override void ReflectMethod() { object[] ats = ReflectionContext.Method.MethodInfo.GetCustomAttributes(typeof(CompressAttribute), true); if (ats.Length > 0) { CompressAttribute at = (CompressAttribute)ats[0]; CompressOperationBinding opBinding = new CompressOperationBinding(); opBinding.MinLength = at.MinLength; ReflectionContext.OperationBinding.Extensions.Add(opBinding); } }
public void Should_not_compress_when_exception_occurrs_and_exception_is_not_handled() { var httpContext = new Mock <HttpContextBase>(); var requestContext = new RequestContext(httpContext.Object, new RouteData()); var controllerContext = new ControllerContext(requestContext, new Mock <ControllerBase>().Object); var resultContext = new ResultExecutedContext(controllerContext, new Mock <ActionResult>().Object, false, new InvalidOperationException()); var attribute = new CompressAttribute(); httpContext.Setup(c => c.Response.AppendHeader(It.IsAny <string>(), It.IsAny <string>())); attribute.OnResultExecuted(resultContext); httpContext.Verify(c => c.Response.AppendHeader(It.IsAny <string>(), It.IsAny <string>()), Times.Never()); }
public void Should_not_compress_when_action_is_canceled() { var httpContext = new Mock <HttpContextBase>(); var requestContext = new RequestContext(httpContext.Object, new RouteData()); var controllerContext = new ControllerContext(requestContext, new Mock <ControllerBase>().Object); var resultContext = new ResultExecutedContext(controllerContext, new Mock <ActionResult>().Object, true, null); var attribute = new CompressAttribute(); httpContext.Setup(c => c.Response.AppendHeader(It.IsAny <string>(), It.IsAny <string>())); attribute.OnResultExecuted(resultContext); httpContext.Verify(c => c.Response.AppendHeader(It.IsAny <string>(), It.IsAny <string>()), Times.Never()); }
public void OnResultExecuted_ExceptionUnhandled() { // Arrange var filter = m_filterContext.HttpContext.Response.Filter; m_filterContext.Exception = new InvalidOperationException(); m_filterContext.ExceptionHandled = false; var attr = new CompressAttribute(); // Act attr.OnResultExecuted(m_filterContext); // Assert var filterAfter = m_filterContext.HttpContext.Response.Filter; Assert.Same(filter, filterAfter); }
public void OnResultExecuted_Deflate() { // Arrange var headers = m_filterContext.HttpContext.Request.Headers; headers.Add("Accept-Encoding", "deflate"); var filter = m_filterContext.HttpContext.Response.Filter; Assert.IsNotType <DeflateStream>(filter); var attr = new CompressAttribute(); // Act attr.OnResultExecuted(m_filterContext); // Assert filter = m_filterContext.HttpContext.Response.Filter; Assert.NotNull(filter); Assert.IsType <DeflateStream>(filter); }
public void Should_not_compress_for_child_action() { var httpContext = new Mock<HttpContextBase>(); var routeData = new RouteData(); routeData.DataTokens.Add("ParentActionViewContext", new object()); var requestContext = new RequestContext(httpContext.Object, routeData); var controllerContext = new ControllerContext(requestContext, new Mock<ControllerBase>().Object); var resultContext = new ResultExecutedContext(controllerContext, new Mock<ActionResult>().Object, false, null); var attribute = new CompressAttribute(); httpContext.Setup(c => c.Response.AppendHeader(It.IsAny<string>(), It.IsAny<string>())); attribute.OnResultExecuted(resultContext); httpContext.Verify(c => c.Response.AppendHeader(It.IsAny<string>(), It.IsAny<string>()), Times.Never()); }
public void Should_not_compress_for_child_action() { var httpContext = new Mock <HttpContextBase>(); var routeData = new RouteData(); routeData.DataTokens.Add("ParentActionViewContext", new object()); var requestContext = new RequestContext(httpContext.Object, routeData); var controllerContext = new ControllerContext(requestContext, new Mock <ControllerBase>().Object); var resultContext = new ResultExecutedContext(controllerContext, new Mock <ActionResult>().Object, false, null); var attribute = new CompressAttribute(); httpContext.Setup(c => c.Response.AppendHeader(It.IsAny <string>(), It.IsAny <string>())); attribute.OnResultExecuted(resultContext); httpContext.Verify(c => c.Response.AppendHeader(It.IsAny <string>(), It.IsAny <string>()), Times.Never()); }
public void Should_be_able_to_compress() { var httpContext = new Mock<HttpContextBase>(); var requestContext = new RequestContext(httpContext.Object, new RouteData()); var controllerContext = new ControllerContext(requestContext, new Mock<ControllerBase>().Object); var resultContext = new ResultExecutedContext(controllerContext, new Mock<ActionResult>().Object, false, null); httpContext.SetupGet(c => c.Request.Browser.MajorVersion).Returns(7); httpContext.SetupGet(c => c.Request.Headers).Returns(new NameValueCollection { { "Accept-Encoding", "*, deflate, gzip" } }); httpContext.SetupGet(c => c.Response.Filter).Returns(new MemoryStream()); var attribute = new CompressAttribute(); httpContext.Setup(c => c.Response.AppendHeader("Content-encoding", "gzip")).Verifiable(); httpContext.SetupSet(c => c.Response.Filter).Verifiable(); attribute.OnResultExecuted(resultContext); httpContext.Verify(); }
public void Should_be_able_to_compress() { var httpContext = new Mock <HttpContextBase>(); var requestContext = new RequestContext(httpContext.Object, new RouteData()); var controllerContext = new ControllerContext(requestContext, new Mock <ControllerBase>().Object); var resultContext = new ResultExecutedContext(controllerContext, new Mock <ActionResult>().Object, false, null); httpContext.SetupGet(c => c.Request.Browser.MajorVersion).Returns(7); httpContext.SetupGet(c => c.Request.Headers).Returns(new NameValueCollection { { "Accept-Encoding", "*, deflate, gzip" } }); httpContext.SetupGet(c => c.Response.Filter).Returns(new MemoryStream()); var attribute = new CompressAttribute(); httpContext.Setup(c => c.Response.AppendHeader("Content-encoding", "gzip")).Verifiable(); httpContext.SetupSet(c => c.Response.Filter).Verifiable(); attribute.OnResultExecuted(resultContext); httpContext.Verify(); }
public CompressAttributeFixture() { _attribute = new CompressAttribute(); }
protected void Application_Error(Object sender, EventArgs e) { CompressAttribute.DisableCompression(HttpContext.Current); LogException(Server.GetLastError()); }
public void Should_not_compress_when_exception_occurrs_and_exception_is_not_handled() { var httpContext = new Mock<HttpContextBase>(); var requestContext = new RequestContext(httpContext.Object, new RouteData()); var controllerContext = new ControllerContext(requestContext, new Mock<ControllerBase>().Object); var resultContext = new ResultExecutedContext(controllerContext, new Mock<ActionResult>().Object, false, new InvalidOperationException()); var attribute = new CompressAttribute(); httpContext.Setup(c => c.Response.AppendHeader(It.IsAny<string>(), It.IsAny<string>())); attribute.OnResultExecuted(resultContext); httpContext.Verify(c => c.Response.AppendHeader(It.IsAny<string>(), It.IsAny<string>()), Times.Never()); }
public void Should_not_compress_when_action_is_canceled() { var httpContext = new Mock<HttpContextBase>(); var requestContext = new RequestContext(httpContext.Object, new RouteData()); var controllerContext = new ControllerContext(requestContext, new Mock<ControllerBase>().Object); var resultContext = new ResultExecutedContext(controllerContext, new Mock<ActionResult>().Object, true, null); var attribute = new CompressAttribute(); httpContext.Setup(c => c.Response.AppendHeader(It.IsAny<string>(), It.IsAny<string>())); attribute.OnResultExecuted(resultContext); httpContext.Verify(c => c.Response.AppendHeader(It.IsAny<string>(), It.IsAny<string>()), Times.Never()); }