internal DefaultCorsPolicyService(CorsPolicy policy)
 {
     if (policy == null) throw new ArgumentNullException("policy");
     
     AllowedOrigins = policy.AllowedOrigins;
     policyCallback = policy.PolicyCallback;
 }
 public void GetCorsPolicyAsync_NoAllowedOriginsNoCallback_DoesNotAllowOrigin()
 {
     var policy = new CorsPolicy();
     var subject = new CorsPolicyProvider(policy, new string[] { "/" });
     var cp = subject.GetCorsPolicyAsync(Request("http://foo.com")).Result;
     Assert.IsNull(cp);
 }
        public CorsPolicyProvider(CorsPolicy policy, string[] allowedPaths)
        {
            if (policy == null) throw new ArgumentNullException("policy");
            if (allowedPaths == null) throw new ArgumentNullException("allowedPaths");

            this.policy = policy;
            this.paths = allowedPaths.Select(path => Normalize(path)).ToArray();
        }
 public static void UseCors(this IAppBuilder app, CorsPolicy policy)
 {
     if (policy != null)
     {
         app.UseCors(new Microsoft.Owin.Cors.CorsOptions
         {
             PolicyProvider = new CorsPolicyProvider(policy, Constants.RoutePaths.CorsPaths)
         });
     }
 }
        public void GetCorsPolicyAsync_OriginIsInAllowedOrigins_AllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = new CorsPolicy();
            policy.AllowedOrigins.Add(origin);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request(origin)).Result;
            AssertAllowed(origin, cp);
        }
        public void ctor_UsesCorsPolicyCallback()
        {
            var wasCalled = false;
            var policy = new CorsPolicy();
            Func<string, Task<bool>> func = s => { wasCalled = true; return Task.FromResult(true); };
            policy.PolicyCallback = func;

            subject = new DefaultCorsPolicyService(policy);
            var result = subject.IsOriginAllowedAsync("http://foo").Result;
            result.Should().Be(true);
            wasCalled.Should().Be(true);
        }
        public void ctor_CopiesCorsPolicyOrigins()
        {
            var policy = new CorsPolicy();
            policy.AllowedOrigins.Add("http://foo");
            policy.AllowedOrigins.Add("http://bar");
            policy.AllowedOrigins.Add("http://baz");

            Func<string, Task<bool>> func = s => Task.FromResult(true);
            policy.PolicyCallback = func;

            subject = new DefaultCorsPolicyService(policy);
            subject.AllowedOrigins.ShouldAllBeEquivalentTo(new string[] { "http://foo", "http://bar", "http://baz" });
        }
        public void GetCorsPolicyAsync_OriginIsInAllowedOriginsButNoOriginRequested_DoesNotAllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = new CorsPolicy();
            policy.AllowedOrigins.Add(origin);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request(null)).Result;
            Assert.IsNull(cp);
        }
        public void GetCorsPolicyAsync_CallbackDoesNotAllowOrigin_DoesNotAllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = new CorsPolicy();
            policy.PolicyCallback = o => Task.FromResult(false);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request(origin)).Result;
            Assert.IsNull(cp);
        }
        public void GetCorsPolicyAsync_CallbackAllowOriginButNoOriginRequested_DoesNotAllowOrigin()
        {
            var policy = new CorsPolicy();
            policy.PolicyCallback = o => Task.FromResult(true);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request()).Result;
            Assert.IsNull(cp);
        }