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 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 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 RegisterPostRedirectsToCorrectActionAndController_WhenModelStateIsValid_AndUserCreationIsSuccessful() { var generalSettings = new Mock<IOptions<GeneralSettings>>(); generalSettings.Setup(x => x.Value).Returns(new GeneralSettings()); var userManager = CreateUserManagerMock(); userManager.Setup(x => x.CreateAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(IdentityResult.Success)); userManager.Setup(x => x.GenerateEmailConfirmationTokenAsync(It.IsAny<ApplicationUser>())).Returns(() => Task.FromResult(It.IsAny<string>())); userManager.Setup(x => x.GenerateChangePhoneNumberTokenAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(It.IsAny<string>())); var signInManager = CreateSignInManagerMock(userManager); var urlHelper = new Mock<IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny<UrlActionContext>())).Returns(It.IsAny<string>()); userManager.Setup(x => x.AddClaimAsync(It.IsAny<ApplicationUser>(), It.IsAny<Claim>())).Returns(() => Task.FromResult(IdentityResult.Success)); signInManager.Setup(x => x.SignInAsync(It.IsAny<ApplicationUser>(), It.IsAny<bool>(), null)).Returns(() => Task.FromResult(It.IsAny<Task>())); var sut = new AccountController(userManager.Object, signInManager.Object, generalSettings.Object, Mock.Of<IMediator>(), null); sut.SetFakeHttpRequestSchemeTo(It.IsAny<string>()); sut.Url = urlHelper.Object; var result = await sut.Register(new RegisterViewModel()) as RedirectToActionResult; Assert.Equal(result.ActionName, nameof(HomeController.Index)); Assert.Equal(result.ControllerName, "Home"); }
public async Task RegisterPostInvokesSignInAsyncWithTheCorrectParameters_WhenModelStateIsValid_AndUserCreationIsSuccessful() { const string defaultTimeZone = "DefaultTimeZone"; var model = new RegisterViewModel { Email = "email" }; var generalSettings = new Mock<IOptions<GeneralSettings>>(); generalSettings.Setup(x => x.Value).Returns(new GeneralSettings { DefaultTimeZone = defaultTimeZone }); var userManager = CreateUserManagerMock(); userManager.Setup(x => x.CreateAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(IdentityResult.Success)); userManager.Setup(x => x.GenerateEmailConfirmationTokenAsync(It.IsAny<ApplicationUser>())).Returns(() => Task.FromResult(It.IsAny<string>())); userManager.Setup(x => x.GenerateChangePhoneNumberTokenAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(It.IsAny<string>())); var signInManager = CreateSignInManagerMock(userManager); var urlHelper = new Mock<IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny<UrlActionContext>())).Returns(It.IsAny<string>()); userManager.Setup(x => x.AddClaimAsync(It.IsAny<ApplicationUser>(), It.IsAny<Claim>())).Returns(() => Task.FromResult(IdentityResult.Success)); var sut = new AccountController(userManager.Object, signInManager.Object, generalSettings.Object, Mock.Of<IMediator>(), null); sut.SetFakeHttpRequestSchemeTo(It.IsAny<string>()); sut.Url = urlHelper.Object; await sut.Register(model); signInManager.Verify(x => x.SignInAsync(It.Is<ApplicationUser>(au => au.UserName == model.Email && au.Email == model.Email && au.TimeZoneId == defaultTimeZone), It.IsAny<bool>(), null), Times.Once); }
public async Task RegisterPostSendsSendConfirmAccountEmailWithTheCorrectParameters_WhenModelStateIsValid_AndUserCreationIsSuccessful() { const string callbackUrl = "callbackUrl"; var model = new RegisterViewModel { Email = "email" }; var generalSettings = new Mock<IOptions<GeneralSettings>>(); generalSettings.Setup(x => x.Value).Returns(new GeneralSettings()); var userManager = CreateUserManagerMock(); userManager.Setup(x => x.CreateAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(IdentityResult.Success)); userManager.Setup(x => x.GenerateEmailConfirmationTokenAsync(It.IsAny<ApplicationUser>())).Returns(() => Task.FromResult(It.IsAny<string>())); userManager.Setup(x => x.GenerateChangePhoneNumberTokenAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(It.IsAny<string>())); var signInManager = CreateSignInManagerMock(userManager); var urlHelper = new Mock<IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny<UrlActionContext>())).Returns(callbackUrl); var mediator = new Mock<IMediator>(); var sut = new AccountController(userManager.Object, signInManager.Object, generalSettings.Object, mediator.Object, null); sut.SetFakeHttpRequestSchemeTo(It.IsAny<string>()); sut.Url = urlHelper.Object; await sut.Register(model); mediator.Verify(x => x.SendAsync(It.Is<SendConfirmAccountEmail>(y => y.Email == model.Email && y.CallbackUrl == callbackUrl)), Times.Once); }
public async Task RegisterPostInvokesUrlActionWithTheCorrectParameters_WhenModelStateIsValid_AndUserCreationIsSuccessful() { const string requestScheme = "requestScheme"; var generalSettings = new Mock<IOptions<GeneralSettings>>(); generalSettings.Setup(x => x.Value).Returns(new GeneralSettings()); var userManager = CreateUserManagerMock(); userManager.Setup(x => x.CreateAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(IdentityResult.Success)); userManager.Setup(x => x.GenerateEmailConfirmationTokenAsync(It.IsAny<ApplicationUser>())).Returns(() => Task.FromResult(It.IsAny<string>())); userManager.Setup(x => x.GenerateChangePhoneNumberTokenAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(It.IsAny<string>())); var signInManager = CreateSignInManagerMock(userManager); var sut = new AccountController(userManager.Object, signInManager.Object, generalSettings.Object, Mock.Of<IMediator>(), null); sut.SetFakeHttpRequestSchemeTo(requestScheme); var urlHelper = new Mock<IUrlHelper>(); sut.Url = urlHelper.Object; await sut.Register(new RegisterViewModel()); urlHelper.Verify(mock => mock.Action(It.Is<UrlActionContext>(uac => uac.Action == "ConfirmEmail" && uac.Controller == "Account" && uac.Protocol == requestScheme)), Times.Once); }
public async Task RegisterPostInvokesGenerateEmailConfirmationTokenAsyncWithTheCorrectParametersWhenModelStateIsValidAndUserCreationIsSuccessful() { const string defaultTimeZone = "DefaultTimeZone"; var model = new RegisterViewModel { Email = "email", Password = "******" }; var generalSettings = new Mock<IOptions<GeneralSettings>>(); generalSettings.Setup(x => x.Value).Returns(new GeneralSettings { DefaultTimeZone = defaultTimeZone }); var userManager = CreateUserManagerMock(); userManager.Setup(x => x.CreateAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).Returns(() => Task.FromResult(IdentityResult.Success)); var signInManager = CreateSignInManagerMock(userManager); var emailSenderMock = new Mock<IEmailSender>(); var sut = new AccountController(userManager.Object, signInManager.Object, emailSenderMock.Object, generalSettings.Object, null); sut.SetFakeHttpRequestSchemeTo(It.IsAny<string>()); sut.Url = Mock.Of<IUrlHelper>(); await sut.Register(model); userManager.Verify(x => x.GenerateEmailConfirmationTokenAsync(It.Is<ApplicationUser>(au => au.UserName == model.Email && au.Email == model.Email && au.TimeZoneId == defaultTimeZone)), Times.Once); }