public async Task ForgotPasswordPostSendsSendResetPasswordEmailWithCorrectParameters_WhenModelStateIsValid_AndUserIsNotNull_AndUsersEmailHasBeenVerified() { const string email = "*****@*****.**"; const string callbackUrl = "callbackUrl"; var vm = new ForgotPasswordViewModel { Email = email }; var userManager = CreateUserManagerMock(); var user = new ApplicationUser(); userManager.Setup(x => x.FindByNameAsync(email)).Returns(() => Task.FromResult(user)); userManager.Setup(x => x.IsEmailConfirmedAsync(user)).Returns(() => Task.FromResult(true)); userManager.Setup(x => x.GeneratePasswordResetTokenAsync(user)).Returns(() => Task.FromResult(It.IsAny<string>())); var mediator = new Mock<IMediator>(); var sut = new AccountController(userManager.Object, null, null, mediator.Object, null); var urlHelper = new Mock<IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny<UrlActionContext>())).Returns(callbackUrl); sut.SetFakeHttpRequestSchemeTo(It.IsAny<string>()); sut.Url = urlHelper.Object; await sut.ForgotPassword(vm); mediator.Verify(x => x.SendAsync(It.Is<SendResetPasswordEmail>(y => y.Email == vm.Email && y.CallbackUrl == callbackUrl)), Times.Once); }
public async Task ForgotPasswordPostReturnsForgotPasswordConfirmationView_WhenModelStateIsValid_AndUserIsNotNull_AndUsersEmailHasBeenVerified() { const string email = "*****@*****.**"; var vm = new ForgotPasswordViewModel { Email = email }; var userManager = CreateUserManagerMock(); var user = new ApplicationUser(); userManager.Setup(x => x.FindByNameAsync(email)).Returns(() => Task.FromResult(user)); userManager.Setup(x => x.IsEmailConfirmedAsync(user)).Returns(() => Task.FromResult(true)); userManager.Setup(x => x.GeneratePasswordResetTokenAsync(user)).Returns(() => Task.FromResult(It.IsAny<string>())); var sut = new AccountController(userManager.Object, null, null, Mock.Of<IMediator>(), null); sut.SetFakeHttpRequestSchemeTo(It.IsAny<string>()); sut.Url = Mock.Of<IUrlHelper>(); var result = await sut.ForgotPassword(vm) as ViewResult; Assert.Equal(result.ViewName, "ForgotPasswordConfirmation"); }
public async Task ForgotPasswordPostInvokesUrlActionWithCorrectParameters_WhenModelStateIsValid_AndUserIsNotNull_AndUsersEmailHasBeenVerified() { const string requestScheme = "requestScheme"; const string email = "*****@*****.**"; var vm = new ForgotPasswordViewModel { Email = email }; var userManager = CreateUserManagerMock(); var user = new ApplicationUser(); userManager.Setup(x => x.FindByNameAsync(email)).Returns(() => Task.FromResult(user)); userManager.Setup(x => x.IsEmailConfirmedAsync(user)).Returns(() => Task.FromResult(true)); userManager.Setup(x => x.GeneratePasswordResetTokenAsync(user)).Returns(() => Task.FromResult(It.IsAny<string>())); var sut = new AccountController(userManager.Object, null, null, Mock.Of<IMediator>(), null); var urlHelper = new Mock<IUrlHelper>(); sut.SetFakeHttpRequestSchemeTo(requestScheme); sut.Url = urlHelper.Object; await sut.ForgotPassword(vm); urlHelper.Verify(mock => mock.Action(It.Is<UrlActionContext>(uac => uac.Action == "ResetPassword" && uac.Controller == "Account" && uac.Protocol == requestScheme)), Times.Once); }
public async Task ForgotPasswordPostInvokesGeneratePasswordResetTokenAsyncWithCorrectUser_WhenModelStateIsValid_AndUserIsNotNull_AndUsersEmailHasBeenVerified() { const string email = "*****@*****.**"; var vm = new ForgotPasswordViewModel { Email = email }; var userManager = CreateUserManagerMock(); var user = new ApplicationUser(); userManager.Setup(x => x.FindByNameAsync(email)).Returns(() => Task.FromResult(user)); userManager.Setup(x => x.IsEmailConfirmedAsync(user)).Returns(() => Task.FromResult(true)); userManager.Setup(x => x.GeneratePasswordResetTokenAsync(user)).Returns(() => Task.FromResult(It.IsAny<string>())); var emailSender = new Mock<IEmailSender>(); emailSender.Setup(x => x.SendEmailAsync(email, It.IsAny<string>(), It.IsAny<string>())).Returns(() => Task.FromResult(It.IsAny<Task>())); var sut = new AccountController(userManager.Object, null, null, Mock.Of<IMediator>(), null); sut.SetFakeHttpRequestSchemeTo(It.IsAny<string>()); sut.Url = Mock.Of<IUrlHelper>(); await sut.ForgotPassword(vm); userManager.Verify(x => x.GeneratePasswordResetTokenAsync(user), Times.Once); }
public async Task ForgotPasswordPostReturnsForgotPasswordConfirmationView_WhenModelStateIsValid_AndUsersEmailIsUnverified() { const string email = "*****@*****.**"; var vm = new ForgotPasswordViewModel { Email = email }; var userManager = CreateUserManagerMock(); var user = new ApplicationUser(); userManager.Setup(x => x.FindByNameAsync(email)).Returns(() => Task.FromResult(user)); userManager.Setup(x => x.IsEmailConfirmedAsync(user)).Returns(() => Task.FromResult(false)); var sut = new AccountController(userManager.Object, null, null, null, null); var result = await sut.ForgotPassword(vm) as ViewResult; Assert.Equal(result.ViewName, "ForgotPasswordConfirmation"); }
public async Task ForgotPasswordPostInvokesIsEmailConfirmedAsyncWithThecorrectUser_WhenModelStateIsValid() { const string email = "*****@*****.**"; var vm = new ForgotPasswordViewModel { Email = email }; var userManager = CreateUserManagerMock(); var user = new ApplicationUser(); userManager.Setup(x => x.FindByNameAsync(email)).Returns(() => Task.FromResult(user)).Verifiable(); var sut = new AccountController(userManager.Object, null, null, null, null); await sut.ForgotPassword(vm); userManager.Verify(m => m.IsEmailConfirmedAsync(user), Times.Once); }
public async Task ForgotPasswordPostReturnsForgotPasswordConfirmationViewWhenModelStateIsValidAndUserIsNull() { var email = "*****@*****.**"; var vm = new ForgotPasswordViewModel() { Email = email }; var userManager = CreateUserManagerMock(); var user = default(ApplicationUser); userManager.Setup(x => x.FindByNameAsync(email)).Returns(() => Task.FromResult(user)); var sut = new AccountController(userManager.Object, null, null, null, null); var result = await sut.ForgotPassword(vm) as ViewResult; Assert.Equal(result.ViewName, "ForgotPasswordConfirmation"); }