/// <summary>
        /// Configures non-default identity options.
        /// </summary>
        /// <param name="options">Current identity options.</param>
        public static void Configure(IdentityOptions options)
        {
            if (options == null)
                throw new ArgumentNullException(nameof(options));

            var passwordOptions = options.Password;
            passwordOptions.RequireDigit = true;
            passwordOptions.RequireLowercase = true;
            passwordOptions.RequireUppercase = true;
            passwordOptions.RequireNonLetterOrDigit = false;
            passwordOptions.RequiredLength = 7;
        }
 public SecurityStampValidator(Container container, IOptions<IdentityOptions> options) {
   Query = container.GetInstance<IExecuteQuery>();
   Options = options.Value;
 }
        private Mock<SignInManager<AccountingUser>> BuildMockSignInManager(bool signIn = true)
        {
            var userManager = BuildMockUserRepo();

            var context = new Mock<HttpContext>();
            var contextAccessor = new Mock<IHttpContextAccessor>();
            contextAccessor.Setup(a => a.HttpContext).Returns(context.Object);

            var roleStore = new Mock<IRoleStore<string>>().Object;
            var roles = new List<IRoleValidator<string>>();
            var roleManager = new RoleManager<string>(roleStore, roles,
                new UpperInvariantLookupNormalizer(),
                new IdentityErrorDescriber(),
                null,
                null);

            var identityOptions = new IdentityOptions();
            var options = new Mock<IOptions<IdentityOptions>>();
            options.Setup(a => a.Value).Returns(identityOptions);
            var claimsFactory = new UserClaimsPrincipalFactory<AccountingUser, string>(userManager.Object, roleManager, options.Object);

            var manager = new Mock<SignInManager<AccountingUser>>(userManager.Object, contextAccessor.Object, claimsFactory, null, null);

            manager.Setup(mgr => mgr.PasswordSignInAsync(It.IsAny<AccountingUser>(), It.IsAny<string>(), true, false))
                .Returns(Task.FromResult(signIn ? SignInResult.Success : SignInResult.Failed));

            manager.Setup(mgr => mgr.SignOutAsync())
                .Returns(Task.FromResult(0));

            return manager;
        }
 public static async Task LogOffAsync(this AuthenticationManager authentication, IdentityOptions options) {
   await authentication.SignOutAsync(options.Cookies.ApplicationCookieAuthenticationScheme);
   await authentication.SignOutAsync(options.Cookies.ExternalCookieAuthenticationScheme);
 }