Esempio n. 1
0
        public void GetChildActionUniqueId_VariesByActionParameters_OnlyVariesByTheGivenParameters_MultipleSpecified_Whitespace_DifferentThird(
            string varyByParam, string value1, string value2)
        {
            // Arrange
            OutputCacheAttribute attr = new OutputCacheAttribute {
                VaryByParam = varyByParam
            };
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"]  = "1";
            context1.ActionParameters["bar"]  = "2";
            context1.ActionParameters["blap"] = value1;
            context1.ActionParameters["xyz"]  = "abc";
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"]  = "1";
            context2.ActionParameters["bar"]  = "2";
            context2.ActionParameters["blap"] = value2;
            context2.ActionParameters["xyz"]  = "abc";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.NotEqual(result1, result2);
        }
        public void GetChildActionUniqueId_VariesByCustom()
        {
            // Arrange
            var attr = new OutputCacheAttribute {
                VaryByCustom = "foo"
            };
            var application1 = new Mock <HttpApplication>();

            application1
            .Setup(a => a.GetVaryByCustomString(It.IsAny <HttpContext>(), "foo"))
            .Returns("1");
            var context1 = new MockActionExecutingContext();

            context1.SetupGet(c => c.HttpContext.ApplicationInstance).Returns(application1.Object);

            var application2 = new Mock <HttpApplication>();

            application2
            .Setup(a => a.GetVaryByCustomString(It.IsAny <HttpContext>(), "foo"))
            .Returns("2");
            var context2 = new MockActionExecutingContext();

            context2.SetupGet(c => c.HttpContext.ApplicationInstance).Returns(application2.Object);

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal(@"VjXrM/nTu6zOLCi+teZcx7qDQRk/Q+G5ZirKHhH7MOA=", result1);
            Assert.Equal(@"Wi7TLgf052Ao0ZJX890MgynId6jByOf+xZ1G+5RHJUU=", result2);
        }
Esempio n. 3
0
        public void GetChildActionUniqueId_VariesByActionParameters_OnlyVariesByTheGivenParameters_MultipleSpecified_WithDifferentValues(
            string varyByParam, string value1, string value2)
        {
            // Arrange
            OutputCacheAttribute attr = new OutputCacheAttribute {
                VaryByParam = varyByParam
            };
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"]  = value1;
            context1.ActionParameters["bar"]  = "2";
            context1.ActionParameters["blap"] = "3";
            context1.ActionParameters["xyz"]  = "abc";
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"]  = value2;
            context2.ActionParameters["bar"]  = "2";
            context2.ActionParameters["blap"] = "3";
            context2.ActionParameters["xyz"]  = "abc";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal("WBXQR5lxerJG33HR3XQ9sJsXuKu6eVPgmMqeWMu8t2s=", result1);
            Assert.Equal("CLMC7fAU4959ECaI79HRFglt7SnNRANMJeYderjF4m8=", result2);
        }
Esempio n. 4
0
        public static void BuildUniqueIdFromActionParameters_UsesAllActionParametersIfStar()
        {
            // Arrange
            OutputCacheAttribute attribute = new OutputCacheAttribute {
                VaryByParam = "*"
            };
            StringBuilder builder1 = new StringBuilder();
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["test1"] = "test1-value";
            context1.ActionParameters["test2"] = 3;
            context1.ActionParameters["test3"] = null;
            string expected = "[5]TEST1[11]test1-value[5]TEST2[1]3[5]TEST3[-1]";

            // Act - 1
            attribute.BuildUniqueIdFromActionParameters(builder1, context1.Object);

            // Assert - 1
            Assert.Equal(expected, builder1.ToString());

            // Arrange - 2
            // Verify that the keys are stable sorted when "*" is used.
            StringBuilder builder2 = new StringBuilder();
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["test3"] = null;
            context2.ActionParameters["test2"] = 3;
            context2.ActionParameters["test1"] = "test1-value";

            // Act - 2
            attribute.BuildUniqueIdFromActionParameters(builder2, context2.Object);

            // Assert - 2
            Assert.Equal(expected, builder2.ToString());
        }
Esempio n. 5
0
        public static void BuildUniqueIdFromActionParameters_DoesNotCacheTokenizedStringsWhenStar()
        {
            // Arrange
            OutputCacheAttribute attribute = new OutputCacheAttribute {
                VaryByParam = "*"
            };
            StringBuilder builder1 = new StringBuilder();
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["test1"] = "test1-value";
            context1.ActionParameters["test2"] = "Test2-Value";
            context1.ActionParameters["test3"] = null;
            string expected1 = "[5]TEST1[11]test1-value[5]TEST2[11]Test2-Value[5]TEST3[-1]";

            // Act - 1
            attribute.BuildUniqueIdFromActionParameters(builder1, context1.Object);

            // Assert - 1
            Assert.Equal(expected1, builder1.ToString());

            // Arrange - 2
            // Verify that the keys are stable sorted when "*" is used.
            StringBuilder builder2 = new StringBuilder();
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["Foo"] = null;
            context2.ActionParameters["bar"] = "bar-value";
            string expected2 = "[3]BAR[9]bar-value[3]FOO[-1]";

            // Act - 2
            attribute.BuildUniqueIdFromActionParameters(builder2, context2.Object);

            // Assert - 2
            Assert.Equal(expected2, builder2.ToString());
        }
Esempio n. 6
0
        public static void BuildUniqueIdFromActionParameters_LooksUpActionParametersInCaseInsensitiveManner(
            string varyByParam)
        {
            // Arrange
            MockActionExecutingContext  context    = new MockActionExecutingContext();
            Dictionary <string, object> dictionary = new Dictionary <string, object>(StringComparer.Ordinal)
            {
                { "foo", "foo-value" },
                { "Bar", "bar-value" }
            };

            context.ActionParameters = dictionary;
            string expected = "[3]FOO[9]foo-value[3]BAR[9]bar-value";

            StringBuilder        builder   = new StringBuilder();
            OutputCacheAttribute attribute = new OutputCacheAttribute {
                VaryByParam = varyByParam
            };

            // Act
            attribute.BuildUniqueIdFromActionParameters(builder, context.Object);

            // Assert
            Assert.Equal(expected, builder.ToString());
        }
Esempio n. 7
0
        public void GetChildActionUniqueId_ReturnsDifferentValuesIfVaryByParamValueIsModified(string varyByParam, string expected)
        {
            // Arrange
            MockActionExecutingContext context = new MockActionExecutingContext();

            context.ActionParameters["foo"] = "1";
            context.ActionParameters["bar"] = "2";

            OutputCacheAttribute attr = new OutputCacheAttribute {
                VaryByParam = "foo"
            };

            // Act - 1
            string result1 = attr.GetChildActionUniqueId(context.Object);

            // Assert - 1
            Assert.Equal("tXBiB5qdEzfISoXUUqXAzPcd7y/9Ik6eFqy8w9i3aDw=", result1);

            // Act - 2
            attr.VaryByParam = varyByParam;
            string result2 = attr.GetChildActionUniqueId(context.Object);

            // Assert - 2
            Assert.Equal(expected, result2);
        }
Esempio n. 8
0
        public void GetChildActionUniqueId_VariesByActionParameters_OnlyVariesByTheGivenParameters_Wildcard_Different()
        {
            // Arrange
            OutputCacheAttribute attr = new OutputCacheAttribute {
                VaryByParam = "*"
            };
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"]  = "1";
            context1.ActionParameters["bar"]  = "2";
            context1.ActionParameters["blap"] = "3";
            context1.ActionParameters["xyz"]  = "abc";
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"]  = "1";
            context2.ActionParameters["bar"]  = "4";
            context2.ActionParameters["blap"] = "3";
            context2.ActionParameters["xyz"]  = "abc";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.NotEqual(result1, result2);
        }
Esempio n. 9
0
        public void GetChildActionUniqueId_VariesByActionParameters_MatchesActionParametersInCaseInsensitiveManner()
        {
            // Arrange
            OutputCacheAttribute attr = new OutputCacheAttribute {
                VaryByParam = "foo ; bar ; blap"
            };
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"]  = "1";
            context1.ActionParameters["BAR"]  = "2";
            context1.ActionParameters["blap"] = "3";
            context1.ActionParameters["xyz"]  = "abc";
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"]  = "1";
            context2.ActionParameters["bar"]  = "2";
            context2.ActionParameters["BLAP"] = "3";
            context2.ActionParameters["xyz"]  = "abc";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal(result1, result2);
        }
Esempio n. 10
0
        public void GetChildActionUniqueId_VariesByActionParameters_OnlyVariesByGivenParameters(string varbyParam)
        {
            // Arrange
            string expected           = "z2Fr6HAipKCkLdVkHMdHgeDBJyYutdqqTW07BMO31fQ=";
            OutputCacheAttribute attr = new OutputCacheAttribute {
                VaryByParam = varbyParam
            };
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"]      = "1";
            context1.ActionParameters["bar"]      = "2";
            context1.ActionParameters["blap"]     = "3";
            context1.ActionParameters["xyz"]      = Guid.NewGuid().ToString();
            context1.ActionParameters["some-key"] = Guid.NewGuid().ToString();
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"]           = "1";
            context2.ActionParameters["bar"]           = "2";
            context2.ActionParameters["blap"]          = "3";
            context2.ActionParameters["xyz"]           = Guid.NewGuid().ToString();
            context2.ActionParameters["different-key"] = Guid.NewGuid().ToString();

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal(expected, result1);
            Assert.Equal(expected, result2);
        }
        public void TestMissingController()
        {
            var context = new MockActionExecutingContext(new object());
            var filter  = new UrlHelperProviderAttribute();

            Assert.Throws <FilterRequiresControllerException>(
                () => filter.OnActionExecuting(context));
        }
        public void GetChildActionUniqueId_ReturnsRepeatableValueForIdenticalContext()
        {
            // Arrange
            var attr    = new OutputCacheAttribute();
            var context = new MockActionExecutingContext();

            // Act
            string result1 = attr.GetChildActionUniqueId(context.Object);
            string result2 = attr.GetChildActionUniqueId(context.Object);

            // Assert
            Assert.Equal(result1, result2);
        }
Esempio n. 13
0
        public static void BuildUniqueIdFromActionParameters_NoOpsIfVaryByParamIsNone(string varyByParam)
        {
            // Arrange
            StringBuilder          builder   = new StringBuilder();
            ActionExecutingContext context   = new MockActionExecutingContext().Object;
            OutputCacheAttribute   attribute = new OutputCacheAttribute {
                VaryByParam = varyByParam
            };

            // Act
            attribute.BuildUniqueIdFromActionParameters(builder, context);

            // Assert
            Assert.Empty(builder.ToString());
        }
        public void TestSettingContext()
        {
            var serviceCollection = new ServiceCollection();

            serviceCollection.AddFluentRestBuilder();
            var scope = serviceCollection.BuildServiceProvider()
                        .CreateScope();
            var controller = new MockController(scope.ServiceProvider);
            var context    = new MockActionExecutingContext(controller);
            var filter     = new UrlHelperProviderAttribute();

            filter.OnActionExecuting(context);
            var storage = scope.ServiceProvider.GetService <IScopedStorage <IUrlHelper> >();

            Assert.Same(controller.Url, storage.Value);
        }
        public void TestSettingContext()
        {
            var serviceProvider = new ServiceCollection()
                                  .AddFluentRestBuilder()
                                  .Services
                                  .BuildServiceProvider()
                                  .CreateScope()
                                  .ServiceProvider;
            var controller = new MockController(serviceProvider);
            var context    = new MockActionExecutingContext(controller);
            var filter     = new HttpContextProviderAttribute();

            filter.OnActionExecuting(context);
            var storage = serviceProvider.GetService <IScopedStorage <HttpContext> >();

            Assert.Same(controller.HttpContext, storage.Value);
        }
        public void GetChildActionUniqueId_VariesByActionParameters_AllParametersByDefault()
        {
            // Arrange
            var attr     = new OutputCacheAttribute();
            var context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"] = "1";
            var context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"] = "2";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.NotEqual(result1, result2);
        }
        public void GetChildActionUniqueId_VariesByActionDescriptorsUniqueId()
        {
            // Arrange
            var attr     = new OutputCacheAttribute();
            var context1 = new MockActionExecutingContext();

            context1.Setup(c => c.ActionDescriptor.UniqueId).Returns("1");
            var context2 = new MockActionExecutingContext();

            context2.Setup(c => c.ActionDescriptor.UniqueId).Returns("2");

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.NotEqual(result1, result2);
        }
Esempio n. 18
0
        public void GetChildActionUniqueId_VariesByActionParameters_AllParametersByDefault()
        {
            // Arrange
            var attr     = new OutputCacheAttribute();
            var context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"] = "1";
            var context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"] = "2";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal("tXBiB5qdEzfISoXUUqXAzPcd7y/9Ik6eFqy8w9i3aDw=", result1);
            Assert.Equal("Bb+E/t8aWfczVF2UFVr+FUpuGYjR/SPhzt71q+oAlHk=", result2);
        }
        public void GetChildActionUniqueId_VariesByActionParameters_OnlyVariesByTheGivenParameters()
        {
            // Arrange
            var attr = new OutputCacheAttribute {
                VaryByParam = "bar"
            };
            var context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"] = "1";
            var context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"] = "2";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal(result1, result2);
        }
        public void GetChildActionUniqueId_DoesNotVaryByActionParametersWhenVaryByParamIsNone()
        {
            // Arrange
            var attr = new OutputCacheAttribute {
                VaryByParam = "none"
            };
            var context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"] = "1";
            var context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"] = "2";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal(result1, result2);
        }
        public void GetChildActionUniqueId_VariesByCustom()
        {
            // Arrange
            var attr = new OutputCacheAttribute {
                VaryByCustom = "foo"
            };
            var context1 = new MockActionExecutingContext();

            context1.Setup(c => c.HttpContext.ApplicationInstance.GetVaryByCustomString(It.IsAny <HttpContext>(), "foo")).Returns("1");
            var context2 = new MockActionExecutingContext();

            context2.Setup(c => c.HttpContext.ApplicationInstance.GetVaryByCustomString(It.IsAny <HttpContext>(), "foo")).Returns("2");

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.NotEqual(result1, result2);
        }
Esempio n. 22
0
        public void GetChildActionUniqueId_VariesByActionParameters_OnlyVariesByTheGivenParameters()
        {
            // Arrange
            OutputCacheAttribute attr = new OutputCacheAttribute {
                VaryByParam = "bar"
            };
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"] = "1";
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"] = "2";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal(result1, result2);
            Assert.Equal("sx9+LHPOjtSGct8z6Cn4ml+2yKODPojZtrLhrhJofKM=", result1);
        }
Esempio n. 23
0
        public void GetChildActionUniqueId_VariesByActionParameters_OnlyVariesByTheGivenParameters_SingleSpecified_Same()
        {
            // Arrange
            OutputCacheAttribute attr = new OutputCacheAttribute {
                VaryByParam = "foo"
            };
            MockActionExecutingContext context1 = new MockActionExecutingContext();

            context1.ActionParameters["foo"] = "1";
            MockActionExecutingContext context2 = new MockActionExecutingContext();

            context2.ActionParameters["foo"] = "1";

            // Act
            string result1 = attr.GetChildActionUniqueId(context1.Object);
            string result2 = attr.GetChildActionUniqueId(context2.Object);

            // Assert
            Assert.Equal("tXBiB5qdEzfISoXUUqXAzPcd7y/9Ik6eFqy8w9i3aDw=", result1);
            Assert.Equal("tXBiB5qdEzfISoXUUqXAzPcd7y/9Ik6eFqy8w9i3aDw=", result2);
        }