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);
        }
Пример #2
0
        public void Deny_Unrestricted()
        {
            HttpCacheVaryByParams cache = response.Cache.VaryByParams;

            Assert.IsFalse(cache.IgnoreParams, "IgnoreParams");
            cache.IgnoreParams = true;
            Assert.IsFalse(cache["mono"], "this[string]");
            cache["mono"] = true;
        }
 internal void SetVaryByParamsCollectionFromString(string varyByParams)
 {
     if (varyByParams != null)
     {
         string[] parameters = varyByParams.Split(new char[] { ';' });
         this._varyByParamsCollection = new HttpCacheVaryByParams();
         this._varyByParamsCollection.ResetFromParams(parameters);
     }
 }
Пример #4
0
        internal void SetVaryByParamsCollectionFromString(string varyByParams)
        {
            Debug.Assert(_varyByParamsCollection == null);

            if (varyByParams == null)
            {
                return;
            }

            string[] varyByParamsStrings = varyByParams.Split(varySeparator);
            _varyByParamsCollection = new HttpCacheVaryByParams();
            _varyByParamsCollection.SetParams(varyByParamsStrings);
        }
Пример #5
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));
        }
        public void Properties()
        {
            HttpResponse          response = new HttpResponse(Console.Out);
            HttpCacheVaryByParams vary     = response.Cache.VaryByParams;

            vary["hi"] = true;
            Assert.IsTrue(vary["hi"], "vary[hi] == true");

            /* make sure setting IgnoreParams to either case doesn't clear the value */
            vary.IgnoreParams = true;
            Assert.IsTrue(vary["hi"], "vary[hi] == true when IgnoreParams == true");

            vary.IgnoreParams = false;
            Assert.IsTrue(vary["hi"], "vary[hi] == true when IgnoreParams == false");

            /* test case sensitivity */
            Assert.IsTrue(vary["Hi"], "vary[Hi] == true");
        }