public void Handler_ReturnsNullLocalMembership_WhenNotFound_ByUserName() { var userName = FakeData.String(); var user = new User { Name = FakeData.String(), }; var data = new[] { new LocalMembership { User = user, }, }.AsQueryable(); var query = new LocalMembershipByUser(userName); var dbSet = new Mock <DbSet <LocalMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <LocalMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <LocalMembership>()).Returns(entitySet); var handler = new HandleLocalMembershipByUserQuery(entities.Object); LocalMembership result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <LocalMembership>(), Times.Once); }
public void Handler_ReturnsNullLocalMembership_WhenNotFound_ByUserLoginInfo() { var loginProvider = FakeData.String(); var providerKey = FakeData.String(); var userLoginInfo = new UserLoginInfo(loginProvider, providerKey); var user = new User(); user.RemoteMemberships.Add(new ProxiedRemoteMembership( FakeData.String(), FakeData.String())); var data = new[] { new LocalMembership { User = user, }, }.AsQueryable(); var query = new LocalMembershipByUser(userLoginInfo); var dbSet = new Mock <DbSet <LocalMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <LocalMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <LocalMembership>()).Returns(entitySet); var handler = new HandleLocalMembershipByUserQuery(entities.Object); LocalMembership result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <LocalMembership>(), Times.Once); }
public void Handler_ReturnsNonNullLocalMembership_WhenFound_ByUserId() { var userId = FakeData.Id(); var user = new ProxiedUser(userId); var data = new[] { new LocalMembership { User = user, PasswordHash = "password hash", }, }.AsQueryable(); var query = new LocalMembershipByUser(userId); var dbSet = new Mock <DbSet <LocalMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <LocalMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <LocalMembership>()).Returns(entitySet); var handler = new HandleLocalMembershipByUserQuery(entities.Object); LocalMembership result = handler.Handle(query).Result; result.ShouldNotBeNull(); result.User.ShouldEqual(user); result.PasswordHash.ShouldEqual("password hash"); entities.Verify(x => x.Query <LocalMembership>(), Times.Once); }
public void Handler_ReturnsNonNullLocalMembership_WhenFound_ByUserName() { var emailAddress = FakeData.Email(); var user = new User(); user.EmailAddresses.Add(new EmailAddress { IsVerified = true, Value = emailAddress, }); var data = new[] { new LocalMembership { User = user, PasswordHash = "password hash", }, }.AsQueryable(); var query = new LocalMembershipByVerifiedEmail(emailAddress); var dbSet = new Mock <DbSet <LocalMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <LocalMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <LocalMembership>()).Returns(entitySet); var handler = new HandleLocalMembershipByVerifiedEmailQuery(entities.Object); LocalMembership result = handler.Handle(query).Result; result.ShouldNotBeNull(); result.User.ShouldEqual(user); result.PasswordHash.ShouldEqual("password hash"); entities.Verify(x => x.Query <LocalMembership>(), Times.Once); }
public async Task Handle(ResetPassword command) { var verification = await _entities.Get <EmailVerification>() .EagerLoad(x => x.EmailAddress) .ByTicketAsync(command.Ticket, false); verification.RedeemedOnUtc = DateTime.UtcNow; var user = verification.EmailAddress.User; var localMembership = await _queries.Execute(new LocalMembershipByVerifiedEmail(verification.EmailAddress.Value)); // if the user has a no local membership, create one if (localMembership == null) { localMembership = new LocalMembership { User = user, }; user.LocalMembership = localMembership; } // update the password var passwordHash = await _queries.Execute(new HashedPassword(command.Password)); user.LocalMembership.PasswordHash = passwordHash; user.SecurityStamp = Guid.NewGuid().ToString(); await _entities.SaveChangesAsync(); }
public void Handler_ReturnsNullLocalMembership_WhenNotFound_ByVerifiedEmail() { var emailAddress = string.Format("{0}@domain.tld", Guid.NewGuid()); var user = new User(); user.EmailAddresses.Add(new EmailAddress { IsVerified = false, Value = emailAddress, }); var data = new[] { new LocalMembership { User = user, }, }.AsQueryable(); var query = new LocalMembershipByVerifiedEmail(emailAddress); var dbSet = new Mock <DbSet <LocalMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <LocalMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <LocalMembership>()).Returns(entitySet); var handler = new HandleLocalMembershipByVerifiedEmailQuery(entities.Object); LocalMembership result = handler.Handle(query).Result; result.ShouldBeNull(); entities.Verify(x => x.Query <LocalMembership>(), Times.Once); }
public void Handler_ReturnsNonNullLocalMembership_WhenFound_ByUserLoginInfo() { var loginProvider = Guid.NewGuid().ToString(); var providerKey = Guid.NewGuid().ToString(); var userLoginInfo = new UserLoginInfo(loginProvider, providerKey); var user = new User(); user.RemoteMemberships.Add(new ProxiedRemoteMembership( loginProvider, providerKey)); var data = new[] { new LocalMembership { User = user, PasswordHash = "password hash", }, }.AsQueryable(); var query = new LocalMembershipByUser(userLoginInfo); var dbSet = new Mock <DbSet <LocalMembership> >(MockBehavior.Strict).SetupDataAsync(data); var entities = new Mock <IReadEntities>(MockBehavior.Strict); var entitySet = new EntitySet <LocalMembership>(dbSet.Object, entities.Object); entities.Setup(x => x.Query <LocalMembership>()).Returns(entitySet); var handler = new HandleLocalMembershipByUserQuery(entities.Object); LocalMembership result = handler.Handle(query).Result; result.ShouldNotBeNull(); result.User.ShouldEqual(user); result.PasswordHash.ShouldEqual("password hash"); entities.Verify(x => x.Query <LocalMembership>(), Times.Once); }
public void Ctor_InitializesNothing() { var entity = new LocalMembership(); entity.Id.ShouldEqual(0); entity.User.ShouldBeNull(); entity.PasswordHash.ShouldBeNull(); }
public void IsInvalid_WhenLocalMembershipIsFound_ByPrincipal() { var userId = FakeData.Id(); var userName = FakeData.String(); var principal = new Mock <IPrincipal>(MockBehavior.Strict); var claims = new[] { new Claim(ClaimTypes.Name, userName), new Claim(ClaimTypes.NameIdentifier, userId.ToString(CultureInfo.InvariantCulture)) }; var identity = new ClaimsIdentity(claims); var user = new ProxiedUser(userId) { Name = userName, }; var localMembership = new LocalMembership { User = user, }; principal.SetupGet(x => x.Identity).Returns(identity); var queries = new Mock <IProcessQueries>(MockBehavior.Strict); var command = new FakeMustNotFindLocalMembershipByPrincipalCommand { Principal = principal.Object }; Expression <Func <LocalMembershipByUser, bool> > expectedQuery = x => x.UserId == userId; queries.Setup(x => x.Execute(It.Is(expectedQuery))) .Returns(Task.FromResult(localMembership)); var validator = new FakeMustNotFindLocalMembershipByPrincipalValidator(queries.Object); var result = validator.Validate(command); result.IsValid.ShouldBeFalse(); Func <ValidationFailure, bool> expectedError = x => x.PropertyName == command.PropertyName(y => y.Principal); result.Errors.Count(expectedError).ShouldEqual(1); result.Errors.Single(expectedError).ErrorMessage.ShouldEqual(Resources .Validation_LocalMembershipByUser_AlreadyExists .Replace("{PropertyName}", User.Constraints.Label) .Replace("{PropertyValue}", userName) .Replace("{PasswordLabel}", LocalMembership.Constraints.Label.ToLower()) ); queries.Verify(x => x.Execute(It.Is(expectedQuery)), Times.Once); validator.ShouldHaveValidationErrorFor(x => x.Principal, command.Principal); queries.Verify(x => x.Execute(It.Is(expectedQuery)), Times.Exactly(2)); }
public void IsValid_WhenFound_ByPrincipal() { var userId = FakeData.Id(); var userName = FakeData.String(); var queries = new Mock <IProcessQueries>(MockBehavior.Strict); var principal = new Mock <IPrincipal>(MockBehavior.Strict); var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userId.ToString(CultureInfo.InvariantCulture)), new Claim(ClaimTypes.Name, userName), }; var identity = new ClaimsIdentity(claims); principal.SetupGet(x => x.Identity).Returns(identity); var command = new FakeMustFindLocalMembershipByPrincipalCommand { Principal = principal.Object, }; var user = new ProxiedUser(userId) { Name = userName }; var localMembership = new LocalMembership { User = user }; Expression <Func <LocalMembershipByUser, bool> > expectedQuery = x => x.UserId == userId; queries.Setup(x => x.Execute(It.Is(expectedQuery))) .Returns(Task.FromResult(localMembership)); var validator = new FakeMustFindLocalMembershipByPrincipalValidator(queries.Object); var result = validator.Validate(command); result.IsValid.ShouldBeTrue(); queries.Verify(x => x.Execute(It.Is(expectedQuery)), Times.Once); validator.ShouldNotHaveValidationErrorFor(x => x.Principal, command.Principal); queries.Verify(x => x.Execute(It.Is(expectedQuery)), Times.Exactly(2)); }