public ActionResult Index(LoginViewModel model)
        {
            if (!ModelState.IsValid)
                return View(model);

            if (_userStore.Authenticate(model.Username, model.Password))
            {
                _authenticationService.SetAuthCookie(model.Username, model.RememberMe);
                return RedirectToAction("Index", "Home");
            }

            ModelState.AddModelError("WrongUsernamePassword", "Invalid Username and Password");

            return View(model);
        }
        public void Login_With_Valid_User()
        {
            var userStore = new Mock<IUserStore>();
            var authService = new Mock<IFormsAuthenticationService>();
            userStore.Setup(u => u.Authenticate("abc", "def")).Returns(true);
            authService.Setup(a => a.SetAuthCookie("abc", false));
            var controller = new UserController(userStore.Object, authService.Object);
            var model = new LoginViewModel
            {
                Password = "******",
                Username = "******"
            };

            var result = controller.Index(model);

            userStore.Verify(u => u.Authenticate("abc", "def"), Times.Once);
            authService.Verify(a => a.SetAuthCookie("abc", false), Times.Once);
            var redirect = (RedirectToRouteResult)result;
            Assert.AreEqual("Index", redirect.RouteValues["action"]);
            Assert.AreEqual("Home", redirect.RouteValues["controller"]);
        }
        public void Login_With_Invalid_User()
        {
            var userStore = new Mock<IUserStore>();
            var authService = new Mock<IFormsAuthenticationService>();
            userStore.Setup(u => u.Authenticate("abc", "def")).Returns(false);
            var controller = new UserController(userStore.Object, authService.Object);
            var model = new LoginViewModel
            {
                Password = "******",
                Username = "******"
            };

            var result = controller.Index(model);

            userStore.Verify(u => u.Authenticate("abc", "def"), Times.Once);
            Assert.IsInstanceOf(typeof(ViewResult), result);
            var view = (ViewResult)result;
            Assert.IsInstanceOf(typeof(LoginViewModel), view.Model);
            model = (LoginViewModel)view.Model;
            Assert.AreEqual("abc", model.Username);
            Assert.AreEqual("def", model.Password);
        }
 public ActionResult Index()
 {
     var model = new LoginViewModel();
     return View(model);
 }