public void NewUserRegistration() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidate = new CandidateBuilder(Guid.Empty).EmailAddress(emailAddress).Build(); var strategy = new RegisterCandidateStrategyBuilder().Build(); strategy.RegisterCandidate(candidate, password); }
public void NewUserRegistrationSendsActivationCode() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidate = new CandidateBuilder(Guid.Empty).EmailAddress(emailAddress).Build(); var communicationService = new Mock <ICommunicationService>(); var strategy = new RegisterCandidateStrategyBuilder().With(communicationService).Build(); strategy.RegisterCandidate(candidate, password); communicationService.Verify(s => s.SendMessageToCandidate(It.Is <Guid>(g => g != Guid.Empty), MessageTypes.SendActivationCode, It.IsAny <CommunicationToken[]>()), Times.Once); }
public void NewUserRegistrationRegistersUserAccount() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidate = new CandidateBuilder(Guid.Empty).EmailAddress(emailAddress).Build(); var userAccountService = new Mock <IUserAccountService>(); var strategy = new RegisterCandidateStrategyBuilder().With(userAccountService).Build(); strategy.RegisterCandidate(candidate, password); userAccountService.Verify(s => s.Register(emailAddress, It.Is <Guid>(g => g != Guid.Empty), It.IsAny <string>(), UserRoles.Candidate), Times.Once); }
public void NewUserRegistrationCreatesAuthenticationEntity() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidate = new CandidateBuilder(Guid.Empty).EmailAddress(emailAddress).Build(); var authenticationService = new Mock <IAuthenticationService>(); var strategy = new RegisterCandidateStrategyBuilder().With(authenticationService).Build(); strategy.RegisterCandidate(candidate, password); authenticationService.Verify(s => s.CreateUser(It.Is <Guid>(g => g != Guid.Empty), password), Times.Once); }
public void NewUserRegistrationCreatesNewGuid() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidate = new CandidateBuilder(Guid.Empty).EmailAddress(emailAddress).Build(); var candidateWriteRepository = new Mock <ICandidateWriteRepository>(); Candidate savedCandidate = null; candidateWriteRepository.Setup(r => r.Save(It.IsAny <Candidate>())).Returns <Candidate>(c => c).Callback <Candidate>(c => savedCandidate = c); var strategy = new RegisterCandidateStrategyBuilder().With(candidateWriteRepository).Build(); strategy.RegisterCandidate(candidate, password); savedCandidate.Should().NotBeNull(); savedCandidate.EntityId.Should().NotBeEmpty(); }
public void RegisteringUserPendingDeletionIsValid() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).WithStatus(UserStatuses.PendingDeletion).Build(); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).With(userReadRepository).Build(); Action action = () => strategy.RegisterCandidate(candidate, password); action.ShouldNotThrow <CustomException>(); }
public void ExistingUserMustNotBeActive() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).Activated(true).Build(); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).Build(); Action action = () => strategy.RegisterCandidate(candidate, password); action.ShouldThrow <CustomException>(); }
public void RegisteringUserPendingDeletionSendsActivationCode() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).WithStatus(UserStatuses.PendingDeletion).Build(); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var communicationService = new Mock <ICommunicationService>(); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).With(communicationService).Build(); strategy.RegisterCandidate(candidate, password); communicationService.Verify(s => s.SendMessageToCandidate(It.Is <Guid>(g => g != Guid.Empty), MessageTypes.SendActivationCode, It.IsAny <CommunicationToken[]>()), Times.Once); }
public void RegisteringUserPendingDeletionRegistersUserAccount() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).WithStatus(UserStatuses.PendingDeletion).Build(); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var userAccountService = new Mock <IUserAccountService>(); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).With(userAccountService).Build(); strategy.RegisterCandidate(candidate, password); userAccountService.Verify(s => s.Register(emailAddress, It.Is <Guid>(g => g != Guid.Empty), It.IsAny <string>(), UserRoles.Candidate), Times.Once); }
public void RegisteringExistingUnactivatedUserDoesntReRegisterUser() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).Activated(false).Build(); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var userAccountService = new Mock <IUserAccountService>(); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).With(userAccountService).Build(); strategy.RegisterCandidate(candidate, password); userAccountService.Verify(s => s.Register(emailAddress, candidateId, It.IsAny <string>(), UserRoles.Candidate), Times.Never); }
public void RegisteringExistingUnactivatedExpiredUserIsValid() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).Activated(false).Build(); user.ActivateCodeExpiry = DateTime.UtcNow.AddMonths(-2); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).Build(); Action action = () => strategy.RegisterCandidate(candidate, password); action.ShouldNotThrow <CustomException>(); }
public void RegisteringExistingUnactivatedExpiredUserSendsActivationCode() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).Activated(false).Build(); user.ActivateCodeExpiry = DateTime.UtcNow.AddMonths(-2); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var communicationService = new Mock <ICommunicationService>(); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).With(communicationService).Build(); strategy.RegisterCandidate(candidate, password); communicationService.Verify(s => s.SendMessageToCandidate(candidateId, MessageTypes.SendActivationCode, It.IsAny <CommunicationToken[]>()), Times.Once); }
public void RegisteringExistingUnactivatedExpiredUserDoesntResetPassword() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).Activated(false).Build(); user.ActivateCodeExpiry = DateTime.UtcNow.AddMonths(-2); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var authenticationService = new Mock <IAuthenticationService>(); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).With(authenticationService).Build(); strategy.RegisterCandidate(candidate, password); authenticationService.Verify(s => s.ResetUserPassword(candidateId, password), Times.Once); }
public void RegisteringUserPendingDeletionCreatesNewGuid() { const string emailAddress = "*****@*****.**"; const string password = "******"; var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).EmailAddress(emailAddress).Build(); var user = new UserBuilder(emailAddress, candidateId).WithStatus(UserStatuses.PendingDeletion).Build(); var userReadRepository = new Mock <IUserReadRepository>(); userReadRepository.Setup(r => r.Get(emailAddress, false)).Returns(user); var candidateWriteRepository = new Mock <ICandidateWriteRepository>(); Candidate savedCandidate = null; candidateWriteRepository.Setup(r => r.Save(It.IsAny <Candidate>())).Returns <Candidate>(c => c).Callback <Candidate>(c => savedCandidate = c); var strategy = new RegisterCandidateStrategyBuilder().With(userReadRepository).With(candidateWriteRepository).Build(); strategy.RegisterCandidate(candidate, password); savedCandidate.Should().NotBeNull(); savedCandidate.EntityId.Should().NotBeEmpty(); }