public ActionResult LogOn(LogOnViewModel model, string returnUrl)
        {
            //We return back to the logon view if we have error
            ActionResult result = View(model);

            if (ModelState.IsValid)
            {
                if (authorizeService.AuthorizeMember(model))
                {

                    if (IsLocalUrlAndRelative(returnUrl))
                    {
                        result = Redirect(returnUrl);
                    }
                    else
                    {
                        result = RedirectToAction("Index", "Dashboard", new { Area = "SymNet" });
                    }
                }
                else
                {
                    ModelState.AddModelError("", "The user name or password provided is incorrect.");
                }
            }

            // If we got this far, something failed, redisplay form
            return result;
        }
        public void LogOnTestWithTrueAuthorizeAndSingleSlashReturnUrl()
        {
            // Arrange
            MockRepository mocks = new MockRepository();
            IAuthorizeService da = mocks.StrictMock<IAuthorizeService>();

            LogOnViewModel model = new LogOnViewModel();
            model.UserName = "******";
            model.Password = "******";

            using (mocks.Record()) {
                Expect
                    .Call(da.AuthorizeMember(model))
                    .Return(true);
            }

            AuthorizeController controller = null;
            ActionResult result;

            try
            {

                controller = new AuthorizeController(da);

                //Init Controller
                new TestControllerBuilder().InitializeController(controller);
                ControllerTestHelper.MimicValidation(model, controller);

                // Act
                using (mocks.Playback()) {
                    result = controller.LogOn(model, "/");
                }

                //Assert result
                Assert.AreEqual(0, controller.ModelState.Count());
            }
            finally
            {
                if (controller != null)
                {
                    controller.Dispose();
                }
            }

            ControllerTestHelper.TestForRedirection(result, "Index", "Dashboard", "SymNet");
        }
        public void LogOnTestWithNoUserName()
        {
            // Arrange
            MockRepository mocks = new MockRepository();
            IAuthorizeService da = mocks.StrictMock<IAuthorizeService>();

            LogOnViewModel model = new LogOnViewModel();
            model.Password = "******";

            using (mocks.Record())
            {
            }

            using (mocks.Playback())
            {
                AuthorizeController controller = new AuthorizeController(da);

                //Assert init
                Assert.AreEqual(0, controller.ModelState.Count());

                ControllerTestHelper.MimicValidation(model, controller);

                // Act
                ViewResult result = controller.LogOn(model, "") as ViewResult;

                //Assert result
                Assert.AreNotEqual(0, controller.ModelState.Count());
                Assert.AreEqual(model, result.Model);
                Assert.AreEqual(controller.ModelState.Count(), result.ViewData.ModelState.Count());
                Assert.IsTrue(result.ViewData.ModelState.ContainsKey("username"));
            }
        }
        public void LogOnTestWithTrueAuthorizeAndGoodReturnUrl()
        {
            // Arrange
            MockRepository mocks = new MockRepository();
            IAuthorizeService da = mocks.StrictMock<IAuthorizeService>();

            LogOnViewModel model = new LogOnViewModel();
            model.UserName = "******";
            model.Password = "******";

            using (mocks.Record())
            {
                Expect
                    .Call(da.AuthorizeMember(model))
                    .Return(true);
            }

            AuthorizeController controller = new AuthorizeController(da);

            string returnUrl = "/SymNet/Pages/";

            new TestControllerBuilder().InitializeController(controller);
            ControllerTestHelper.MimicValidation(model, controller);

            ActionResult result;

            // Act
            using (mocks.Playback()) {
                result = controller.LogOn(model, returnUrl);
            }

            //Assert result
            Assert.AreEqual(0, controller.ModelState.Count());
            Assert.IsInstanceOfType(result, typeof(RedirectResult));

            RedirectResult typedResult = (RedirectResult)result;

            Assert.IsFalse(typedResult.Permanent);
            Assert.AreEqual(returnUrl, typedResult.Url);
        }
        public void LogOnTestWithFalseAuthorize()
        {
            // Arrange

            MockRepository mocks = new MockRepository();
            IAuthorizeService da = mocks.StrictMock<IAuthorizeService>();

            LogOnViewModel model = new LogOnViewModel();
            model.UserName = "******";
            model.Password = "******";

            using (mocks.Record()) {
                Expect
                    .Call(da.AuthorizeMember(model))
                    .Return(false);
            }

            AuthorizeController controller = new AuthorizeController(da);

            using (mocks.Playback())
            {
                //Assert init
                Assert.AreEqual(0, controller.ModelState.Count());

                ControllerTestHelper.MimicValidation(model, controller);

                // Act
                ViewResult result = controller.LogOn(model, "") as ViewResult;

                //Assert result
                Assert.AreNotEqual(0, controller.ModelState.Count());
                Assert.AreEqual("", result.ViewName);
                Assert.AreEqual(model, result.Model);
                Assert.AreEqual(controller.ModelState.Count(), result.ViewData.ModelState.Count());
                Assert.IsTrue(result.ViewData.ModelState.ContainsKey(""));      // This is the main error from the controller
            }
        }