public async Task RemoveLoginAsync(TUser user, UserLoginInfo login) { if (user == null) { throw new ArgumentNullException("user"); } if (login == null) { throw new ArgumentNullException("login"); } string keyToLookFor = RavenUserLogin.GenerateKey(login.LoginProvider, login.ProviderKey); RavenUserLogin ravenUserLogin = await _documentSession.LoadAsync <RavenUserLogin>(keyToLookFor).ConfigureAwait(false); if (ravenUserLogin != null) { _documentSession.Delete(ravenUserLogin); } RavenUserLogin userLogin = user.Logins.FirstOrDefault(lgn => lgn.Id.Equals(keyToLookFor, StringComparison.InvariantCultureIgnoreCase)); if (userLogin != null) { user.RemoveLogin(userLogin); } }
public async Task <TUser> FindAsync(UserLoginInfo login) { if (login == null) { throw new ArgumentNullException("login"); } string keyToLookFor = RavenUserLogin.GenerateKey(login.LoginProvider, login.ProviderKey); RavenUserLogin ravenUserLogin = await _documentSession .Include <RavenUserLogin, TUser>(usrLogin => usrLogin.UserId) .LoadAsync(keyToLookFor) .ConfigureAwait(false); return((ravenUserLogin != null) ? await _documentSession.LoadAsync <TUser>(ravenUserLogin.UserId).ConfigureAwait(false) : default(TUser)); }
public async Task Add_Should_Add_New_Login_If_User_Exists() { const string userName = "******"; const string loginProvider = "Twitter"; const string providerKey = "12345678"; using (IDocumentStore store = CreateEmbeddableStore()) { using (IAsyncDocumentSession ses = store.OpenAsyncSession()) { ses.Advanced.UseOptimisticConcurrency = true; IUserLoginStore <RavenUser, string> userLoginStore = new RavenUserStore <RavenUser>(ses); RavenUser user = new RavenUser(userName); await ses.StoreAsync(user); await ses.SaveChangesAsync(); } using (IAsyncDocumentSession ses = store.OpenAsyncSession()) { ses.Advanced.UseOptimisticConcurrency = true; IUserLoginStore <RavenUser, string> userLoginStore = new RavenUserStore <RavenUser>(ses); RavenUser user = await ses.LoadAsync <RavenUser>(RavenUser.GenerateKey(userName)); // Act UserLoginInfo loginToAdd = new UserLoginInfo(loginProvider, providerKey); await userLoginStore.AddLoginAsync(user, loginToAdd); await ses.SaveChangesAsync(); // Assert RavenUserLogin foundLogin = await ses.LoadAsync <RavenUserLogin>(RavenUserLogin.GenerateKey(loginProvider, providerKey)); Assert.Equal(1, user.Logins.Count()); Assert.NotNull(foundLogin); } } }