public void OutputCacheSetsVaryByValues()
        {
            // Arrange
            var timestamp = new DateTime(2011, 1, 1, 0, 0, 0);
            var context   = new Mock <HttpContextBase>();

            context.SetupGet(c => c.Timestamp).Returns(timestamp);
            var response = new Mock <HttpResponseBase>().Object;

            var varyByParams          = new HttpCacheVaryByParams();
            var varyByHeader          = new HttpCacheVaryByHeaders();
            var varyByContentEncoding = new HttpCacheVaryByContentEncodings();

            var cache = new Mock <HttpCachePolicyBase>();

            cache.SetupGet(c => c.VaryByParams).Returns(varyByParams);
            cache.SetupGet(c => c.VaryByHeaders).Returns(varyByHeader);
            cache.SetupGet(c => c.VaryByContentEncodings).Returns(varyByContentEncoding);

            // Act
            ResponseExtensions.OutputCache(context.Object, cache.Object, 20, false, new[] { "foo" }, new[] { "bar", "bar2" },
                                           new[] { "baz", "baz2" }, HttpCacheability.Public);

            // Assert
            Assert.Equal(varyByParams["foo"], true);
            Assert.Equal(varyByHeader["bar"], true);
            Assert.Equal(varyByHeader["bar2"], true);
            Assert.Equal(varyByContentEncoding["baz"], true);
            Assert.Equal(varyByContentEncoding["baz2"], true);
        }
Example #2
0
        public void Properties()
        {
            HttpResponse           response = new HttpResponse(Console.Out);
            HttpCacheVaryByHeaders hdrs     = response.Cache.VaryByHeaders;

            /* first test all the getters/setters for the builtin fields */
            hdrs.AcceptTypes     = true;
            hdrs.UserAgent       = true;
            hdrs.UserCharSet     = true;
            hdrs.UserLanguage    = true;
            hdrs["custom-field"] = true;

            Assert.IsTrue(hdrs.AcceptTypes, "hdrs.AcceptTypes == true");
            Assert.IsTrue(hdrs.UserAgent, "hdrs.UserAgent == true");
            Assert.IsTrue(hdrs.UserCharSet, "hdrs.UserCharSet == true");
            Assert.IsTrue(hdrs.UserLanguage, "hdrs.UserLanguage == true");
            Assert.IsTrue(hdrs["custom-field"], "hdrs['custom-field'] == true");

            /* test case sensitivity */
            Assert.IsTrue(hdrs["Custom-Field"], "hdrs['Custom-Field'] == true");

            hdrs.VaryByUnspecifiedParameters();

            /* now verify that they're all false */
            Assert.IsFalse(hdrs.AcceptTypes, "hdrs.AcceptTypes == false");
            Assert.IsFalse(hdrs.UserAgent, "hdrs.UserAgent == false");
            Assert.IsFalse(hdrs.UserCharSet, "hdrs.UserCharSet == false");
            Assert.IsFalse(hdrs.UserLanguage, "hdrs.UserLanguage == false");
            Assert.IsFalse(hdrs["custom-field"], "hdrs['custom-field'] == false");
        }
Example #3
0
        public void Deny_Unrestricted()
        {
            HttpCacheVaryByHeaders cache = response.Cache.VaryByHeaders;

            Assert.IsFalse(cache.AcceptTypes, "AcceptTypes");
            cache.AcceptTypes = true;
            Assert.IsFalse(cache.UserAgent, "UserAgent");
            cache.UserAgent = true;
            Assert.IsFalse(cache.UserCharSet, "UserCharSet");
            cache.UserCharSet = true;
            Assert.IsFalse(cache.UserLanguage, "UserLanguage");
            cache.UserLanguage = true;
            Assert.IsFalse(cache["mono"], "this[string]");
            cache["mono"] = true;
            cache.VaryByUnspecifiedParameters();
        }
Example #4
0
        public void HttpHandler_GetContentByQueryString_ReturnsFile()
        {
            AssertInconclusiveIfInDebugMode();

            var mockRequest = new Mock <HttpRequestBase>();

            mockRequest.SetupGet(r => r.Path).Returns("/Content/");
            mockRequest.SetupGet(r => r.ApplicationPath).Returns("/");
            var nameValueCollection = new NameValueCollection();

            nameValueCollection.Add("resource", "/Images/picto/check.gif");
            mockRequest.SetupGet(r => r.QueryString).Returns(nameValueCollection);

            var mockCtx = new Mock <HttpContextBase>();

            mockCtx.SetupGet(c => c.Request).Returns(mockRequest.Object);

            var mockResponse = new Mock <HttpResponseBase>();

            mockResponse.SetupProperty(p => p.ContentType);
            mockCtx.SetupGet(c => c.Response).Returns(mockResponse.Object);

            var mockCachePolicy = new Mock <HttpCachePolicyBase>();

            mockResponse.SetupGet(r => r.Cache).Returns(mockCachePolicy.Object);

            var headers = new HttpCacheVaryByHeaders();

            mockCachePolicy.SetupGet(c => c.VaryByHeaders).Returns(headers);

            var varyByParams = new HttpCacheVaryByParams();

            mockCachePolicy.SetupGet(c => c.VaryByParams).Returns(varyByParams);

            var contentRetriever = new FakeAssetLoader();
            var handler          = new HttpHandler(() => contentRetriever, "Content");

            handler.ProcessRequestInternal(mockCtx.Object);

            mockResponse.VerifySet(r => r.ContentType = "image/gif", Times.Once);
            mockResponse.Verify(r => r.BinaryWrite(It.Is <byte[]>(b => b == contentRetriever.RawData)), Times.Once());
            mockCachePolicy.Verify(c => c.SetCacheability(HttpCacheability.Public), Times.Once);
            mockCachePolicy.Verify(c => c.SetExpires(It.Is <DateTime>(d => DateTime.Now.AddHours(1.0) - d < TimeSpan.FromSeconds(5))), Times.Once);
            mockCachePolicy.Verify(c => c.SetLastModified(It.Is <DateTime>(d => d == contentRetriever.LastModified)), Times.Once);
            Assert.That(headers["Host"], Is.EqualTo(true));
        }