public ActionResult LogOn(LogonViewModel model, string returnUrl)
 {
     if (ModelState.IsValid)
     {
         if (_authProvider.Authenticate(model.UserName, model.Password))
             return Redirect(returnUrl ?? Url.Action("Index", "Admin"));
         else
         {
             ModelState.AddModelError("", "Incorrect username or passwor");
             return View();
         }
     }
     else
         return View();
 }
        public void AccountController_Logon_CannotLoginWithInvalidCredentials()
        {
            //Arrange
            Mock<IAuthProvider> mock = new Mock<IAuthProvider>();
            mock.Setup(m => m.Authenticate("admin", "secret")).Returns(true);
            var model = new LogonViewModel
            {
                UserName = "******",
                Password = "******"
            };
            var target = new AccountController(mock.Object);

            // Act
            var result = target.LogOn(model, "/MyUrl");

            // Assert
            Assert.IsInstanceOfType(result, typeof(ViewResult));
            Assert.IsFalse(((ViewResult)result).ViewData.ModelState.IsValid);
        }
        public void AccountController_Logon_CanLoginWithValidCredentials()
        {
            //Arrange
            Mock<IAuthProvider> mock = new Mock<IAuthProvider>();
            mock.Setup(m => m.Authenticate("admin", "secret")).Returns(true);
            var model = new LogonViewModel
            {
                UserName = "******",
                Password = "******"
            };
            var target = new AccountController(mock.Object);

            // Act
            var result = target.LogOn(model, "/MyUrl");

            // Assert
            Assert.IsInstanceOfType(result, typeof(RedirectResult));
            Assert.AreEqual<string>("/MyUrl", ((RedirectResult)result).Url);
        }