예제 #1
0
        public void Should_return_null_with_RequiresAnyClaim_and_any_claim_met()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresAnyClaim(new[] { "Claim1", "Claim4" });
            var context = new NancyContext
            {
                CurrentUser = GetFakeUser("username", new[] { "Claim1", "Claim2", "Claim3" })
            };

            var result = module.Before.Invoke(context);

            result.ShouldBeNull();
        }
예제 #2
0
        public void Should_return_unauthorized_response_with_RequiresAnyClaim_enabled_and_no_username()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresAnyClaim(new[] { string.Empty });

            var result = module.Before.Invoke(new NancyContext());

            result.ShouldNotBeNull();
            result.StatusCode.ShouldEqual(HttpStatusCode.Unauthorized);
        }
예제 #3
0
        public void Should_return_forbidden_response_with_RequiresAnyClaim_enabled_but_nonmatching_claims()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresAnyClaim(new[] { "Claim1" });
            var context = new NancyContext
            {
                CurrentUser = GetFakeUser("username", new string[] { "Claim2", "Claim3" })
            };

            var result = module.Before.Invoke(context);

            result.ShouldNotBeNull();
            result.StatusCode.ShouldEqual(HttpStatusCode.Forbidden);
        }
예제 #4
0
        public void Should_return_unauthorized_response_with_RequiresAnyClaim_enabled_and_blank_username()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresAnyClaim(new[] { string.Empty });
            var context = new NancyContext
            {
                CurrentUser = GetFakeUser(String.Empty)
            };

            var result = module.Before.Invoke(context, new CancellationToken());

            result.Result.ShouldNotBeNull();
            result.Result.StatusCode.ShouldEqual(HttpStatusCode.Unauthorized);
        }
예제 #5
0
        public void Should_return_forbidden_response_with_RequiresAnyClaim_enabled_but_claims_key_missing()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresAnyClaim(new[] { "Claim1" });
            var context = new NancyContext
            {
                CurrentUser = GetFakeUser("username")
            };

            var result = module.Before.Invoke(context, new CancellationToken());

            result.Result.ShouldNotBeNull();
            result.Result.StatusCode.ShouldEqual(HttpStatusCode.Forbidden);
        }
예제 #6
0
        public void Should_return_null_with_RequiresAnyClaim_and_any_claim_met()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresAnyClaim(c => c.Type == "Claim1", c => c.Type == "Claim4");
            var context = new NancyContext
            {
                CurrentUser = GetFakeUser("username",
                    new Claim("Claim1", string.Empty),
                    new Claim("Claim2", string.Empty),
                    new Claim("Claim3", string.Empty))
            };

            var result = module.Before.Invoke(context, new CancellationToken());

            result.Result.ShouldBeNull();
        }
예제 #7
0
        public void Should_return_forbidden_response_with_RequiresAnyClaim_enabled_but_nonmatching_claims()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresAnyClaim(c => c.Type == "Claim1");
            var context = new NancyContext
            {
                CurrentUser = GetFakeUser(
                    "username",
                    new Claim("Claim2", string.Empty),
                    new Claim("Claim3", string.Empty))
            };

            var result = module.Before.Invoke(context, new CancellationToken());

            result.Result.ShouldNotBeNull();
            result.Result.StatusCode.ShouldEqual(HttpStatusCode.Forbidden);
        }