public void Should_prepend_attribute_policy_source()
        {
            var getActionContext = new ActionConfigurationContext(null,
                                                                  null, ActionMethod.From <CorsPolicySourceTests.Handler>(x => x.Get()), null);
            var postActionContext = new ActionConfigurationContext(null,
                                                                   null, ActionMethod.From <CorsPolicySourceTests.Handler>(x => x.Post()), null);
            var configuration = new CorsConfiguration();

            new CorsConfigurationDsl(configuration)
            .PrependPolicySource <CorsPolicySource>()
            .PrependAttributePolicySource(x => x.ActionMethod.Name == "Get");

            configuration.PolicySources.Count().ShouldEqual(2);

            var plugin = configuration.PolicySources.First();

            plugin.HasInstance.ShouldBeFalse();
            plugin.Type.ShouldEqual(typeof(CorsAttributePolicySource));
            plugin.AppliesTo(getActionContext).ShouldBeTrue();
            plugin.AppliesTo(postActionContext).ShouldBeFalse();

            plugin = configuration.PolicySources.Second();

            plugin.HasInstance.ShouldBeFalse();
            plugin.Type.ShouldEqual(typeof(CorsPolicySource));
            plugin.AppliesTo.ShouldBeNull();
        }
        public void Should_prepend_policy_source_plugin()
        {
            var getActionContext = new ActionConfigurationContext(null,
                                                                  null, ActionMethod.From <Handler>(x => x.Get()), null);
            var postActionContext = new ActionConfigurationContext(null,
                                                                   null, ActionMethod.From <Handler>(x => x.Post()), null);
            var overrideActionContext = new ActionConfigurationContext(null,
                                                                       null, ActionMethod.From <Handler>(x => x.Override()), null);
            var configuration = new CorsConfiguration();

            CorsPolicySource.PrependPolicy(configuration.PolicySources, x => x
                                           .PreflightMaxAge(1));
            CorsPolicySource.PrependPolicy(configuration.PolicySources, x => x
                                           .PreflightMaxAge(2)
                                           .AppliesWhen(a => a.ActionMethod.Name == "Get"));

            configuration.PolicySources.Count().ShouldEqual(2);

            var plugin = configuration.PolicySources.First();

            plugin.AppliesTo(getActionContext).ShouldBeTrue();
            plugin.AppliesTo(postActionContext).ShouldBeFalse();
            plugin.AppliesTo(overrideActionContext).ShouldBeFalse();
            plugin.Instance.CreatePolicy().PreflightMaxAge.ShouldEqual(2);

            plugin = configuration.PolicySources.Second();

            plugin.AppliesTo(getActionContext).ShouldBeTrue();
            plugin.AppliesTo(postActionContext).ShouldBeTrue();
            plugin.AppliesTo(overrideActionContext).ShouldBeFalse();
            plugin.Instance.CreatePolicy().PreflightMaxAge.ShouldEqual(1);
        }
Exemple #3
0
        public static List <Type> ThatApplyTo(this ConditionalPlugins
                                              <IBehavior, ActionConfigurationContext> behaviors,
                                              ActionMethod actionMethod, RouteDescriptor routeDescriptor,
                                              Configuration configuration, HttpConfiguration httpConfiguration)
        {
            var context = new ActionConfigurationContext(configuration,
                                                         httpConfiguration, actionMethod, routeDescriptor);

            return(behaviors.ThatApplyTo(context)
                   .Select(x => x.Type).ToList());
        }