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); }
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); }