Example #1
0
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            switch (result)
            {
                case SignInStatus.Success:
                    return RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                case SignInStatus.RequiresVerification:
                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return View(model);
            }
        }
        public void AccountController_Login_Succeeded()
        {
            //Arrange
            var _email = "*****@*****.**";
            var lgnVm = new LoginViewModel { Email = _email, Password = _email, RememberMe = false };

            var userStoreMock = new Mock<IUserStore<ApplicationUser>>();
            var userManagerMck =  new Mock<ApplicationUserManager>(userStoreMock.Object);


            var authManagerMck = new Mock<IAuthenticationManager>();

            Mock<ApplicationSignInManager> signInManagerMck = new Mock<ApplicationSignInManager>(userManagerMck.Object, authManagerMck.Object);

            signInManagerMck.Setup(mck => mck.PasswordSignInAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>(), It.IsAny<bool>())).Returns(
                (string str1, string str2, bool bl1, bool bl2) => Task.FromResult<SignInStatus>(SignInStatus.Success));

            var urlHlprMck = new Mock<UrlHelper>();
            urlHlprMck.Setup(hlpr => hlpr.IsLocalUrl(It.IsAny<string>())).Returns(false);

            var accountController = new AccountController(userManagerMck.Object, signInManagerMck.Object) { Url = urlHlprMck.Object };

            //Act
            var tsk = accountController.Login(lgnVm, "");
            tsk.Wait();
            var rslt = tsk.Result;

            //Assert
            Mock.Get(signInManagerMck.Object).Verify(mck => mck.PasswordSignInAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>(), It.IsAny<bool>()));
            Assert.IsType<RedirectToRouteResult>(rslt);
            Assert.Equal("Index", ((RedirectToRouteResult)rslt).RouteValues["Action"]);
            Assert.Equal("Home", ((RedirectToRouteResult)rslt).RouteValues["Controller"]);
        }