From 113bab1a1d34f03eb50eed002230444a23463468 Mon Sep 17 00:00:00 2001 From: Hao Kung Date: Wed, 12 Mar 2014 13:43:28 -0700 Subject: [PATCH] Port ConfirmEmail, IQueryableUserStore tests Also add missing IQueryableUserStore to InMemory --- .../InMemoryUserStore.cs | 5 +- .../InMemoryUserStoreTest.cs | 86 ++++++++++++++++--- 2 files changed, 76 insertions(+), 15 deletions(-) diff --git a/src/Microsoft.AspNet.Identity.InMemory/InMemoryUserStore.cs b/src/Microsoft.AspNet.Identity.InMemory/InMemoryUserStore.cs index 255bcd0b2b..e80f317c2f 100644 --- a/src/Microsoft.AspNet.Identity.InMemory/InMemoryUserStore.cs +++ b/src/Microsoft.AspNet.Identity.InMemory/InMemoryUserStore.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; namespace Microsoft.AspNet.Identity.InMemory { public class InMemoryUserStore : - IUserStore, IUserLoginStore, IUserRoleStore, IUserClaimStore, @@ -15,8 +14,8 @@ namespace Microsoft.AspNet.Identity.InMemory IUserSecurityStampStore, IUserEmailStore, IUserLockoutStore, - IUserPhoneNumberStore - where TUser : InMemoryUser + IUserPhoneNumberStore, + IQueryableUserStore where TUser : InMemoryUser { private readonly Dictionary _logins = new Dictionary(new LoginComparer()); diff --git a/test/Microsoft.AspNet.Identity.InMemory.Test/InMemoryUserStoreTest.cs b/test/Microsoft.AspNet.Identity.InMemory.Test/InMemoryUserStoreTest.cs index 934ca1eedd..c851ed2be6 100644 --- a/test/Microsoft.AspNet.Identity.InMemory.Test/InMemoryUserStoreTest.cs +++ b/test/Microsoft.AspNet.Identity.InMemory.Test/InMemoryUserStoreTest.cs @@ -18,18 +18,6 @@ namespace Microsoft.AspNet.Identity.InMemory.Test Assert.Null(await manager.FindById(user.Id)); } - [Fact] - public async Task CanFindByEmail() - { - var manager = CreateManager(); - const string userName = "EmailTest"; - const string email = "email@test.com"; - var user = new InMemoryUser(userName) { Email = email }; - IdentityResultAssert.IsSuccess(await manager.Create(user)); - var fetch = await manager.FindByEmail(email); - Assert.Equal(user, fetch); - } - [Fact] public async Task CanCreateUserNoPassword() { @@ -202,6 +190,80 @@ namespace Microsoft.AspNet.Identity.InMemory.Test IdentityResultAssert.IsFailure(result, "A user with that external login already exists."); } + // Email tests + [Fact] + public async Task CanFindByEmail() + { + var manager = CreateManager(); + const string userName = "EmailTest"; + const string email = "email@test.com"; + var user = new InMemoryUser(userName) { Email = email }; + IdentityResultAssert.IsSuccess(await manager.Create(user)); + var fetch = await manager.FindByEmail(email); + Assert.Equal(user, fetch); + } + + [Fact] + public async Task CanFindUsersViaUserQuerable() + { + var mgr = CreateManager(); + var users = new[] + { + new InMemoryUser("user1"), + new InMemoryUser("user2"), + new InMemoryUser("user3") + }; + foreach (InMemoryUser u in users) + { + IdentityResultAssert.IsSuccess(await mgr.Create(u)); + } + var usersQ = mgr.Users; + Assert.Equal(3, usersQ.Count()); + Assert.NotNull(usersQ.FirstOrDefault(u => u.UserName == "user1")); + Assert.NotNull(usersQ.FirstOrDefault(u => u.UserName == "user2")); + Assert.NotNull(usersQ.FirstOrDefault(u => u.UserName == "user3")); + Assert.Null(usersQ.FirstOrDefault(u => u.UserName == "bogus")); + } + + [Fact] + public async Task ConfirmEmailFalseByDefaultTest() + { + var manager = CreateManager(); + var user = new InMemoryUser("test"); + IdentityResultAssert.IsSuccess(await manager.Create(user)); + Assert.False(await manager.IsEmailConfirmed(user.Id)); + } + + // TODO: No token provider implementations yet + //[Fact] + //public async Task ConfirmEmailTest() + //{ + // var manager = CreateManager(); + // var user = new InMemoryUser("test"); + // Assert.False(user.EmailConfirmed); + // IdentityResultAssert.IsSuccess(await manager.Create(user)); + // var token = await manager.GenerateEmailConfirmationToken(user.Id); + // Assert.NotNull(token); + // IdentityResultAssert.IsSuccess(await manager.ConfirmEmail(user.Id, token)); + // Assert.True(await manager.IsEmailConfirmed(user.Id)); + // IdentityResultAssert.IsSuccess(await manager.SetEmail(user.Id, null)); + // Assert.False(await manager.IsEmailConfirmed(user.Id)); + //} + + //[Fact] + //public async Task ConfirmTokenFailsAfterPasswordChangeTest() + //{ + // var manager = CreateManager(); + // var user = new InMemoryUser("test"); + // Assert.False(user.EmailConfirmed); + // IdentityResultAssert.IsSuccess(await manager.Create(user, "password")); + // var token = await manager.GenerateEmailConfirmationToken(user.Id); + // Assert.NotNull(token); + // IdentityResultAssert.IsSuccess(await manager.ChangePassword(user.Id, "password", "newpassword")); + // IdentityResultAssert.IsFailure(await manager.ConfirmEmail(user.Id, token), "Invalid token."); + // Assert.False(await manager.IsEmailConfirmed(user.Id)); + //} + // Lockout tests [Fact]