private static JwtSignInManager <PocoUser> SetupSignInManager(UserManager <PocoUser> manager, HttpContext context, ILogger logger = null, IdentityOptions identityOptions = null, IAuthenticationSchemeProvider schemeProvider = null)
        {
            var contextAccessor = new Mock <IHttpContextAccessor>();

            contextAccessor.Setup(a => a.HttpContext).Returns(context);
            var roleManager = MockHelpers.MockRoleManager <PocoRole>();

            identityOptions = identityOptions ?? new IdentityOptions();
            var options = new Mock <IOptions <IdentityOptions> >();

            options.Setup(a => a.Value).Returns(identityOptions);
            var claimsFactory = new UserClaimsPrincipalFactory <PocoUser, PocoRole>(manager, roleManager.Object, options.Object);

            schemeProvider = schemeProvider ?? new Mock <IAuthenticationSchemeProvider>().Object;

            //news
            var jwtOptions  = OptionsHelpers.Default;
            var jwtIOptions = new Mock <IOptions <JwtAuthenticationOptions> >();

            jwtIOptions.Setup(a => a.Value).Returns(jwtOptions);
            var tokenfactoryLogger = new TestLogger <TokenFactoryService <PocoUser> >();
            var tokenfactory       = new TokenFactoryService <PocoUser>(claimsFactory, jwtIOptions.Object, options.Object, tokenfactoryLogger);


            var sm = new JwtSignInManager <PocoUser>(manager, contextAccessor.Object, options.Object, null, schemeProvider, new DefaultUserConfirmation <PocoUser>(), tokenfactory);

            sm.Logger = logger ?? NullLogger <JwtSignInManager <PocoUser> > .Instance;
            return(sm);
        }
예제 #2
0
        public async Task PasswordSignInReturnsLockedOutWhenLockedOut()
        {
            // Setup
            var user = new PocoUser {
                UserName = "******"
            };
            var manager = SetupUserManager(user);

            manager.Setup(m => m.SupportsUserLockout).Returns(true).Verifiable();
            manager.Setup(m => m.IsLockedOutAsync(user)).ReturnsAsync(true).Verifiable();

            var context         = new Mock <HttpContext>();
            var contextAccessor = new Mock <IHttpContextAccessor>();

            contextAccessor.Setup(a => a.HttpContext).Returns(context.Object);
            var roleManager     = MockHelpers.MockRoleManager <PocoRole>();
            var identityOptions = new IdentityOptions();
            var options         = new Mock <IOptions <IdentityOptions> >();

            options.Setup(a => a.Value).Returns(identityOptions);
            var claimsFactory = new UserClaimsPrincipalFactory <PocoUser, PocoRole>(manager.Object, roleManager.Object, options.Object);
            var logger        = new TestLogger <JwtSignInManager <PocoUser> >();

            //news
            var jwtOptions  = OptionsHelpers.Default;
            var jwtIOptions = new Mock <IOptions <JwtAuthenticationOptions> >();

            jwtIOptions.Setup(a => a.Value).Returns(jwtOptions);
            var tokenfactoryLogger = new TestLogger <TokenFactoryService <PocoUser> >();
            var tokenfactory       = new TokenFactoryService <PocoUser>(claimsFactory, jwtIOptions.Object, options.Object, tokenfactoryLogger);

            var helper = new JwtSignInManager <PocoUser>(manager.Object, contextAccessor.Object, options.Object, logger,
                                                         new Mock <IAuthenticationSchemeProvider>().Object, new DefaultUserConfirmation <PocoUser>(), tokenfactory);

            // Act
            var result = await helper.PasswordSignInAsync(user.UserName, "bogus", false, false);

            // Assert
            Assert.False(result.Succeeded);
            Assert.True(result.IsLockedOut);
            //Assert.Contains($"User {user.Id} is currently locked out.", logger.LogMessages);
            Assert.Contains($"User is currently locked out.", logger.LogMessages);
            manager.Verify();
        }