public async Task Login_LoginViewModel_InvalidViewModelWithValues_ReturnsExpectedView() { const string loginHint = "LoginHint"; var uri = new Uri("http://www.foobar.com/"); var inputModel = LoginViewModelBuilder .Create() .WithEmailAddress("NotLoginHint") .WithReturnUrl(uri) .WithPassword("Password") .Build(); using var controller = AccountControllerBuilder .Create() .WithSignInResult(new Result <SignInResponse>(false, null, new SignInResponse(false, loginHint: loginHint))) .Build(); controller.ModelState.AddModelError(string.Empty, "Fake error!"); var result = await controller.Login(inputModel) as ViewResult; Assert.NotNull(result); var viewModel = result.Model as LoginViewModel; Assert.NotNull(viewModel); viewModel.ReturnUrl.Should().BeEquivalentTo(uri); viewModel.Password.Should().BeNull(); viewModel.EmailAddress.Should().BeEquivalentTo(loginHint); }
public LoginController( LoginService loginService, LoginViewModelBuilder loginViewModelBuilder, ForgotPasswordViewModelBuilder forgotPasswordViewModelBuilder, OrganizationService organizationService, MyPagesViewModelService myPagesViewModelService, RequestModelAccessor requestModelAccessor, AddressTypeService addressTypeService, CountryService countryService, SecurityContextService securityContextService, PersonStorage personStorage, PersonService personService) { _loginService = loginService; _loginViewModelBuilder = loginViewModelBuilder; _forgotPasswordViewModelBuilder = forgotPasswordViewModelBuilder; _organizationService = organizationService; _myPagesViewModelService = myPagesViewModelService; _requestModelAccessor = requestModelAccessor; _addressTypeService = addressTypeService; _personStorage = personStorage; _personService = personService; _countryService = countryService; _securityContextService = securityContextService; }
protected override Task <bool> GetJsonAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken) { var viewModelBuilder = new LoginViewModelBuilder(_configuration.Web.Login, _configuration.Providers); var loginViewModel = viewModelBuilder.Build(); return(JsonResponse.Ok(context, loginViewModel)); }
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); }
public async Task Login_LoginViewModel_FailedSignIn_AddsDisabledValidationError() { const string email = "*****@*****.**"; const string phoneNumber = "012345678901"; var disabledSetting = new DisabledErrorMessageSettings() { EmailAddress = email, PhoneNumber = phoneNumber }; using var controller = AccountControllerBuilder .Create() .WithSignInResult(Result.Failure <SignInResponse>(new List <ErrorDetails> { LoginUserErrors.UserIsDisabled() })) .WithDisabledErrorMessageSetting(disabledSetting) .Build(); await controller.Login(LoginViewModelBuilder.Create().Build()); var modelState = controller.ModelState; modelState.IsValid.Should().BeFalse(); modelState.Count.Should().Be(1); (string key, ModelStateEntry entry) = modelState.First(); key.Should().Be(nameof(LoginViewModel.DisabledError)); entry.Errors.Count.Should().Be(1); var expected = string.Format(CultureInfo.CurrentCulture, AccountController.UserDisabledErrorMessageTemplate, email, phoneNumber); entry.Errors.First().ErrorMessage.Should().Be(expected); }
public void ShouldNotAllowLoginIfPendingDeletion() { // Arrange. var candidateId = Guid.NewGuid(); var userAccountService = new Mock <IUserAccountService>(); userAccountService .Setup(s => s.GetUser(LoginViewModelBuilder.ValidEmailAddress, false)) .Returns(new User { Status = UserStatuses.PendingDeletion }); var provider = new CandidateServiceProviderBuilder().With(userAccountService).Build(); var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build(); // Act. var resultViewModel = provider.Login(viewModel); /*return new LoginResultViewModel(LoginPageMessages.InvalidUsernameOrPasswordErrorText) * { * EmailAddress = model.EmailAddress, * UserStatus = userStatus * };*/ // Assert. resultViewModel.ViewModelMessage.Should().Be(LoginPageMessages.InvalidUsernameAndOrPasswordErrorText); }
public void ShouldSetPendingUsernameVerificationRequired(string pendingUsername, bool expectedResult) { // Arrange. var candidateId = Guid.NewGuid(); var userAccountService = new Mock <IUserAccountService>(); userAccountService .Setup(s => s.GetUser(LoginViewModelBuilder.ValidEmailAddress, false)) .Returns(new User { Status = UserStatuses.Active, PendingUsername = pendingUsername }); var candidateService = new Mock <ICandidateService>(); candidateService .Setup(cs => cs.Authenticate(LoginViewModelBuilder.ValidEmailAddress, LoginViewModelBuilder.ValidPassword)) .Returns(new CandidateBuilder(candidateId).EnableApplicationStatusChangeAlertsViaText(true).Build); var provider = new CandidateServiceProviderBuilder().With(candidateService).With(userAccountService).Build(); var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build(); // Act. var resultViewModel = provider.Login(viewModel); // Assert. resultViewModel.PendingUsernameVerificationRequired.Should().Be(expectedResult); }
public void ValidationError() { var viewModel = new LoginViewModelBuilder().Build(); var mediator = new LoginMediatorBuilder().Build(); var response = mediator.Index(viewModel); response.AssertValidationResult(LoginMediatorCodes.Index.ValidationError); }
public MainWindow BuildWindow() { // build modules var adornerControl = new AdornerControl(); // build viewModels var mainViewModelBuilder = new MainViewModelBuilder(medicalPracticeRepository, readModelRepository, patientRepository, therapyPlaceTypeRepository, labelRepository, commandService, localSettingsRepository, viewModelCommunication, session, adornerControl); var loginViewModelBuilder = new LoginViewModelBuilder(session, localSettingsRepository); var notificationServiceContainerViewModel = new NotificationServiceContainerViewModel(viewModelCommunication); var connectionStatusViewModel = new ConnectionStatusViewModel(session); var dialogBuilder = new AboutDialogWindowBuilder(versionNumber, errorCallback); var actionBarViewModel = new ActionBarViewModel(session, connectionStatusViewModel, viewModelCommunication, dialogBuilder); var mainWindowViewModel = new MainWindowViewModel(mainViewModelBuilder, loginViewModelBuilder, notificationServiceContainerViewModel, actionBarViewModel, session, errorCallback); // build mainWindow var mainWindow = new MainWindow { DataContext = mainWindowViewModel }; // set GridContainer as ReferenceElement of AdornerControl adornerControl.ReferenceElement = mainWindow.MainView.OverviewPage.GridContainer; viewModelCommunication.RegisterViewModelMessageHandler <ShowDisabledOverlay>(mainWindowViewModel); viewModelCommunication.RegisterViewModelMessageHandler <HideDisabledOverlay>(mainWindowViewModel); return(mainWindow); }
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); }
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); }
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(); }
public async Task Login_LoginViewModel_FailedSignIn_ReturnsExpectedView() { using var controller = AccountControllerBuilder .Create() .WithSignInResult(Result.Failure <SignInResponse>(new List <ErrorDetails>())) .Build(); var result = await controller.Login(LoginViewModelBuilder.Create().Build()) as ViewResult; Assert.NotNull(result); var viewModel = result.Model as LoginViewModel; Assert.NotNull(viewModel); }
public void Us616_Ac7_MobileVerificationRequiredLogin() { var candidateId = Guid.NewGuid(); var userAccountService = new Mock <IUserAccountService>(); userAccountService.Setup(s => s.GetUserStatus(LoginViewModelBuilder.ValidEmailAddress)).Returns(UserStatuses.Active); var candidateService = new Mock <ICandidateService>(); candidateService.Setup(cs => cs.Authenticate(LoginViewModelBuilder.ValidEmailAddress, LoginViewModelBuilder.ValidPassword)).Returns(new CandidateBuilder(candidateId).AllowMobile(true).VerifiedMobile(false).Build); var provider = new CandidateServiceProviderBuilder().With(candidateService).With(userAccountService).Build(); var viewModel = new LoginViewModelBuilder().WithValidCredentials().Build(); var resultViewModel = provider.Login(viewModel); resultViewModel.MobileVerificationRequired.Should().BeTrue(); }
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); }
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); }
public async Task Login_LoginViewModel_FailedSignIn_AddsUsernameOrPasswordValidationError() { using var controller = AccountControllerBuilder .Create() .WithSignInResult(Result.Failure <SignInResponse>(new List <ErrorDetails> { LoginUserErrors.UserNameOrPasswordIncorrect() })) .Build(); await controller.Login(LoginViewModelBuilder.Create().Build()); var modelState = controller.ModelState; modelState.IsValid.Should().BeFalse(); modelState.Count.Should().Be(2); foreach ((string key, ModelStateEntry entry) in modelState) { entry.Errors.Count.Should().Be(1); entry.Errors.First().ErrorMessage.Should().Be(AccountController.SignInErrorMessage); } }
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 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); }
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); }
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); }
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); }
public async Task Login_LoginViewModel_InvalidViewModel_WithoutEmailAddressAndPassword__ReturnsExpectedView() { using var controller = AccountControllerBuilder .Create() .WithSignInResult(Result.Failure <SignInResponse>(new List <ErrorDetails>())) .Build(); controller.ModelState.AddModelError(string.Empty, "Fake error!"); var inputModel = LoginViewModelBuilder .Create() .Build(); var result = await controller.Login(inputModel) as ViewResult; Assert.NotNull(result); var viewModel = result.Model as LoginViewModel; Assert.NotNull(viewModel); viewModel.ReturnUrl.Should().Be(inputModel.ReturnUrl); viewModel.Password.Should().BeNull(); viewModel.EmailAddress.Should().BeNull(); }