public ActionResult Image(int?code)
        {
            if (code == null)
            {
                code = IdenticonUtil.Code(HttpContext.Request.UserHostAddress);
            }

            string etag = IdenticonUtil.ETag(code.Value, Size);

            if (HttpContext != null && HttpContext.Request != null && HttpContext.Request.Headers != null && HttpContext.Request.Headers["If-None-Match"] == etag)
            {
                // browser already has the image cached
                return(new NotModifiedResult());
            }

            return(new IdenticonResult(code.Value, Size, etag));
        }
        public void Image_WithRequestMatchingEtag_ReturnsNotModifiedResult()
        {
            // arrange
            string etag              = IdenticonUtil.ETag(-1234, 40);
            var    controller        = new IdenticonController();
            var    controllerContext = new Mock <ControllerContext>();

            controller.ControllerContext = controllerContext.Object;
            controllerContext.Setup(c => c.HttpContext.Request.Headers).Returns(new NameValueCollection {
                { "If-None-Match", etag }
            });

            // act
            var result = controller.Image(-1234) as NotModifiedResult;

            // assert
            Assert.IsNotNull(result);
        }