public async Task OnLogin_WhenPassSkipProfileUsers_RedirectToApiKey() { var portFreightUser = new PortFreightUser() { UserName = "******", Email = "*****@*****.**", PasswordHash = "TestTest1!", SenderId = "T12345" }; portFreightUsersList = new List <PortFreightUser>(); portFreightUsersList.Add(portFreightUser); loginModel.Input = new LoginModel.InputModel { Email = portFreightUser.Email, Password = portFreightUser.PasswordHash, RememberMe = true }; mockConfig.Setup(x => x[It.IsAny <string>()]).Returns("T12345"); mockfakeSignInManager.Setup(x => x.PasswordSignInAsync(loginModel.Input.Email, loginModel.Input.Password, loginModel.Input.RememberMe, true)).ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Success); mockUserManager.Setup(u => u.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(portFreightUsersList.FirstOrDefault()); var result = (RedirectToPageResult)await loginModel.OnPostAsync(); Assert.IsNotNull(result); Assert.AreEqual("/ApiKey/ApiKey", result.PageName); Assert.IsInstanceOfType(result, typeof(RedirectToPageResult)); }
public async Task OnPostAsync_Login_ReturnAsPageResult() { var mockUserStore = new Mock <IUserStore <ApplicationUser> >(); var mockUserManager = new Mock <UserManager <ApplicationUser> >( mockUserStore.Object, null, null, null, null, null, null, null, null); var contextAccessor = new Mock <IHttpContextAccessor>(); var userPrincipalFactory = new Mock <IUserClaimsPrincipalFactory <ApplicationUser> >(); var signInManager = new SignInManager <ApplicationUser>( mockUserManager.Object, contextAccessor.Object, userPrincipalFactory.Object, null, null, null); var mockLogger = new Mock <ILogger <LoginViewModel> >(); //set context into Login Page var pageModel = new LoginModel(signInManager, mockLogger.Object); pageModel.Input = new LoginViewModel { Email = "*****@*****.**", Password = "******" }; // Act var result = await pageModel.OnPostAsync("~/"); // Assert Assert.IsType <PageResult>(result); }
public async Task TestLoginAccount(string email, string password) { using (var db = new AppDbContext(Utilities.Utilities.TestAppDbContext())) { var signInManagerMock = new Mock <FakeSignInManager>(); signInManagerMock.Setup(fsim => fsim.PasswordSignInAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>())) .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Success); // Arrange //---* FOR USAGE OF User.Identity *---// //Create test user var fakeIdentity = new GenericIdentity("*****@*****.**"); var principal = new ClaimsPrincipal(fakeIdentity); var httpContext = new DefaultHttpContext() { User = principal }; //need these as well for the page context var modelState = new ModelStateDictionary(); var actionContext = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState); var modelMetadataProvider = new EmptyModelMetadataProvider(); var viewData = new ViewDataDictionary(modelMetadataProvider, modelState); // need page context for the page model var pageContext = new PageContext(actionContext) { ViewData = viewData }; LoginModel loginModel = new LoginModel( signInManagerMock.Object ) { PageContext = pageContext }; var inputModel = new LoginModel.InputModel(); inputModel.Email = email; inputModel.Password = password; loginModel.Input = inputModel; // Act await loginModel.OnPostAsync("Index"); var um = new FakeSignInManager(); var loginResult = um.IsSignedIn(loginModel.User); // Assert Assert.True( loginResult ); } }
public async Task OnPostAsync() { // Arrange const string returnUrl = "~/return-url"; const string origin = "~/origin"; const string password = "******"; const bool rememberMe = true; var user = new User { Email = "*****@*****.**" }; var httpContext = new DefaultHttpContext(); var modelState = new ModelStateDictionary(); var actionContext = new ActionContext( httpContext: httpContext, routeData: new RouteData(), actionDescriptor: new PageActionDescriptor(), modelState: modelState); var viewData = new ViewDataDictionary( metadataProvider: new EmptyModelMetadataProvider(), modelState: modelState); _userManager.Setup(x => x.FindByEmailAsync(user.Email)).ReturnsAsync(user); _signInManager .Setup(x => x.PasswordSignInAsync(user.Email, password, rememberMe, true)) .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Success); var login = new LoginModel(_signInManager.Object, _userManager.Object, _logger.Object) { PageContext = new PageContext(actionContext) { ViewData = viewData, HttpContext = httpContext }, Url = new UrlHelper(actionContext), Input = new LoginModel.InputModel { Email = user.Email, Password = password, RememberMe = rememberMe }, TempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>()) }; // Act var post = await login.OnPostAsync(returnUrl, origin).ConfigureAwait(false); // Assert var result = Assert.IsType <LocalRedirectResult>(post); Assert.Equal(returnUrl, result.Url); Assert.Equal(origin, login.TempData[nameof(login.Origin)]); }
public async Task OnPostAsync_NoReturnUrl_UserIsNotAdmin() { // Arrange const string password = "******"; const bool rememberMe = true; var user = new User { Email = "*****@*****.**" }; var httpContext = new DefaultHttpContext(); var modelState = new ModelStateDictionary(); var actionContext = new ActionContext( httpContext: httpContext, routeData: new RouteData(), actionDescriptor: new PageActionDescriptor(), modelState: modelState); var viewData = new ViewDataDictionary( metadataProvider: new EmptyModelMetadataProvider(), modelState: modelState); _userManager.Setup(x => x.FindByEmailAsync(user.Email)).ReturnsAsync(user); _userManager.Setup(x => x.IsInRoleAsync(user, "Admin")).ReturnsAsync(false); var login = new LoginModel(_signInManager.Object, _userManager.Object, _logger.Object) { PageContext = new PageContext(actionContext) { ViewData = viewData, HttpContext = httpContext }, Url = new UrlHelper(actionContext), Input = new LoginModel.InputModel { Email = user.Email, Password = password, RememberMe = rememberMe }, TempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>()) }; // Act var post = await login.OnPostAsync().ConfigureAwait(false); // Assert Assert.IsType <PageResult>(post); _signInManager.Verify( x => x.PasswordSignInAsync(user.Email, password, rememberMe, true), Times.Never); }
public async Task OnPostAsync_Incorrect_Login() { //// Arrange var authenticationResponse = new AuthenticationReponse() { WasAuthenticationCorrect = false }; var authenticationServiceMock = new Mock <IAuthenticationService>(); authenticationServiceMock.Setup(x => x.Login(It.IsAny <User>())).ReturnsAsync(authenticationResponse); var localizerMock = new Mock <ICultureLocalizer>(); localizerMock.Setup(x => x.Text(It.IsAny <string>())).Returns(new LocalizedString("name", "localizedMessage")); var loginModel = new LoginModel(localizerMock.Object, authenticationServiceMock.Object) { LoginForm = new _LoginForm() { Username = "******", Password = "******" } }; var httpContext = new DefaultHttpContext(); var modelState = new ModelStateDictionary(); var actionContext = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState); var pageContext = new PageContext(actionContext); loginModel.PageContext = pageContext; //// Act await loginModel.OnPostAsync(); //// Assert Assert.Equal("localizedMessage", loginModel.Msg); }
public async Task OnPostAsync_RequiresTwoFactor() { // Arrange const string returnUrl = "~/return-url"; const string password = "******"; const bool rememberMe = true; var user = new User { Email = "*****@*****.**" }; var httpContext = new DefaultHttpContext(); var modelState = new ModelStateDictionary(); var actionContext = new ActionContext( httpContext: httpContext, routeData: new RouteData(), actionDescriptor: new PageActionDescriptor(), modelState: modelState); var viewData = new ViewDataDictionary( metadataProvider: new EmptyModelMetadataProvider(), modelState: modelState); _userManager.Setup(x => x.FindByEmailAsync(user.Email)).ReturnsAsync(user); _signInManager .Setup(x => x.PasswordSignInAsync(user.Email, password, rememberMe, true)) .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.TwoFactorRequired); var login = new LoginModel(_signInManager.Object, _userManager.Object, _logger.Object) { PageContext = new PageContext(actionContext) { ViewData = viewData, HttpContext = httpContext }, Url = new UrlHelper(actionContext), Input = new LoginModel.InputModel { Email = user.Email, Password = password, RememberMe = rememberMe }, TempData = new TempDataDictionary(httpContext, Mock.Of <ITempDataProvider>()) }; // Act var post = await login.OnPostAsync(returnUrl).ConfigureAwait(false); // Assert var result = Assert.IsType <RedirectToPageResult>(post); Assert.Equal("./LoginWith2fa", result.PageName); Assert.Collection( result.RouteValues, routeValue1 => { var(key, value) = routeValue1; Assert.Equal(nameof(returnUrl), key); Assert.Equal(returnUrl, value); }, routeValue2 => { var(key, value) = routeValue2; Assert.Equal(nameof(login.Input.RememberMe), key); Assert.Equal(rememberMe, value); }); }