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); }
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(); }
private CorsPolicySource AppendPolicySource(Action <CorsPolicySource> configure = null) { var policySource = CorsPolicySource.AppendPolicy( _corsConfiguration.PolicySources, configure); _policySources.Add(policySource); return(policySource); }
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); }