From bfbd8892a1446fe4a30a8642598ffc719dc54df7 Mon Sep 17 00:00:00 2001 From: Hao Kung Date: Wed, 7 May 2014 15:02:30 -0700 Subject: [PATCH] SignInManager now checks lockout support --- src/Microsoft.AspNet.Identity.Security/SignInManager.cs | 4 ++-- .../SignInManagerTest.cs | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.AspNet.Identity.Security/SignInManager.cs b/src/Microsoft.AspNet.Identity.Security/SignInManager.cs index 2f64e33170..46765ab6ff 100644 --- a/src/Microsoft.AspNet.Identity.Security/SignInManager.cs +++ b/src/Microsoft.AspNet.Identity.Security/SignInManager.cs @@ -167,7 +167,7 @@ namespace Microsoft.AspNet.Identity.Security { return SignInStatus.Failure; } - if (await UserManager.IsLockedOutAsync(user)) + if (UserManager.SupportsUserLockout && await UserManager.IsLockedOutAsync(user)) { return SignInStatus.LockedOut; } @@ -177,7 +177,7 @@ namespace Microsoft.AspNet.Identity.Security return SignInStatus.Success; //TODO: return await SignInOrTwoFactor(user, isPersistent); } - if (shouldLockout) + if (UserManager.SupportsUserLockout && shouldLockout) { // If lockout is requested, increment access failed count which might lock out the user await UserManager.AccessFailedAsync(user); diff --git a/test/Microsoft.AspNet.Identity.Security.Test/SignInManagerTest.cs b/test/Microsoft.AspNet.Identity.Security.Test/SignInManagerTest.cs index 147cc394d1..213e11a85f 100644 --- a/test/Microsoft.AspNet.Identity.Security.Test/SignInManagerTest.cs +++ b/test/Microsoft.AspNet.Identity.Security.Test/SignInManagerTest.cs @@ -180,6 +180,7 @@ namespace Microsoft.AspNet.Identity.Security.Test // Setup var user = new TestUser { UserName = "Foo" }; var manager = MockHelpers.MockUserManager(); + manager.Setup(m => m.SupportsUserLockout).Returns(true).Verifiable(); manager.Setup(m => m.IsLockedOutAsync(user, CancellationToken.None)).ReturnsAsync(true).Verifiable(); manager.Setup(m => m.FindByNameAsync(user.UserName, CancellationToken.None)).ReturnsAsync(user).Verifiable(); var context = new Mock(); @@ -203,6 +204,7 @@ namespace Microsoft.AspNet.Identity.Security.Test // Setup var user = new TestUser { UserName = "Foo" }; var manager = MockHelpers.MockUserManager(); + manager.Setup(m => m.SupportsUserLockout).Returns(true).Verifiable(); manager.Setup(m => m.IsLockedOutAsync(user, CancellationToken.None)).ReturnsAsync(false).Verifiable(); manager.Setup(m => m.FindByNameAsync(user.UserName, CancellationToken.None)).ReturnsAsync(user).Verifiable(); manager.Setup(m => m.CheckPasswordAsync(user, "password", CancellationToken.None)).ReturnsAsync(true).Verifiable(); @@ -258,6 +260,7 @@ namespace Microsoft.AspNet.Identity.Security.Test // Setup var user = new TestUser { UserName = "Foo" }; var manager = MockHelpers.MockUserManager(); + manager.Setup(m => m.SupportsUserLockout).Returns(true).Verifiable(); manager.Setup(m => m.IsLockedOutAsync(user, CancellationToken.None)).ReturnsAsync(false).Verifiable(); manager.Setup(m => m.FindByNameAsync(user.UserName, CancellationToken.None)).ReturnsAsync(user).Verifiable(); manager.Setup(m => m.CheckPasswordAsync(user, "bogus", CancellationToken.None)).ReturnsAsync(false).Verifiable(); @@ -305,6 +308,7 @@ namespace Microsoft.AspNet.Identity.Security.Test lockedout = true; return Task.FromResult(IdentityResult.Success); }).Verifiable(); + manager.Setup(m => m.SupportsUserLockout).Returns(true).Verifiable(); manager.Setup(m => m.IsLockedOutAsync(user, CancellationToken.None)).Returns(() => Task.FromResult(lockedout)); manager.Setup(m => m.FindByNameAsync(user.UserName, CancellationToken.None)).ReturnsAsync(user).Verifiable(); manager.Setup(m => m.CheckPasswordAsync(user, "bogus", CancellationToken.None)).ReturnsAsync(false).Verifiable();