public void Can_Show_Login_Page()
        {
            var mock = new Mock<IUserRepository>();
            mock.Setup(users => users.GetUsers()).Returns(new User[] { });

            var request = new FakeHttpRequest(null, null, null);
            request.SetIsAuthenticated(false);
            var httpContext = new Mock<HttpContextBase>();
            httpContext.Setup(x => x.Session).Returns(new FakeHttpSessionState(new System.Web.SessionState.SessionStateItemCollection()));
            httpContext.Setup(x => x.Request).Returns(request);
            var controllerContext = new Mock<ControllerContext>();
            controllerContext.Setup(c => c.HttpContext).Returns(httpContext.Object);

            var accountController = new AccountController(mock.Object);
            accountController.ControllerContext = controllerContext.Object;

            var result = accountController.Login() as ViewResult;

            Assert.IsNotNull(result);
        }
        public void Dont_Show_Login_Page_When_User_Is_Authenticated()
        {
            Mock<IUserRepository> userMock = new Mock<IUserRepository>();
            userMock.Setup(users => users.GetUsers()).Returns(new User[] { });

            var request = new FakeHttpRequest(null, null, null);
            request.SetIsAuthenticated(true);
            var httpContext = new Mock<HttpContextBase>();
            httpContext.Setup(x => x.Session).Returns(new FakeHttpSessionState(new System.Web.SessionState.SessionStateItemCollection()));
            httpContext.Setup(x => x.Request).Returns(request);
            var controllerContext = new Mock<ControllerContext>();
            controllerContext.Setup(c => c.HttpContext).Returns(httpContext.Object);

            var accController = new AccountController(userMock.Object);
            accController.ControllerContext = controllerContext.Object;

            var result = accController.Login() as RedirectToRouteResult;

            Assert.IsNotNull(result);
            Assert.AreEqual("Index", result.RouteValues["action"]);
            Assert.AreEqual("Home", result.RouteValues["controller"]);
        }