Esempio n. 1
0
        public void Should_add_two_items_to_the_start_of_the_begin_pipeline_when_RequiresValidatedClaims_enabled()
        {
            var module = new FakeHookedModule(A.Fake<BeforePipeline>());

            module.RequiresValidatedClaims(c => false);

            A.CallTo(() => module.Before.AddItemToStartOfPipeline(A<Func<NancyContext, Response>>.Ignored)).MustHaveHappened(Repeated.Exactly.Twice);
        }
Esempio n. 2
0
        public void Should_call_IsValid_delegate_with_RequiresValidatedClaims_and_valid_username()
        {
            bool called = false;
            var module = new FakeHookedModule(new BeforePipeline());
            var context = new NancyContext();
            context.Items[Nancy.Security.SecurityConventions.AuthenticatedUsernameKey] = "username";
            context.Items[Nancy.Security.SecurityConventions.AuthenticatedClaimsKey] = new[] { "Claim1", "Claim2", "Claim3" };
            module.RequiresValidatedClaims(s =>
                {
                    called = true;
                    return true;
                });

            module.Before.Invoke(context);

            called.ShouldEqual(true);
        }
        public void Should_call_IsValid_delegate_with_RequiresValidatedClaims_and_valid_username()
        {
            bool called = false;
            var module = new FakeHookedModule(new BeforePipeline());
            var context = new NancyContext
                              {
                                  CurrentUser = GetFakeUser("username", new[] {"Claim1", "Claim2", "Claim3"})
                              };

            module.RequiresValidatedClaims(s =>
                {
                    called = true;
                    return true;
                });

            module.Before.Invoke(context);

            called.ShouldEqual(true);
        }
Esempio n. 4
0
        public void Should_return_unauthorized_response_with_RequiresValidatedClaims_enabled_and_no_username()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresValidatedClaims(c => false);

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

            result.ShouldNotBeNull();
            result.StatusCode.ShouldEqual(HttpStatusCode.Unauthorized);
        }
Esempio n. 5
0
        public void Should_return_unauthorized_response_with_RequiresValidatedClaims_enabled_and_blank_username()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresValidatedClaims(c => false);
            var context = new NancyContext();
            context.Items[Nancy.Security.SecurityConventions.AuthenticatedUsernameKey] = String.Empty;

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

            result.ShouldNotBeNull();
            result.StatusCode.ShouldEqual(HttpStatusCode.Unauthorized);
        }
Esempio n. 6
0
        public void Should_return_null_with_RequiresValidatedClaims_and_IsValid_returns_true()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            var context = new NancyContext();
            context.Items[Nancy.Security.SecurityConventions.AuthenticatedUsernameKey] = "username";
            context.Items[Nancy.Security.SecurityConventions.AuthenticatedClaimsKey] = new[] { "Claim1", "Claim2", "Claim3" };
            module.RequiresValidatedClaims(s => true);

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

            result.ShouldBeNull();
        }
Esempio n. 7
0
        public void Should_return_forbidden_response_with_RequiresValidatedClaims_enabled_but_claims_key_missing()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresValidatedClaims(s => true);
            var context = new NancyContext();
            context.Items[Nancy.Security.SecurityConventions.AuthenticatedUsernameKey] = "username";

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

            result.ShouldNotBeNull();
            result.StatusCode.ShouldEqual(HttpStatusCode.Forbidden);
        }
Esempio n. 8
0
        public void Should_return_forbidden_response_with_RequiresValidatedClaims_and_IsValid_returns_true()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            var context = new NancyContext();
            context.Items[Nancy.Security.SecurityConventions.AuthenticatedUsernameKey] = "username";
            context.Items[Nancy.Security.SecurityConventions.AuthenticatedClaimsKey] = new[] { "Claim1", "Claim2", "Claim3" };
            module.RequiresValidatedClaims(s => false);

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

            result.ShouldNotBeNull();
            result.StatusCode.ShouldEqual(HttpStatusCode.Forbidden);
        }
        public void Should_return_null_with_RequiresValidatedClaims_and_IsValid_returns_true()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            var context = new NancyContext
                              {
                                  CurrentUser = GetFakeUser("username", new[] {"Claim1", "Claim2", "Claim3"})
                              };

            module.RequiresValidatedClaims(s => true);

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

            result.ShouldBeNull();
        }
Esempio n. 10
0
        public void Should_return_forbidden_response_with_RequiresValidatedClaims_enabled_but_claims_missing()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresValidatedClaims(s => true);
            var context = new NancyContext
                              {
                                  CurrentUser = GetFakeUser("username")
                              };
            var result = module.Before.Invoke(context);

            result.ShouldNotBeNull();
            result.StatusCode.ShouldEqual(HttpStatusCode.Forbidden);
        }
Esempio n. 11
0
        public void Should_return_forbidden_response_with_RequiresValidatedClaims_and_IsValid_returns_false()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            var context = new NancyContext
                              {
                                  CurrentUser = GetFakeUser("username", new[] {"Claim1", "Claim2", "Claim3"})
                              };

            module.RequiresValidatedClaims(s => false);

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

            result.ShouldNotBeNull();
            result.StatusCode.ShouldEqual(HttpStatusCode.Forbidden);
        }
Esempio n. 12
0
        public void Should_return_unauthorized_response_with_RequiresValidatedClaims_enabled_and_blank_username()
        {
            var module = new FakeHookedModule(new BeforePipeline());
            module.RequiresValidatedClaims(c => false);
            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);
        }