コード例 #1
0
        public void GenerateKey_WithMultipleVaryByOptions_CreatesCombinedKey()
        {
            // Arrange
            var name     = "some-name";
            var expected = GetHashedBytes("DistributedCacheTagHelper||some-name||VaryBy||custom-value||" +
                                          "VaryByHeader(content-type||text/html)||VaryByUser||someuser");
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext  = GetViewContext(),
                VaryByUser   = true,
                VaryByHeader = "content-type",
                VaryBy       = "custom-value",
                Name         = name
            };

            cacheTagHelper.ViewContext.HttpContext.Request.Headers["Content-Type"] = "text/html";
            var identity = new ClaimsIdentity(new[] { new Claim(ClaimsIdentity.DefaultNameClaimType, "someuser") });

            cacheTagHelper.ViewContext.HttpContext.User = new ClaimsPrincipal(identity);

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(expected, key);
        }
コード例 #2
0
        public void GenerateKey_UsesVaryByHeader(string varyByHeader, string expected)
        {
            // Arrange
            var name             = "some-name";
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext  = GetViewContext(),
                VaryByHeader = varyByHeader,
                Name         = name
            };
            var headers = cacheTagHelper.ViewContext.HttpContext.Request.Headers;

            headers["Accept-Language"] = "en-us;charset=utf8";
            headers["Accept-Encoding"] = "utf8";
            headers["X-CustomHeader"]  = "Header-Value";

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(GetHashedBytes(expected), key);
        }
コード例 #3
0
        public void GenerateKey_ReturnsKeyBasedOnTagHelperName()
        {
            // Arrange
            var name             = "some-name";
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext = GetViewContext(),
                Name        = name
            };
            var expected = GetHashedBytes("DistributedCacheTagHelper||" + name);

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(expected, key);
        }
コード例 #4
0
        public void GenerateKey_UsesVaryByPropertyToGenerateKey(string varyBy)
        {
            // Arrange
            var name             = "some-name";
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext = GetViewContext(),
                VaryBy      = varyBy,
                Name        = name
            };
            var expected = GetHashedBytes("DistributedCacheTagHelper||some-name||VaryBy||" + varyBy);

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(expected, key);
        }
コード例 #5
0
        public void GenerateKey_UsesVaryByUser_WhenUserIsNotAuthenticated()
        {
            // Arrange
            var name             = "some-name";
            var expected         = "DistributedCacheTagHelper||some-name||VaryByUser||";
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext = GetViewContext(),
                VaryByUser  = true,
                Name        = name
            };

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(GetHashedBytes(expected), key);
        }
コード例 #6
0
        public void GenerateKey_UsesVaryByCookieName(string varyByCookie, string expected)
        {
            // Arrange
            var name             = "some-name";
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext  = GetViewContext(),
                VaryByCookie = varyByCookie,
                Name         = name
            };

            cacheTagHelper.ViewContext.HttpContext.Request.Headers["Cookie"] =
                "Cookie0=Cookie0Value;Cookie1=Cookie1Value";

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(GetHashedBytes(expected), key);
        }
コード例 #7
0
        public void GenerateKey_UsesVaryByRoute(string varyByRoute, string expected)
        {
            // Arrange
            var name             = "some-name";
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext = GetViewContext(),
                VaryByRoute = varyByRoute,
                Name        = name
            };

            cacheTagHelper.ViewContext.RouteData.Values["id"]       = 4;
            cacheTagHelper.ViewContext.RouteData.Values["category"] = "MyCategory";

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(GetHashedBytes(expected), key);
        }
コード例 #8
0
        public void GenerateKey_UsesVaryByQuery(string varyByQuery, string expected)
        {
            // Arrange
            var name             = "some-name";
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext = GetViewContext(),
                VaryByQuery = varyByQuery,
                Name        = name
            };

            cacheTagHelper.ViewContext.HttpContext.Request.QueryString =
                new QueryString("?sortoption=Adorability&Category=cats&sortOrder=");

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(GetHashedBytes(expected), key);
        }
コード例 #9
0
        public void GenerateKey_UsesVaryByUserAndAuthenticatedUserName()
        {
            // Arrange
            var name             = "some-name";
            var expected         = "DistributedCacheTagHelper||some-name||VaryByUser||test_name";
            var tagHelperContext = GetTagHelperContext();
            var cacheTagHelper   = new DistributedCacheTagHelper(
                Mock.Of <IDistributedCacheTagHelperService>(),
                new HtmlTestEncoder())
            {
                ViewContext = GetViewContext(),
                VaryByUser  = true,
                Name        = name
            };
            var identity = new ClaimsIdentity(new[] { new Claim(ClaimsIdentity.DefaultNameClaimType, "test_name") });

            cacheTagHelper.ViewContext.HttpContext.User = new ClaimsPrincipal(identity);

            // Act
            var key = cacheTagHelper.GenerateKey(tagHelperContext);

            // Assert
            Assert.Equal(GetHashedBytes(expected), key);
        }