示例#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 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);
        }