public async Task Should_HaveErrors_IfUser_DoesntExist() { // Arrange var forgotPasswordDto = new ForgotPasswordDto { Email = "*****@*****.**" }; var userMock = new Mock <ApplicationUser>(); userMock.Setup(m => m.Email).Returns(forgotPasswordDto.Email); var store = new Mock <IUserStore <ApplicationUser> >(); var userManagerMock = new Mock <UserManager <ApplicationUser> >(store.Object, null, null, null, null, null, null, null, null); userManagerMock.Setup(m => m.FindByEmailAsync(forgotPasswordDto.Email)).Returns(Task.FromResult((ApplicationUser)null)); var mockAccountEmailsService = new Mock <IGenerateAccountEmailsService>(); var mockSendEmailService = new Mock <ISendEmailService>(); var sut = new ForgotPasswordService(userManagerMock.Object, mockAccountEmailsService.Object, mockSendEmailService.Object); // Act await sut.RequestPasswordReset(forgotPasswordDto); // Assert sut.Status.HasErrors.ShouldBeTrue(); }
public async Task Should_UseUserManager_ToGenerate_ValidPasswordResetToken() { // Arrange var forgotPasswordDto = new ForgotPasswordDto { Email = "*****@*****.**" }; var userMock = new Mock <ApplicationUser>(); userMock.Setup(m => m.Email).Returns(forgotPasswordDto.Email); var store = new Mock <IUserStore <ApplicationUser> >(); var userManagerMock = new Mock <UserManager <ApplicationUser> >(store.Object, null, null, null, null, null, null, null, null); userManagerMock.Setup(m => m.FindByEmailAsync(forgotPasswordDto.Email)).Returns(Task.FromResult(userMock.Object)); userManagerMock.Setup(m => m.GeneratePasswordResetTokenAsync(userMock.Object)); var mockAccountEmailsService = new Mock <IGenerateAccountEmailsService>(); var mockSendEmailService = new Mock <ISendEmailService>(); var sut = new ForgotPasswordService(userManagerMock.Object, mockAccountEmailsService.Object, mockSendEmailService.Object); // Act await sut.RequestPasswordReset(forgotPasswordDto); // Assert userManagerMock.Verify(m => m.GeneratePasswordResetTokenAsync(userMock.Object), Times.Once); }
public void SetUp() { _userManager = new Mock <IUserManager>(); _tokenGenerator = new Mock <IRandomTokenGenerator>(); _mediator = new Mock <IMediator>(); _sut = new ForgotPasswordService(_userManager.Object, _tokenGenerator.Object, _mediator.Object); }
public void Initialize() { _mockLogger = new Mock <ILogger <ForgotPasswordService> >(); _sendForgotPasswordEmailProcess = new Mock <ISendForgotPasswordEmailProcess>(); _forgotPasswordService = new ForgotPasswordService(_mockLogger.Object, _sendForgotPasswordEmailProcess.Object); _forgotPasswordDto = new ForgotPasswordDto() { EmailAddress = It.IsAny <string>(), CallBackUrl = It.IsAny <string>(), UserId = It.IsAny <string>(), LowellRef = It.IsAny <string>() }; }
public async Task Should_UseSendEmailService_ToSendPasswordResetEmail() { // Arrange var forgotPasswordDto = new ForgotPasswordDto { Email = "*****@*****.**" }; var userId = "0001"; var firstName = "Tester User"; var passwordResetCode = "123xyz"; var forgotPasswordEmail = "Test Email"; var subject = "Password Reset"; var userMock = new Mock <ApplicationUser>(); userMock.SetupAllProperties(); userMock.Object.FirstName = firstName; userMock.Setup(m => m.Email).Returns(forgotPasswordDto.Email); userMock.Setup(m => m.Id).Returns(userId); var store = new Mock <IUserStore <ApplicationUser> >(); var userManagerMock = new Mock <UserManager <ApplicationUser> >(store.Object, null, null, null, null, null, null, null, null); userManagerMock.Setup(m => m.FindByEmailAsync(forgotPasswordDto.Email)).Returns(Task.FromResult(userMock.Object)); userManagerMock.Setup(m => m.GeneratePasswordResetTokenAsync(userMock.Object)).Returns(Task.FromResult(passwordResetCode)); var mockAccountEmailsService = new Mock <IGenerateAccountEmailsService>(); mockAccountEmailsService.Setup(m => m.ForgotPasswordEmail(firstName, userId, passwordResetCode)) .Returns(forgotPasswordEmail); var mockSendEmailService = new Mock <ISendEmailService>(); mockSendEmailService.Setup(m => m.SendAsync(forgotPasswordDto.Email, subject, forgotPasswordEmail, firstName)); mockSendEmailService.Setup(m => m.Status).Returns(new StatusGenericHandler()); var sut = new ForgotPasswordService(userManagerMock.Object, mockAccountEmailsService.Object, mockSendEmailService.Object); // Act await sut.RequestPasswordReset(forgotPasswordDto); // Assert mockSendEmailService.Verify(m => m.SendAsync(forgotPasswordDto.Email, subject, forgotPasswordEmail, firstName), Times.Once); }
// This function is run when the user clicks the Submit button. It uses the ForgotPasswordService class which communicates with AWS to handle // the forgot password flow. On success, it redirects the user to ConfirmForgotPassword page. async void ForgotPassword() { try { ForgotPasswordService forgotPasswordService = new ForgotPasswordService(Email); await forgotPasswordService.ForgotPassowrd(); await Application.Current.MainPage.DisplayAlert("Success", "Password reset request successful. Please check your email for verification code.", "OK"); await Application.Current.MainPage.Navigation.PushAsync(new ConfirmForgotPasswordPage()); } catch (Exception e) { await Application.Current.MainPage.DisplayAlert("Error", e.Message, "OK"); } }
/* This function uses the ForgotPasswordService class which communicates with AWS to handle the confim forgot password flow. Redirects user * to login page upon successfull password reset */ async void ConfirmForgotPassword() { try { ForgotPasswordService forgotPasswordService = new ForgotPasswordService(Email); // Function called with variables initialized in the base class await forgotPasswordService.ForgotPasswordConfirmation(VerificationCode, Password); await Application.Current.MainPage.DisplayAlert("Success", "Password changed successfully", "OK"); await Application.Current.MainPage.Navigation.PushAsync(new LoginPage()); } catch (Exception e) { await Application.Current.MainPage.DisplayAlert("Error", e.Message, "OK"); } }
public ForgotPasswordController() { _forgotPasswordServices = new ForgotPasswordService(); }