예제 #1
0
        public void MobileCodeVerificationFailedTest()
        {
            //Arrange
            var          candidateId             = Guid.NewGuid();
            const string actualVerificationCode  = "1234";
            const string enteredVerificationCode = "5678";

            var candidate = new CandidateBuilder(candidateId)
                            .MobileVerificationCode(actualVerificationCode)
                            .EnableApplicationStatusChangeAlertsViaText(true)
                            .VerifiedMobile(false)
                            .Build();

            var candidateReadRepository = new Mock <ICandidateReadRepository>();

            candidateReadRepository.Setup(r => r.Get(candidateId)).Returns(candidate);

            var candidateWriteRepository = new Mock <ICandidateWriteRepository>();

            candidateWriteRepository.Setup(r => r.Save(It.IsAny <Candidate>())).Callback <Candidate>(c => { candidate = c; });

            var verifyMobileStrategy = new VerifyMobileStrategyBuilder().With(candidateReadRepository).With(candidateWriteRepository).Build();

            //Act
            Action a = () => verifyMobileStrategy.VerifyMobile(candidateId, enteredVerificationCode);

            //Assert
            var errorMessage =
                string.Format("Mobile verification code {0} is invalid for candidate {1} with mobile number {2}",
                              enteredVerificationCode, candidateId, candidate.RegistrationDetails.PhoneNumber);

            a.ShouldThrow <CustomException>().WithMessage(errorMessage);
        }
예제 #2
0
        public void ErrorTest(bool verifiedMobile, bool allowMobile, bool allowMobileMarketing)
        {
            //Arrange
            var candidateId      = Guid.NewGuid();
            var verificationCode = string.Empty;

            Candidate candidate = new CandidateBuilder(candidateId)
                                  .MobileVerificationCode(verificationCode)
                                  .EnableApplicationStatusChangeAlertsViaText(allowMobile)
                                  .VerifiedMobile(verifiedMobile).Build();

            var candidateReadRepository = new Mock <ICandidateReadRepository>();

            candidateReadRepository.Setup(r => r.Get(candidateId)).Returns(candidate);

            var candidateWriteRepository = new Mock <ICandidateWriteRepository>();

            candidateWriteRepository.Setup(r => r.Save(It.IsAny <Candidate>())).Callback <Candidate>(c => { candidate = c; });

            var verifyMobileStrategy = new VerifyMobileStrategyBuilder()
                                       .With(candidateReadRepository)
                                       .With(candidateWriteRepository)
                                       .Build();

            //Act
            Action a = () => verifyMobileStrategy.VerifyMobile(candidateId, verificationCode);

            //Assert
            var errorMessage = string.Format("The mobile number associated with candidate Id: {0} does not require verification.", candidateId);

            a.ShouldThrow <CustomException>().WithMessage(errorMessage);
            a.ShouldThrow <CustomException>();
        }
예제 #3
0
        public void SuccessTest()
        {
            //Arrange
            Guid   candidateId      = Guid.NewGuid();
            string verificationCode = "1234";

            Candidate candidate = new CandidateBuilder(candidateId).MobileVerificationCode(verificationCode).AllowMobile(true).VerifiedMobile(false).Build();
            var       candidateReadRepository = new Mock <ICandidateReadRepository>();

            candidateReadRepository.Setup(r => r.Get(candidateId)).Returns(candidate);

            //candidateReadRepository.Setup()
            var candidateWriteRepository = new Mock <ICandidateWriteRepository>();

            candidateWriteRepository.Setup(r => r.Save(It.IsAny <Candidate>())).Callback <Candidate>(c => { candidate = c; });

            var verifyMobileStrategy = new VerifyMobileStrategyBuilder().With(candidateReadRepository).With(candidateWriteRepository).Build();

            //Act
            verifyMobileStrategy.VerifyMobile(candidateId, verificationCode);

            //Assert
            candidateWriteRepository.Verify(r => r.Save(It.IsAny <Candidate>()), Times.Once);
            candidate.CommunicationPreferences.AllowMobile.Should().BeTrue();
            candidate.CommunicationPreferences.MobileVerificationCode.Should().BeNullOrEmpty();
            candidate.CommunicationPreferences.VerifiedMobile.Should().BeTrue();
            candidate.MobileVerificationRequired().Should().BeFalse();
        }
예제 #4
0
        public void SuccessTest()
        {
            //Arrange
            var          candidateId      = Guid.NewGuid();
            const string verificationCode = "1234";

            var candidate = new CandidateBuilder(candidateId)
                            .MobileVerificationCode(verificationCode)
                            .MobileVerificationCodeDateCreated(DateTime.UtcNow)
                            .EnableApplicationStatusChangeAlertsViaText(true)
                            .VerifiedMobile(false).Build();

            var candidateReadRepository = new Mock <ICandidateReadRepository>();

            candidateReadRepository.Setup(r => r.Get(candidateId)).Returns(candidate);

            var candidateWriteRepository = new Mock <ICandidateWriteRepository>();

            candidateWriteRepository.Setup(r => r.Save(It.IsAny <Candidate>())).Callback <Candidate>(c => { candidate = c; });

            var verifyMobileStrategy = new VerifyMobileStrategyBuilder()
                                       .With(candidateReadRepository)
                                       .With(candidateWriteRepository)
                                       .Build();

            //Act
            verifyMobileStrategy.VerifyMobile(candidateId, verificationCode);

            //Assert
            candidateWriteRepository.Verify(r => r.Save(It.IsAny <Candidate>()), Times.Once);
            candidate.CommunicationPreferences.ApplicationStatusChangePreferences.EnableText.Should().BeTrue();
            candidate.CommunicationPreferences.MobileVerificationCode.Should().BeNullOrEmpty();
            candidate.CommunicationPreferences.MobileVerificationCodeDateCreated.Should().NotHaveValue();
            candidate.CommunicationPreferences.VerifiedMobile.Should().BeTrue();
            candidate.MobileVerificationRequired().Should().BeFalse();
        }