public ActionResult Index(LogonInputModel input) { if (!ModelState.IsValid) { return(Index()); } var logonUser = _db.SingleOrDefault <LogonUser>(@"select u.UserId, s.password from Users u inner join UserSecurityInfo s on s.UserId = u.UserId where u.UserName = @0", input.Username); if (logonUser != null) { if (Crypto.VerifyHashedPassword(logonUser.Password, input.Password)) { //FormsAuthentication.SetAuthCookie(logonUser.UserId.ToString(), input.RememberMe); _auth.SetAuthCookie(logonUser.UserId.ToString(), input.RememberMe); if (!string.IsNullOrEmpty(input.ReturnUrl)) { return(Redirect(input.ReturnUrl)); } else { return(RedirectToAction("Index", "Home")); } } } ModelState.AddModelError("", "Failed to login, you have."); return(Index()); }
public void WhenInvalidUserNameSpecified() { // Arrange var dbmock = new Mock <IDatabase>(); var forms = new Mock <IAuthentication>(); var controller = CB.Of(new LogonController(dbmock.Object, forms.Object)).Build(); var model = new LogonInputModel { Username = "", Password = "", RememberMe = true, ReturnUrl = "" }; // Act var result = controller.Index(model) as ViewResult; // Assert Assert.IsNotNull(result); Assert.AreEqual(false, controller.ModelState.IsValid); }
public void WhenValidUserNameAndPasswordSpecifiedWithReturnUrl() { // Arrange var dbmock = new Mock <IDatabase>(); var forms = new Mock <IAuthentication>(); dbmock.Setup(x => x.SingleOrDefault <LogonController.LogonUser>(It.IsAny <string>(), It.IsAny <string>())).Returns(new LogonController.LogonUser() { UserId = 1, Password = "******" }); var controller = CB.Of(new LogonController(dbmock.Object, forms.Object)).Build(); var model = new LogonInputModel { Username = "******", Password = "******", RememberMe = true, ReturnUrl = "blah/blah" }; // Act var result = controller.Index(model) as RedirectResult; // Assert Assert.AreEqual("blah/blah", result.Url); forms.Verify(x => x.SetAuthCookie(It.IsAny <string>(), It.IsAny <bool>()), Times.Once()); }