public void Handler_ReturnsNullRemoteMembership_WhenUserLoginInfoIsNull_ByUserId() { var userId = new Random().Next(1, int.MaxValue - 3); var loginProvider = Guid.NewGuid().ToString(); var providerKey = Guid.NewGuid().ToString(); var remoteMemberships = new[] { new ProxiedRemoteMembership(loginProvider, providerKey) { UserId = userId + 1, }, new ProxiedRemoteMembership(Guid.NewGuid().ToString(), Guid.NewGuid().ToString()) { UserId = userId, }, }; var data = remoteMemberships.AsQueryable(); var query = new RemoteMembershipByUser(userId, null); var dbSet = new Mock <DbSet <RemoteMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <RemoteMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <RemoteMembership>()).Returns(entitySet); var handler = new HandleRemoteMembershipByUserQuery(entities.Object); RemoteMembership result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <RemoteMembership>(), Times.Never); }
public void Handler_ReturnsNullRemoteMembership_WhenNotFound_ByUserId() { var userId = FakeData.Id(); var otherUserId = FakeData.Id(userId); var loginProvider = FakeData.String(); var providerKey = FakeData.String(); var userLoginInfo = new UserLoginInfo(loginProvider, providerKey); var remoteMemberships = new[] { new ProxiedRemoteMembership(loginProvider, providerKey) { UserId = otherUserId, }, new ProxiedRemoteMembership(FakeData.String(), FakeData.String()) { UserId = userId, }, }; var data = remoteMemberships.AsQueryable(); var query = new RemoteMembershipByUser(userId, userLoginInfo); var dbSet = new Mock <DbSet <RemoteMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <RemoteMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <RemoteMembership>()).Returns(entitySet); var handler = new HandleRemoteMembershipByUserQuery(entities.Object); RemoteMembership result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <RemoteMembership>(), Times.Once); }
public async Task Handle(CreateRemoteMembership command) { // does user already exist? var hasUserId = command.Principal.Identity.HasAppUserId(); var user = hasUserId ? await _entities.Get <User>() .EagerLoad(new Expression <Func <User, object> >[] { x => x.RemoteMemberships, }) .ByIdAsync(command.Principal.Identity.GetUserId <int>()) : command.User; if (user == null) { var createUser = new CreateUser { Name = command.UserName }; await _commands.Execute(createUser); user = createUser.CreatedEntity; // verify & associate email address await _commands.Execute(new RedeemEmailVerification(user) { Commit = false, Token = command.Token, Ticket = command.Ticket, }); } var ticket = await _queries.Execute(new PrincipalRemoteMembershipTicket(command.Principal)); // do not add this login if it already exists if (user.RemoteMemberships.ByUserLoginInfo(ticket.Login) != null) { return; } var entity = new RemoteMembership { User = user, UserId = user.Id, Id = { LoginProvider = ticket.Login.LoginProvider, ProviderKey = ticket.Login.ProviderKey }, }; user.RemoteMemberships.Add(entity); user.SecurityStamp = Guid.NewGuid().ToString(); if (command.Commit) { await _entities.SaveChangesAsync(); } command.CreatedEntity = entity; }
public void Handler_ReturnsNonNullRemoteMembership_WhenFound_ByUserName() { var userName = FakeData.String(); var loginProvider = FakeData.String(); var providerKey = FakeData.String(); var userLoginInfo = new UserLoginInfo(loginProvider, providerKey); var user = new User { Name = userName }; var otherUser = new User { Name = FakeData.String() }; var remoteMemberships = new[] { new ProxiedRemoteMembership(loginProvider, providerKey) { User = otherUser, }, new ProxiedRemoteMembership(FakeData.String(), FakeData.String()) { User = user, }, new ProxiedRemoteMembership(loginProvider, providerKey) { User = user, }, }; var data = remoteMemberships.AsQueryable(); var query = new RemoteMembershipByUser(userName, userLoginInfo); var dbSet = new Mock <DbSet <RemoteMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <RemoteMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <RemoteMembership>()).Returns(entitySet); var handler = new HandleRemoteMembershipByUserQuery(entities.Object); RemoteMembership result = handler.Handle(query).Result; result.ShouldNotBeNull(); Func <ProxiedRemoteMembership, bool> expectedRemoteMembership = x => x.User.Name == userName && x.LoginProvider == loginProvider && x.ProviderKey == providerKey; result.ShouldEqual(remoteMemberships.Single(expectedRemoteMembership)); entities.Verify(x => x.Query <RemoteMembership>(), Times.Once); }
public void ComponentProperties_DelegateTo_CompositeId() { var entity = new RemoteMembership { Id = { LoginProvider = "provider1", ProviderKey = "key1" } }; entity.LoginProvider.ShouldEqual(entity.Id.LoginProvider); entity.ProviderKey.ShouldEqual(entity.Id.ProviderKey); entity = new ProxiedRemoteMembership("provider2", "key2"); entity.LoginProvider.ShouldEqual(entity.Id.LoginProvider); entity.ProviderKey.ShouldEqual(entity.Id.ProviderKey); }
public void Handler_ReturnsNonNullRemoteMembership_WhenFound_ByUserId() { var userId = new Random().Next(1, int.MaxValue - 3); var loginProvider = Guid.NewGuid().ToString(); var providerKey = Guid.NewGuid().ToString(); var userLoginInfo = new UserLoginInfo(loginProvider, providerKey); var remoteMemberships = new[] { new ProxiedRemoteMembership(loginProvider, providerKey) { UserId = userId + 1, }, new ProxiedRemoteMembership(Guid.NewGuid().ToString(), Guid.NewGuid().ToString()) { UserId = userId, }, new ProxiedRemoteMembership(loginProvider, providerKey) { UserId = userId, }, }; var data = remoteMemberships.AsQueryable(); var query = new RemoteMembershipByUser(userId, userLoginInfo); var dbSet = new Mock <DbSet <RemoteMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <RemoteMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <RemoteMembership>()).Returns(entitySet); var handler = new HandleRemoteMembershipByUserQuery(entities.Object); RemoteMembership result = handler.Handle(query).Result; result.ShouldNotBeNull(); Func <ProxiedRemoteMembership, bool> expectedRemoteMembership = x => x.UserId == userId && x.LoginProvider == loginProvider && x.ProviderKey == providerKey; result.ShouldEqual(remoteMemberships.Single(expectedRemoteMembership)); entities.Verify(x => x.Query <RemoteMembership>(), Times.Once); }
public void Ctor_CreatesEmptyId() { var entity = new RemoteMembership(); entity.Id.ShouldNotBeNull(); }