Пример #1
0
        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);
        }
Пример #2
0
        public void Should_build_policy()
        {
            var policySource = new CorsPolicySource()
                               .AllowHeaders("header1", "header2")
                               .AllowMethods("method1", "method2")
                               .AllowOrigins("origin1", "origin2")
                               .AllowExposedHeaders("exposed-header1", "exposed-header2")
                               .PreflightMaxAge(50)
                               .SupportsCredentials()
                               .AllowAnyOrigin()
                               .AllowAnyHeader()
                               .AllowAnyMethod()
                               .RejectRequestsThatFailCorsValidation()
                               .RejectRequestsWithoutOriginHeader()
                               .AllowOptionRequestsToPassThrough() as ICorsPolicySource;

            var policy = policySource.CreatePolicy();

            policy.AllowOptionRequestsToPassThrough.ShouldBeTrue();
            policy.AllowRequestsThatFailCors.ShouldBeFalse();
            policy.AllowRequestsWithoutOriginHeader.ShouldBeFalse();
            policy.AllowAnyHeader.ShouldBeTrue();
            policy.AllowAnyMethod.ShouldBeTrue();
            policy.AllowAnyOrigin.ShouldBeTrue();
            policy.SupportsCredentials.ShouldBeTrue();
            policy.PreflightMaxAge.ShouldEqual(50);
            policy.ExposedHeaders.ShouldOnlyContain("exposed-header1", "exposed-header2");
            policy.Headers.ShouldOnlyContain("header1", "header2");
            policy.Methods.ShouldOnlyContain("method1", "method2");
            policy.Origins.ShouldOnlyContain("origin1", "origin2");
        }
        public void Should_prepend_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();
            var policySource  = new CorsPolicySource();

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

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

            var plugin = configuration.PolicySources.First();

            plugin.HasInstance.ShouldBeTrue();
            plugin.Type.ShouldEqual(typeof(CorsPolicySource));
            plugin.Instance.ShouldEqual(policySource);
            plugin.AppliesTo(getActionContext).ShouldBeTrue();
            plugin.AppliesTo(postActionContext).ShouldBeFalse();

            plugin = configuration.PolicySources.Second();

            plugin.HasInstance.ShouldBeFalse();
            plugin.Type.ShouldEqual(typeof(CorsPolicySource));
            plugin.AppliesTo.ShouldBeNull();
        }
Пример #4
0
        private CorsPolicySource AppendPolicySource(Action <CorsPolicySource> configure = null)
        {
            var policySource = CorsPolicySource.AppendPolicy(
                _corsConfiguration.PolicySources, configure);

            _policySources.Add(policySource);

            return(policySource);
        }
Пример #5
0
        public void Should_return_policy_sources_that_apply_in_order()
        {
            var policy1 = new CorsPolicySource();
            var policy2 = new CorsPolicySource();
            var policy3 = new CorsPolicySource();

            var corsConfiguration = new CorsConfiguration();

            corsConfiguration.PolicySources.Configure(c => c
                                                      .Append(policy1, p => p.ActionMethod.Name == "Get")
                                                      .Append(policy2)
                                                      .Append(policy3));

            var sources = new List <ICorsPolicySource>
            {
                policy2, policy3, policy1
            };

            var applies = sources.ThatApplies(corsConfiguration, new ActionDescriptor(
                                                  ActionMethod.From <Handler>(x => x.Post()), null, null, null,
                                                  null, null, null, null, new TypeCache()), null, null);

            applies.ShouldEqual(policy2);
        }