public void Register_With_CreateUser_Success()
        {
            //Arrange
            var routeData = new RouteData();
            var httpContext = MockRepository.GenerateStub<HttpContextBase>();
            var controllerContext = MockRepository.GenerateStub<ControllerContext>(httpContext, routeData, _controller);
            _controller.ControllerContext = controllerContext;
            _controller.ValueProvider = new FormCollection().ToValueProvider();
            _membershipTasks.Expect(x => x.MinRequiredPasswordLength).Return(6);
            MembershipCreateStatus status;
            _membershipTasks.Stub(x => x.CreateUser("hot", "5t1ckY", "*****@*****.**", null, null, true, null, out status)).IgnoreArguments().
                OutRef(MembershipCreateStatus.Success);
            _authTasks.Expect(x => x.SetAuthCookie(Arg<string>.Is.Equal("hot"), Arg<bool>.Is.Equal(false)));
            var model = new RegisterModel { UserName = "******", Password = "******", ConfirmPassword = "******", Email = "*****@*****.**" };

            //Act
            var result = _controller.Register(model) as RedirectToRouteResult;

            //Assert
            Assert.AreEqual("Home", result.RouteValues["controller"]);
            Assert.AreEqual("Index", result.RouteValues["action"]);
            _authTasks.VerifyAllExpectations();
        }
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid && model.IsValid())
            {
                MembershipCreateStatus createStatus;
                _membershipTasks.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

                if (createStatus == MembershipCreateStatus.Success)
                {
                    _authTasks.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                    return RedirectToAction("Index", "Home");
                }
                ModelState.AddModelError(string.Empty, ErrorCodeToString(createStatus));
            }
            model.MinRequiredPasswordLength = _membershipTasks.MinRequiredPasswordLength;
            return View(model);
        }
        public void Register_With_CreateUser_Failure()
        {
            //Arrange
            var routeData = new RouteData();
            var httpContext = MockRepository.GenerateStub<HttpContextBase>();
            var controllerContext = MockRepository.GenerateStub<ControllerContext>(httpContext, routeData, _controller);
            _controller.ControllerContext = controllerContext;
            _controller.ValueProvider = new FormCollection().ToValueProvider();
            _membershipTasks.Expect(x => x.MinRequiredPasswordLength).Return(6);
            MembershipCreateStatus status;
            _membershipTasks.Stub(x => x.CreateUser("hot", "5t1ckY", "*****@*****.**", null, null, true, null, out status)).IgnoreArguments().
                OutRef(MembershipCreateStatus.DuplicateUserName);
            var model = new RegisterModel { UserName = "******", Password = "******", ConfirmPassword = "******", Email = "*****@*****.**" };

            //Act
            var result = _controller.Register(model) as ViewResult;

            //Assert
            Assert.AreEqual("User name already exists. Please enter a different user name.", result.ViewData.ModelState[string.Empty].Errors[0].ErrorMessage);
            Assert.AreEqual(string.Empty, result.ViewName);
            Assert.IsInstanceOfType<RegisterModel>(result.Model);
            Assert.AreEqual(6, (result.Model as RegisterModel).MinRequiredPasswordLength);
        }