public void Success() { var candidateId = Guid.NewGuid(); const string phoneNumber = "0123456789"; const string mobileVerificationCode = "1234"; var candidate = new CandidateBuilder(candidateId).AllowMobile(true).VerifiedMobile(false).MobileVerificationCode(mobileVerificationCode).PhoneNumber(phoneNumber).Build(); var communicationService = new Mock <ICommunicationService>(); IEnumerable <CommunicationToken> communicationTokens = new List <CommunicationToken>(0); communicationService.Setup(cs => cs.SendMessageToCandidate(candidateId, MessageTypes.SendMobileVerificationCode, It.IsAny <IEnumerable <CommunicationToken> >())).Callback <Guid, MessageTypes, IEnumerable <CommunicationToken> >((cid, mt, ct) => { communicationTokens = ct; }); var candidateWriteRepository = new Mock <ICandidateWriteRepository>(); var codeGenerator = new Mock <ICodeGenerator>(); var strategy = new SendMobileVerificationCodeStrategyBuilder().With(communicationService).With(candidateWriteRepository).With(codeGenerator).Build(); strategy.SendMobileVerificationCode(candidate); candidate.CommunicationPreferences.MobileVerificationCode.Should().Be(mobileVerificationCode); candidateWriteRepository.Verify(r => r.Save(candidate), Times.Never); candidate.CommunicationPreferences.MobileVerificationCode.Should().Be(mobileVerificationCode); communicationService.Verify(cs => cs.SendMessageToCandidate(candidateId, MessageTypes.SendMobileVerificationCode, It.IsAny <IEnumerable <CommunicationToken> >()), Times.Once); var communicationTokensList = communicationTokens.ToList(); communicationTokensList.Count.Should().Be(2); communicationTokensList.Single(ct => ct.Key == CommunicationTokens.CandidateMobileNumber).Value.Should().Be(phoneNumber); communicationTokensList.Single(ct => ct.Key == CommunicationTokens.MobileVerificationCode).Value.Should().Be(mobileVerificationCode); codeGenerator.Verify(cg => cg.GenerateNumeric(It.IsAny <int>()), Times.Never); }
public void EmptyMobileVerificationCode() { var candidateId = Guid.NewGuid(); const string mobileVerificationCode = "1234"; var candidate = new CandidateBuilder(candidateId) .EnableApplicationStatusChangeAlertsViaText(true) .VerifiedMobile(false) .MobileVerificationCode(string.Empty) .Build(); var candidateWriteRepository = new Mock <ICandidateWriteRepository>(); candidateWriteRepository.Setup(r => r.Save(It.IsAny <Candidate>())).Callback <Candidate>(c => { candidate = c; }); var codeGenerator = new Mock <ICodeGenerator>(); codeGenerator.Setup(cg => cg.GenerateNumeric(4)).Returns(mobileVerificationCode); var strategy = new SendMobileVerificationCodeStrategyBuilder().With(candidateWriteRepository).With(codeGenerator).Build(); strategy.SendMobileVerificationCode(candidate); candidate.CommunicationPreferences.MobileVerificationCode.Should().Be(mobileVerificationCode); candidate.CommunicationPreferences.MobileVerificationCodeDateCreated.Should().HaveValue(); // ReSharper disable once PossibleInvalidOperationException candidate.CommunicationPreferences.MobileVerificationCodeDateCreated.Value.Should().BeCloseTo(DateTime.UtcNow, 500); candidateWriteRepository.Verify(r => r.Save(candidate), Times.Once); }
public void MobileVerificationNotRequired(bool verifiedMobile, bool allowMobile, bool allowMobileMarketing) { var candidateId = Guid.NewGuid(); var candidate = new CandidateBuilder(candidateId).AllowMobile(allowMobile).VerifiedMobile(verifiedMobile).AllowMobileMarketing(allowMobileMarketing).Build(); var strategy = new SendMobileVerificationCodeStrategyBuilder().Build(); Action action = () => { strategy.SendMobileVerificationCode(candidate); }; var message = string.Format("The mobile number associated with candidate Id: {0} does not require verification.", candidateId); action.ShouldThrow <CustomException>().WithMessage(message).And.Code.Should().Be(ErrorCodes.EntityStateError); }
public void EmptyMobileVerificationCode() { var candidateId = Guid.NewGuid(); const string mobileVerificationCode = "1234"; var candidate = new CandidateBuilder(candidateId).AllowMobile(true).VerifiedMobile(false).MobileVerificationCode(string.Empty).Build(); var candidateWriteRepository = new Mock <ICandidateWriteRepository>(); candidateWriteRepository.Setup(r => r.Save(It.IsAny <Candidate>())).Callback <Candidate>(c => { candidate = c; }); var codeGenerator = new Mock <ICodeGenerator>(); codeGenerator.Setup(cg => cg.GenerateNumeric(4)).Returns(mobileVerificationCode); var strategy = new SendMobileVerificationCodeStrategyBuilder().With(candidateWriteRepository).With(codeGenerator).Build(); strategy.SendMobileVerificationCode(candidate); candidate.CommunicationPreferences.MobileVerificationCode.Should().Be(mobileVerificationCode); candidateWriteRepository.Verify(r => r.Save(candidate), Times.Once); }
public void Success() { var candidateId = Guid.NewGuid(); const string phoneNumber = "0123456789"; const string mobileVerificationCode = "1234"; var mobileVerificationCodeDateCreated = DateTime.UtcNow.AddDays(-1); var candidate = new CandidateBuilder(candidateId) .EnableApplicationStatusChangeAlertsViaText(true) .VerifiedMobile(false) .MobileVerificationCode(mobileVerificationCode) .MobileVerificationCodeDateCreated(mobileVerificationCodeDateCreated) .PhoneNumber(phoneNumber) .Build(); var communicationService = new Mock <ICommunicationService>(); IEnumerable <CommunicationToken> communicationTokens = new List <CommunicationToken>(0); communicationService.Setup(cs => cs.SendMessageToCandidate(candidateId, MessageTypes.SendMobileVerificationCode, It.IsAny <IEnumerable <CommunicationToken> >())).Callback <Guid, MessageTypes, IEnumerable <CommunicationToken> >((cid, mt, ct) => { communicationTokens = ct; }); var candidateWriteRepository = new Mock <ICandidateWriteRepository>(); var codeGenerator = new Mock <ICodeGenerator>(); var strategy = new SendMobileVerificationCodeStrategyBuilder().With(communicationService).With(candidateWriteRepository).With(codeGenerator).Build(); strategy.SendMobileVerificationCode(candidate); candidateWriteRepository.Verify(r => r.Save(candidate), Times.Never); candidate.CommunicationPreferences.MobileVerificationCode.Should().Be(mobileVerificationCode); candidate.CommunicationPreferences.MobileVerificationCodeDateCreated.Should().HaveValue(); // ReSharper disable once PossibleInvalidOperationException candidate.CommunicationPreferences.MobileVerificationCodeDateCreated.Value.Should().Be(mobileVerificationCodeDateCreated); communicationService.Verify(cs => cs.SendMessageToCandidate(candidateId, MessageTypes.SendMobileVerificationCode, It.IsAny <IEnumerable <CommunicationToken> >()), Times.Once); var communicationTokensList = communicationTokens.ToList(); communicationTokensList.Count.Should().Be(2); communicationTokensList.Single(ct => ct.Key == CommunicationTokens.CandidateMobileNumber).Value.Should().Be(phoneNumber); communicationTokensList.Single(ct => ct.Key == CommunicationTokens.MobileVerificationCode).Value.Should().Be(mobileVerificationCode); codeGenerator.Verify(cg => cg.GenerateNumeric(It.IsAny <int>()), Times.Never); }