public void LoginReturnsCorrectViewIfUsernameNotFoundTest() { Mock<IUserManager> umMock = new Mock<IUserManager>(); Mock<IFormsAuthenticationWrap> formsAuthMock = new Mock<IFormsAuthenticationWrap>(); AuthenticationController controller = new AuthenticationController(umMock.Object, formsAuthMock.Object); LoginView loginView = new LoginView(); loginView.Username = "******"; umMock.Setup(um => um.IsUsernameInUse(It.Is<string>(s => s.Equals(loginView.Username)))).Returns(false); ViewResult result = controller.Login(loginView) as ViewResult; Assert.IsNotNull(result); ModelState paramState; Assert.IsTrue(controller.ModelState.TryGetValue("non_existent_user", out paramState)); Assert.DoesNotThrow(() => paramState.Errors.Single(s => s.ErrorMessage.Equals("User doesn't exist."))); umMock.Verify(um => um.IsUsernameInUse(It.Is<string>(s => s.Equals(loginView.Username))), Times.Once()); }
public void LoginReturnsCorrectViewIfLoginSucceedsTest() { Mock<IUserManager> umMock = new Mock<IUserManager>(); Mock<IFormsAuthenticationWrap> formsAuthMock = new Mock<IFormsAuthenticationWrap>(); AuthenticationController controller = new AuthenticationController(umMock.Object, formsAuthMock.Object); LoginView loginView = new LoginView(); loginView.Username = "******"; umMock.Setup(um => um.IsUsernameInUse(It.Is<string>(s => s.Equals(loginView.Username)))).Returns(true); umMock.Setup(um => um.LoginCheck(It.Is<LoginView>(lw => lw.Equals(loginView)))).Returns(true); RedirectToRouteResult result = controller.Login(loginView) as RedirectToRouteResult; Assert.IsNotNull(result); Assert.AreEqual("Index", result.RouteValues["action"]); Assert.AreEqual("Home", result.RouteValues["controller"]); umMock.Verify(um => um.IsUsernameInUse(It.Is<string>(s => s.Equals(loginView.Username))), Times.Once()); umMock.Verify(um => um.LoginCheck(It.Is<LoginView>(lw => lw.Equals(loginView))), Times.Once()); formsAuthMock.Verify(fam => fam.SetAuthCookie(It.Is<string>(s => s.Equals(loginView.Username)), false), Times.Once()); }
/// <summary> /// Checks if the users password is correct. /// </summary> /// <param name="loginView"></param> /// <returns>True or False</returns> public bool LoginCheck(LoginView loginView) { try { loginView.Username.ThrowIfNullOrWhiteSpace(); loginView.Password.ThrowIfNullOrWhiteSpace(); } catch (ArgumentException) { return false; } string hash = _personQueryService.GetSingle(person => person.Username == loginView.Username).Password; return SecurityManager.checkPassword(loginView.Password, hash); }