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());
        }
Ejemplo n.º 3
0
        /// <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);
        }