public void SavedAndDraftCountIsSet()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            var applicationStatusSummaries = new Fixture().CreateMany <ApprenticeshipApplicationSummary>(25);

            candidateServiceProvider.Setup(x => x.GetApprenticeshipApplications(It.IsAny <Guid>(), It.IsAny <bool>())).Returns(applicationStatusSummaries);
            candidateServiceProvider.Setup(x => x.GetCandidate(It.IsAny <string>())).Returns(new Candidate {
                EntityId = Guid.Empty
            });
            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(new LoginResultViewModelBuilder().Build);

            var userDataProvider = new Mock <IUserDataProvider>();

            userDataProvider.Setup(x => x.Push(UserDataItemNames.SavedAndDraftCount, It.IsAny <string>()));

            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).With(userDataProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCodeAndMessage(LoginMediatorCodes.Index.Ok);
            var count = applicationStatusSummaries.Count(a => a.Status == ApplicationStatuses.Draft || a.Status == ApplicationStatuses.Saved);

            userDataProvider.Verify(x => x.Push(UserDataItemNames.SavedAndDraftCount, count.ToString(CultureInfo.InvariantCulture)), Times.Once);
        }
Esempio n. 2
0
        public void FailedToSendEmail()
        {
            const string phoneNumber = "0123456789";

            var viewModel = new ForgottenCredentialsViewModel
            {
                ForgottenEmailViewModel = new ForgottenEmailViewModel
                {
                    PhoneNumber = phoneNumber
                }
            };

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(csp => csp.RequestEmailReminder(It.IsAny <ForgottenEmailViewModel>()))
            .Returns(false);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.ForgottenEmail(viewModel);

            var message = string.Format(LoginPageMessages.ForgottenEmailSent, phoneNumber);

            response.AssertMessage(LoginMediatorCodes.ForgottenEmail.FailedToSendEmail, message,
                                   UserMessageLevel.Success, true);
        }
        public void CheckAllOtherResponses(AccountUnlockState accountUnlockState, string code, string message,
                                           UserMessageLevel messageLevel)
        {
            var viewModel = new AccountUnlockViewModel
            {
                EmailAddress      = "*****@*****.**",
                AccountUnlockCode = "ABC123",
                Status            = accountUnlockState
            };

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(x => x.VerifyAccountUnlockCode(It.IsAny <AccountUnlockViewModel>()))
            .Returns(viewModel);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.Unlock(viewModel);

            response.Code.Should().Be(code);

            if (message == null)
            {
                response.Message.Should().BeNull();
            }
            else
            {
                response.Message.Should().NotBeNull();
                response.Message.Text.Should().Be(message);
                response.Message.Level.Should().Be(messageLevel);
            }
        }
Esempio n. 4
0
        public void ValidationError()
        {
            var viewModel = new AccountUnlockViewModel();
            var mediator  = new LoginMediatorBuilder().Build();
            var response  = mediator.Resend(viewModel);

            response.AssertValidationResult(LoginMediatorCodes.Resend.ValidationError);
        }
Esempio n. 5
0
        public void ValidationError()
        {
            var viewModel = new LoginViewModelBuilder().Build();

            var mediator = new LoginMediatorBuilder().Build();
            var response = mediator.Index(viewModel);

            response.AssertValidationResult(LoginMediatorCodes.Index.ValidationError);
        }
Esempio n. 6
0
        public void ValidationFailure()
        {
            var resetPasswordViewModel = new PasswordResetViewModel
            {
                PasswordResetCode = InvalidPasswordResetCode
            };

            var mediator = new LoginMediatorBuilder().Build();

            var response = mediator.ResetPassword(resetPasswordViewModel);

            response.AssertValidationResult(LoginMediatorCodes.ResetPassword.FailedValidation, true);
        }
Esempio n. 7
0
        public void AccountLocked()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(new LoginResultViewModelBuilder(UserStatuses.Locked).Build);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCode(LoginMediatorCodes.Index.AccountLocked);
        }
        public void PendingActivation()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            var loginResultViewModel     = new LoginResultViewModelBuilder(UserStatuses.PendingActivation).Build();
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(loginResultViewModel);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCodeAndMessage(LoginMediatorCodes.Index.PendingActivation);
        }
Esempio n. 9
0
        public void LoginFailed()
        {
            var viewModel = new LoginViewModelBuilder().WithEmailAddress(LoginViewModelBuilder.ValidEmailAddress).WithPassword(LoginViewModelBuilder.InvalidPassword).Build();

            const string viewModelMessage         = "Invalid Email Address or Password";
            var          candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(new LoginResultViewModelBuilder(UserStatuses.Unknown, false).WithViewModelMessage(viewModelMessage).Build);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCode(LoginMediatorCodes.Index.LoginFailed, true, true);
            response.Parameters.Should().Be(viewModelMessage);
        }
Esempio n. 10
0
        public void MobileVerificationRequired()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            var loginResultViewModel     = new LoginResultViewModelBuilder().MobileVerificationRequired().Build();
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(loginResultViewModel);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCode(LoginMediatorCodes.Index.Ok);
            response.ViewModel.MobileVerificationRequired.Should().BeTrue();
        }
Esempio n. 11
0
        public void InvalidResetCode()
        {
            var resetPasswordViewModel = GetValidPasswordResetViewModel();

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(csp => csp.VerifyPasswordReset(It.IsAny <PasswordResetViewModel>()))
            .Returns(new PasswordResetViewModel
            {
                IsPasswordResetCodeValid = false
            });
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.ResetPassword(resetPasswordViewModel);

            response.AssertValidationResult(LoginMediatorCodes.ResetPassword.InvalidResetCode);
        }
Esempio n. 12
0
        public void Error()
        {
            var viewModel = new AccountUnlockViewModel {
                EmailAddress = "*****@*****.**", ViewModelMessage = "Error", Status = AccountUnlockState.Error
            };
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(x => x.RequestAccountUnlockCode(It.IsAny <AccountUnlockViewModel>())).Returns(viewModel);
            var userDataProvider = new Mock <IUserDataProvider>();

            userDataProvider.Setup(x => x.Push(It.IsAny <string>(), It.IsAny <string>()));
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).With(userDataProvider).Build();

            var response = mediator.Resend(viewModel);

            response.AssertMessage(LoginMediatorCodes.Resend.ResendFailed, AccountUnlockPageMessages.AccountUnlockResendCodeFailed, UserMessageLevel.Warning, true);
        }
Esempio n. 13
0
        public void UserLocked()
        {
            var resetPasswordViewModel = GetValidPasswordResetViewModel();

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(csp => csp.VerifyPasswordReset(It.IsAny <PasswordResetViewModel>()))
            .Returns(new PasswordResetViewModel
            {
                UserStatus = UserStatuses.Locked
            });
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.ResetPassword(resetPasswordViewModel);

            response.AssertCode(LoginMediatorCodes.ResetPassword.UserAccountLocked, true);
        }
        public void ValidationErrors()
        {
            var forgottenPasswordViewModel = new ForgottenPasswordViewModel
            {
                EmailAddress = InvalidEmailAddress
            };

            var mediator = new LoginMediatorBuilder().Build();

            var response =
                mediator.ForgottenPassword(new ForgottenCredentialsViewModel
            {
                ForgottenPasswordViewModel = forgottenPasswordViewModel
            });

            response.AssertValidationResult(LoginMediatorCodes.ForgottenPassword.FailedValidation, true);
        }
Esempio n. 15
0
        public void AccountEmailAddressOrUnlockCodeInvalid()
        {
            var viewModel = new AccountUnlockViewModel {
                EmailAddress = "*****@*****.**", ViewModelMessage = "Unknown [email protected]", Status = AccountUnlockState.AccountEmailAddressOrUnlockCodeInvalid
            };
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(x => x.RequestAccountUnlockCode(It.IsAny <AccountUnlockViewModel>())).Returns(viewModel);
            var userDataProvider = new Mock <IUserDataProvider>();

            userDataProvider.Setup(x => x.Push(It.IsAny <string>(), It.IsAny <string>()));
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).With(userDataProvider).Build();

            var response = mediator.Resend(viewModel);

            response.AssertMessage(LoginMediatorCodes.Resend.ResentSuccessfully, AccountUnlockPageMessages.AccountUnlockCodeMayHaveBeenResent, UserMessageLevel.Success, true);
        }
Esempio n. 16
0
        public void ErrorVerifyingPassword()
        {
            var resetPasswordViewModel = GetValidPasswordResetViewModel();

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(csp => csp.VerifyPasswordReset(It.IsAny <PasswordResetViewModel>()))
            .Returns(new PasswordResetViewModel
            {
                ViewModelMessage = ErrorMessage
            });
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.ResetPassword(resetPasswordViewModel);

            response.AssertMessage(LoginMediatorCodes.ResetPassword.FailedToResetPassword, ErrorMessage,
                                   UserMessageLevel.Warning, true);
        }
Esempio n. 17
0
        public void ReturnUrl()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            const string returnUrl        = "http://return.url.com";
            var          userDataProvider = new Mock <IUserDataProvider>();

            userDataProvider.Setup(p => p.Pop(UserDataItemNames.ReturnUrl)).Returns(returnUrl);
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(new LoginResultViewModelBuilder().Build);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).With(userDataProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCode(LoginMediatorCodes.Index.ReturnUrl, true, true);
            response.Parameters.Should().Be(returnUrl);
        }
Esempio n. 18
0
        public void Ok()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(new LoginResultViewModelBuilder().Build);
            candidateServiceProvider.Setup(x => x.GetApprenticeshipApplications(It.IsAny <Guid>(), It.IsAny <bool>())).Returns(new List <ApprenticeshipApplicationSummary>());
            candidateServiceProvider.Setup(x => x.GetCandidate(It.IsAny <string>())).Returns(new Candidate {
                EntityId = Guid.Empty
            });

            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCodeAndMessage(LoginMediatorCodes.Index.Ok);
        }
Esempio n. 19
0
        public void FailedValidation()
        {
            const string phoneNumber = "NotANumber";

            var viewModel = new ForgottenCredentialsViewModel
            {
                ForgottenEmailViewModel = new ForgottenEmailViewModel
                {
                    PhoneNumber = phoneNumber
                }
            };

            var mediator = new LoginMediatorBuilder().Build();

            var response = mediator.ForgottenEmail(viewModel);

            response.AssertValidationResult(LoginMediatorCodes.ForgottenEmail.FailedValidation);
        }
Esempio n. 20
0
        public void SuccessfullResetPassword()
        {
            var resetPasswordViewModel = GetValidPasswordResetViewModel();

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(csp => csp.VerifyPasswordReset(It.IsAny <PasswordResetViewModel>()))
            .Returns(new PasswordResetViewModel {
                IsPasswordResetCodeValid = true
            });
            candidateServiceProvider.Setup(gc => gc.GetCandidate(It.IsAny <string>()))
            .Returns(new Candidate {
                EntityId = Guid.NewGuid()
            });
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response = mediator.ResetPassword(resetPasswordViewModel);

            response.AssertMessage(LoginMediatorCodes.ResetPassword.SuccessfullyResetPassword,
                                   PasswordResetPageMessages.SuccessfulPasswordReset, UserMessageLevel.Success, true);
        }
Esempio n. 21
0
        public void TermsAndConditionsVersion()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            const string returnUrl            = "http://return.url.com";
            var          configurationManager = new Mock <IConfigurationManager>();

            configurationManager.Setup(x => x.GetAppSetting <string>(It.IsAny <string>())).Returns("2");
            var userDataProvider = new Mock <IUserDataProvider>();

            userDataProvider.Setup(p => p.Pop(UserDataItemNames.ReturnUrl)).Returns(returnUrl);
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(new LoginResultViewModelBuilder().WithAcceptedTermsAndConditionsVersion("1").Build);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).With(userDataProvider).With(configurationManager).Build();

            var response = mediator.Index(viewModel);

            response.AssertCode(LoginMediatorCodes.Index.TermsAndConditionsNeedAccepted, true, true);
            response.Parameters.Should().Be(returnUrl);
        }
        public void PasswordSent()
        {
            var forgottenPasswordViewModel = new ForgottenPasswordViewModel
            {
                EmailAddress = ValidEmailAddress
            };

            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(
                csp => csp.RequestForgottenPasswordResetCode(It.IsAny <ForgottenPasswordViewModel>())).Returns(true);
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            var response =
                mediator.ForgottenPassword(new ForgottenCredentialsViewModel
            {
                ForgottenPasswordViewModel = forgottenPasswordViewModel
            });

            response.AssertCode(LoginMediatorCodes.ForgottenPassword.PasswordSent, true);
        }
Esempio n. 23
0
        public void ReturnUrl()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            const string returnUrl        = "/localUrl/";
            var          userDataProvider = new Mock <IUserDataProvider>();

            userDataProvider.Setup(p => p.Pop(UserDataItemNames.ReturnUrl)).Returns(returnUrl);
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(new LoginResultViewModelBuilder().Build);
            candidateServiceProvider.Setup(x => x.GetApprenticeshipApplications(It.IsAny <Guid>(), It.IsAny <bool>())).Returns(new List <ApprenticeshipApplicationSummary>());
            candidateServiceProvider.Setup(x => x.GetCandidate(It.IsAny <string>())).Returns(new Candidate {
                EntityId = Guid.Empty
            });
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).With(userDataProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCode(LoginMediatorCodes.Index.ReturnUrl, true, true);
            response.Parameters.Should().Be(returnUrl);
        }
Esempio n. 24
0
        public void PendingUsernameVerificationRequired(bool expectedValue)
        {
            // Arrange.
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            var loginResultViewModel     = new LoginResultViewModelBuilder().PendingUsernameVerificationRequired(expectedValue).Build();
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(loginResultViewModel);
            candidateServiceProvider.Setup(x => x.GetApprenticeshipApplications(It.IsAny <Guid>(), It.IsAny <bool>())).Returns(new List <ApprenticeshipApplicationSummary>());
            candidateServiceProvider.Setup(x => x.GetCandidate(It.IsAny <string>())).Returns(new Candidate {
                EntityId = Guid.Empty
            });

            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).Build();

            // Act.
            var response = mediator.Index(viewModel);

            // Assert.
            response.AssertCodeAndMessage(LoginMediatorCodes.Index.Ok);
            response.ViewModel.PendingUsernameVerificationRequired.Should().Be(expectedValue);
        }
Esempio n. 25
0
        public void ApprenticeshipDetails()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            const string vacancyId        = "1";
            var          userDataProvider = new Mock <IUserDataProvider>();

            userDataProvider.Setup(p => p.Pop(CandidateDataItemNames.LastViewedVacancyId)).Returns(vacancyId);
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel)).Returns(new LoginResultViewModelBuilder().WithEmailAddress(LoginViewModelBuilder.ValidEmailAddress).Build);
            var entityId = Guid.NewGuid();

            candidateServiceProvider.Setup(p => p.GetCandidate(LoginViewModelBuilder.ValidEmailAddress)).Returns(new Candidate {
                EntityId = entityId
            });
            var mediator = new LoginMediatorBuilder().With(candidateServiceProvider).With(userDataProvider).Build();

            var response = mediator.Index(viewModel);

            response.AssertCode(LoginMediatorCodes.Index.ApprenticeshipDetails, true, true);
            response.Parameters.Should().Be(vacancyId);
        }
Esempio n. 26
0
        public void TermsAndConditionsVersion()
        {
            var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build();

            const string returnUrl            = "/allowedasolutoepath";
            var          configurationService = new Mock <IConfigurationService>();

            configurationService.Setup(x => x.Get <CommonWebConfiguration>())
            .Returns(new CommonWebConfiguration {
                TermsAndConditionsVersion = "2", VacancyResultsPerPage = 5
            });
            var userDataProvider = new Mock <IUserDataProvider>();

            userDataProvider.Setup(p => p.Pop(UserDataItemNames.ReturnUrl)).Returns(returnUrl);
            var candidateServiceProvider = new Mock <ICandidateServiceProvider>();

            candidateServiceProvider.Setup(p => p.Login(viewModel))
            .Returns(new LoginResultViewModelBuilder().WithAcceptedTermsAndConditionsVersion("1").Build);
            candidateServiceProvider.Setup(x => x.GetApprenticeshipApplications(It.IsAny <Guid>(), It.IsAny <bool>()))
            .Returns(new List <ApprenticeshipApplicationSummary>());
            candidateServiceProvider.Setup(x => x.GetCandidate(It.IsAny <string>()))
            .Returns(new Candidate {
                EntityId = Guid.Empty
            });

            var mediator =
                new LoginMediatorBuilder().With(candidateServiceProvider)
                .With(userDataProvider)
                .With(configurationService)
                .Build();

            var response = mediator.Index(viewModel);

            response.AssertCode(LoginMediatorCodes.Index.TermsAndConditionsNeedAccepted, true, true);
            response.Parameters.Should().Be(returnUrl);
        }