Port ConfirmEmail, IQueryableUserStore tests

Also add missing IQueryableUserStore to InMemory
This commit is contained in:
Hao Kung 2014-03-12 13:43:28 -07:00
parent c914772696
commit 113bab1a1d
2 changed files with 76 additions and 15 deletions

View File

@ -7,7 +7,6 @@ using System.Threading.Tasks;
namespace Microsoft.AspNet.Identity.InMemory
{
public class InMemoryUserStore<TUser> :
IUserStore<TUser, string>,
IUserLoginStore<TUser, string>,
IUserRoleStore<TUser, string>,
IUserClaimStore<TUser, string>,
@ -15,8 +14,8 @@ namespace Microsoft.AspNet.Identity.InMemory
IUserSecurityStampStore<TUser, string>,
IUserEmailStore<TUser, string>,
IUserLockoutStore<TUser, string>,
IUserPhoneNumberStore<TUser, string>
where TUser : InMemoryUser
IUserPhoneNumberStore<TUser, string>,
IQueryableUserStore<TUser, string> where TUser : InMemoryUser
{
private readonly Dictionary<UserLoginInfo, TUser> _logins =
new Dictionary<UserLoginInfo, TUser>(new LoginComparer());

View File

@ -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]