Пример #1
0
        public void Test_POST_SignUp_with_invalid_view_model_should_return_view_with_Errors()
        {
            var invalidSignUpModel = new SignUpViewModel() {
                UserName = "",
                Password = "******",
                ConfirmPassword = "******"
            };

            using (var context = new HeliosDbContext()) {
                var mockFormsAuth = new Mock<IFormsAuthentication>();
                var isAuthenticated = false;
                mockFormsAuth
                    .Setup(f => f.SetAuthCookie(invalidSignUpModel.UserName, /* createPersistentCookie */ false))
                    .Callback(() => isAuthenticated = true);

                var controller = new UsersController(context, mockFormsAuth.Object);

                var validationResults = ModelTestHelper.ValidateModel<SignUpViewModel>(invalidSignUpModel);
                foreach (var validationResult in validationResults) {
                    controller.ModelState.AddModelError("*", validationResult.ErrorMessage);
                }

                var result = controller.Create(invalidSignUpModel);

                Assert.IsType<ViewResult>(result);

                var viewResult = result as ViewResult;
                Assert.Equal("New", viewResult.ViewName);
                Assert.Equal(false, controller.ModelState.IsValid);
                Assert.Equal(false, isAuthenticated);
            }
        }
Пример #2
0
        public ActionResult Create(SignUpViewModel signUpViewModel)
        {
            if (this.ModelState.IsValid) {
                var newUser = new User() { UserName = signUpViewModel.UserName, RequiredToChangePassword = true };
                newUser.SetPassword(signUpViewModel.Password);
                Users.Add(newUser);

                return RedirectToRoute(new { controller = "Home", action = "Index" });
            }

            return View("New");
        }
Пример #3
0
        public void Test_POST_SignUp_should_redirect_to_home_index()
        {
            var validSignUpModel = new SignUpViewModel() {
                    UserName = "******",
                    Password = "******",
                    ConfirmPassword = "******"
                };

            using (var context = new HeliosDbContext()) {
                var mockFormsAuth = new Mock<IFormsAuthentication>();
                var controller = new UsersController(context, mockFormsAuth.Object);
                var result = controller.Create(validSignUpModel);

                Assert.IsType<RedirectToRouteResult>(result);

                var redirectResult = result as RedirectToRouteResult;
                Assert.Equal("Home", redirectResult.RouteValues["controller"] as string);
                Assert.Equal("Index", redirectResult.RouteValues["action"] as string);
            }
        }
Пример #4
0
        public void Test_POST_SignUp_should_create_new_user_with_RequiredToChangePassword()
        {
            var validSignUpModel = new SignUpViewModel() {
                    UserName = "******",
                    Password = "******",
                    ConfirmPassword = "******"
                };

            using (var context = new HeliosDbContext()) {
                var mockFormsAuth = new Mock<IFormsAuthentication>();

                var controller = new UsersController(context, mockFormsAuth.Object);
                controller.Create(validSignUpModel);

                // need to commit since we used UnitOfWorkAttribute in production
                context.Commit();

                var dbUser = context.Users.FirstOrDefault(u => u.UserName == validSignUpModel.UserName);

                Assert.NotNull(dbUser);
                Assert.Equal(true, dbUser.RequiredToChangePassword);
            }
        }