コード例 #1
0
        public async Task When_all_subRequirements_succeed__OrRequirement_succeeds()
        {
            var handler = new OrAuthorizationRequirementHandler(
                new OptionsWrapper <AuthorizationOptions>(new AuthorizationOptions()
            {
                InvokeHandlersAfterFailure = false
            }),
                new Lazy <IAuthorizationHandlerProvider>(new DefaultAuthorizationHandlerProvider(new[] { new PassThroughAuthorizationHandler() })),
                new DefaultAuthorizationHandlerContextFactory());
            var requirement = SucceedingRequirement.Or(SucceedingRequirement);
            var context     = new AuthorizationHandlerContext(new[] { requirement }, BuildClaimsPrincipalWithClaims(), null);

            await handler.HandleAsync(context);

            Assert.True(context.HasSucceeded);
        }
コード例 #2
0
        public async Task When_first_subRequirement_succeeds__second_subRequirement_is_never_resolved()
        {
            bool secondRequirementEvaluated = false;
            var  handler = new OrAuthorizationRequirementHandler(
                new OptionsWrapper <AuthorizationOptions>(new AuthorizationOptions()
            {
                InvokeHandlersAfterFailure = false
            }),
                new Lazy <IAuthorizationHandlerProvider>(new DefaultAuthorizationHandlerProvider(new[] { new PassThroughAuthorizationHandler() })),
                new DefaultAuthorizationHandlerContextFactory());
            var requirement = SucceedingRequirement.Or(
                new AssertionRequirement(ctx => {
                secondRequirementEvaluated = true;
                return(true);
            }));
            var context = new AuthorizationHandlerContext(new[] { requirement }, BuildClaimsPrincipalWithClaims(), null);

            await handler.HandleAsync(context);

            Assert.True(context.HasSucceeded);
            Assert.False(secondRequirementEvaluated);
        }