public static void AssertHandlerHandlesScenarioSuccessfully <TEntity, TRequirement>(
     Func <ContentDbContext, IAuthorizationHandler> handlerSupplier,
     HandlerTestScenario <TEntity> scenario) where TRequirement : IAuthorizationRequirement
 {
     using (var context = DbUtils.InMemoryApplicationDbContext())
     {
         var handler = handlerSupplier(context);
         AssertHandlerHandlesScenarioSuccessfully <TEntity, TRequirement>(handler, scenario);
     }
 }
        public static async void AssertHandlerHandlesScenarioSuccessfully <TEntity, TRequirement>(
            IAuthorizationHandler handler,
            HandlerTestScenario <TEntity> scenario)
            where TRequirement : IAuthorizationRequirement
        {
            var authContext = new AuthorizationHandlerContext(
                new IAuthorizationRequirement[] { Activator.CreateInstance <TRequirement>() },
                scenario.User, scenario.Entity);

            await handler.HandleAsync(authContext);

            if (scenario.ExpectedToPass)
            {
                Assert.True(authContext.HasSucceeded, scenario.UnexpectedFailMessage);
            }
            else
            {
                Assert.False(authContext.HasSucceeded, scenario.UnexpectedPassMessage);
            }
        }