コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public void SetUp()
        {
            _userManager    = new Mock <IUserManager>();
            _tokenGenerator = new Mock <IRandomTokenGenerator>();
            _mediator       = new Mock <IMediator>();

            _sut = new ForgotPasswordService(_userManager.Object, _tokenGenerator.Object, _mediator.Object);
        }
コード例 #4
0
 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>()
     };
 }
コード例 #5
0
        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);
        }
コード例 #6
0
        // 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");
            }
        }
コード例 #7
0
        /* 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");
            }
        }
コード例 #8
0
 public ForgotPasswordController()
 {
     _forgotPasswordServices = new ForgotPasswordService();
 }