public async Task produces_error_when_missing_claim_with_multiple_values()
        {
            var req = new ClaimAuthorizationRequirement("Admin", new[] { "true", "maybe" });

            var context = new AuthorizationContext();

            context.User = CreatePrincipal();

            await req.Authorize(context);

            context.HasErrors.ShouldBeTrue();
            context.Errors.Single().ShouldBe("Required claim 'Admin' with any value of 'true, maybe' is not present.");
        }
        public async Task produces_error_when_missing_claim_ignoring_value()
        {
            var req = new ClaimAuthorizationRequirement("Admin");

            var context = new AuthorizationContext();

            context.User = CreatePrincipal();

            await req.Authorize(context);

            context.HasErrors.ShouldBeTrue();
            context.Errors.Single().ShouldBe("Required claim 'Admin' is not present.");
        }
        public async Task succeeds_when_claim_with_multiple_values()
        {
            var req = new ClaimAuthorizationRequirement("Admin", new[] { "true", "maybe" });

            var context = new AuthorizationContext();

            context.User = CreatePrincipal(claims: new Dictionary <string, string> {
                { "Admin", "maybe" }
            });

            await req.Authorize(context);

            context.HasErrors.ShouldBeFalse();
        }
        public async Task produces_error_when_missing_claim_with_single_value()
        {
            var req = new ClaimAuthorizationRequirement("Admin", "true");

            var context = new AuthorizationContext
            {
                User = ValidationTestBase.CreatePrincipal()
            };

            await req.Authorize(context);

            context.HasErrors.ShouldBeTrue();
            context.Errors.Single().ShouldBe("Required claim 'Admin' with any value of 'true' is not present.");
        }
        public async Task succeeds_when_claim_with_single_value()
        {
            var req = new ClaimAuthorizationRequirement("Admin", "true");

            var context = new AuthorizationContext
            {
                User = ValidationTestBase.CreatePrincipal(claims: new Dictionary <string, string> {
                    { "Admin", "true" }
                })
            };

            await req.Authorize(context);

            context.HasErrors.ShouldBeFalse();
        }