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