public async Task SendCodePostReturnsRedirectToActionResult() { var model = new SendCodeViewModel { SelectedProvider = string.Empty, ReturnUrl = "ReturnUrl", RememberMe = true }; var routeValues = new Dictionary<string, object> { ["Provider"] = model.SelectedProvider, ["ReturnUrl"] = model.ReturnUrl, ["RememberMe"] = model.RememberMe }; var userManager = CreateUserManagerMock(); var signInManager = CreateSignInManagerMock(userManager); signInManager.Setup(x => x.GetTwoFactorAuthenticationUserAsync()).ReturnsAsync(new ApplicationUser()); userManager.Setup(x => x.GenerateTwoFactorTokenAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).ReturnsAsync("token"); var sut = new AdminController(userManager.Object, signInManager.Object, null, null, null); var result = await sut.SendCode(model) as RedirectToActionResult; Assert.Equal(result.ActionName, nameof(AdminController.VerifyCode)); Assert.Equal(result.RouteValues, routeValues); }
public async Task SendCodePostReturnsErrorViewWhenAuthenticationTokenIsNull() { var userManager = CreateUserManagerMock(); var signInManager = CreateSignInManagerMock(userManager); signInManager.Setup(x => x.GetTwoFactorAuthenticationUserAsync()).ReturnsAsync(new ApplicationUser()); var sut = new AdminController(userManager.Object, signInManager.Object, null, null, null); var result = await sut.SendCode(new SendCodeViewModel()) as ViewResult; Assert.Equal(result.ViewName, "Error"); }
public async Task SendCodePostSendsSendSecurityCodeSmsWithCorrectDataWhenSelectedProviderIsPhone() { const string token = "token"; const string usersPhoneNumber = "usersPhoneNumber"; var applicationUser = new ApplicationUser(); var model = new SendCodeViewModel { SelectedProvider = "Phone" }; var userManager = CreateUserManagerMock(); var signInManager = CreateSignInManagerMock(userManager); var mediator = new Mock<IMediator>(); userManager.Setup(x => x.GenerateTwoFactorTokenAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).ReturnsAsync(token); userManager.Setup(x => x.GetPhoneNumberAsync(applicationUser)).ReturnsAsync(usersPhoneNumber); signInManager.Setup(x => x.GetTwoFactorAuthenticationUserAsync()).ReturnsAsync(applicationUser); var sut = new AdminController(userManager.Object, signInManager.Object, mediator.Object, null, null); await sut.SendCode(model); mediator.Verify(x => x.SendAsync(It.Is<SendSecurityCodeSms>(y => y.PhoneNumber == usersPhoneNumber && y.Token == token))); }
public async Task SendCodePosReturnsErrorViewWhenUserIsNotFound() { var signInManager = CreateSignInManagerMock(); var sut = new AdminController(null, signInManager.Object, null, null, null); var result = await sut.SendCode(It.IsAny<SendCodeViewModel>()) as ViewResult; Assert.Equal(result.ViewName, "Error"); }
public async Task SendCodePostInvokesGenerateTwoFactorTokenAsyncWithCorrectUserAndTokenProvider() { var applicationUser = new ApplicationUser(); var model = new SendCodeViewModel { SelectedProvider = "Email" }; var userManager = CreateUserManagerMock(); var signInManager = CreateSignInManagerMock(userManager); signInManager.Setup(x => x.GetTwoFactorAuthenticationUserAsync()).ReturnsAsync(applicationUser); var sut = new AdminController(userManager.Object, signInManager.Object, null, null, null); await sut.SendCode(model); userManager.Verify(x => x.GenerateTwoFactorTokenAsync(applicationUser, model.SelectedProvider), Times.Once); }
public async Task SendCodePostInvokesGetTwoFactorAuthenticationUserAsync() { var signInManager = CreateSignInManagerMock(); var sut = new AdminController(null, signInManager.Object, null, null, null); await sut.SendCode(It.IsAny<SendCodeViewModel>()); signInManager.Verify(x => x.GetTwoFactorAuthenticationUserAsync(), Times.Once); }
public async Task SendCodeGetReturnsSendCodeViewModelWithCorrectData() { const string returnUrl = "returnUrl"; const bool rememberMe = true; var userFactors = new List<string> { "userFactor1", "userFactor2" }; var expectedProviders = userFactors.Select(factor => new SelectListItem { Text = factor, Value = factor }).ToList(); var userManager = CreateUserManagerMock(); var signInManager = CreateSignInManagerMock(userManager); signInManager.Setup(x => x.GetTwoFactorAuthenticationUserAsync()).Returns(() => Task.FromResult(new ApplicationUser())); userManager.Setup(x => x.GetValidTwoFactorProvidersAsync(It.IsAny<ApplicationUser>())).ReturnsAsync(userFactors); var sut = new AdminController(userManager.Object, signInManager.Object, null, null, null); var result = await sut.SendCode(returnUrl, rememberMe) as ViewResult; var modelResult = result.ViewData.Model as SendCodeViewModel; Assert.Equal(modelResult.ReturnUrl, returnUrl); Assert.Equal(modelResult.RememberMe, rememberMe); Assert.Equal(expectedProviders, modelResult.Providers, new SelectListItemComparer()); }
public async Task SendCodeGetInvokesGetValidTwoFactorProvidersAsyncWithCorrectUser() { var applicationUser = new ApplicationUser(); var userManager = CreateUserManagerMock(); var signInManager = CreateSignInManagerMock(userManager); signInManager.Setup(x => x.GetTwoFactorAuthenticationUserAsync()).Returns(() => Task.FromResult(applicationUser)); userManager.Setup(x => x.GetValidTwoFactorProvidersAsync(It.IsAny<ApplicationUser>())).ReturnsAsync(new List<string>()); var sut = new AdminController(userManager.Object, signInManager.Object, null, null, null); await sut.SendCode(null, It.IsAny<bool>()); userManager.Verify(x => x.GetValidTwoFactorProvidersAsync(applicationUser), Times.Once); }
public async Task SendCodeGetReturnsErrorViewWhenCannotFindUser() { var signInManager = CreateSignInManagerMock(); var sut = new AdminController(null, signInManager.Object, null, null, null); var result = await sut.SendCode(null, It.IsAny<bool>()) as ViewResult; Assert.Equal(result.ViewName, "Error"); }
public async Task SendCodePostInvokesSendSmsAsyncWithCorrectParametersWhenSelectedProviderIsPhone() { const string token = "token"; const string usersPhoneNumber = "usersPhoneNumber"; var message = $"Your security code is: {token}"; var applicationUser = new ApplicationUser(); var model = new SendCodeViewModel { SelectedProvider = "Phone" }; var userManager = CreateUserManagerMock(); var signInManager = CreateSignInManagerMock(userManager); var smsSender = new Mock<ISmsSender>(); userManager.Setup(x => x.GenerateTwoFactorTokenAsync(It.IsAny<ApplicationUser>(), It.IsAny<string>())).ReturnsAsync(token); userManager.Setup(x => x.GetPhoneNumberAsync(applicationUser)).ReturnsAsync(usersPhoneNumber); signInManager.Setup(x => x.GetTwoFactorAuthenticationUserAsync()).ReturnsAsync(applicationUser); var sut = new AdminController(userManager.Object, signInManager.Object, null, smsSender.Object, null, null); await sut.SendCode(model); smsSender.Verify(x => x.SendSmsAsync(usersPhoneNumber, message)); }