public ActionResult Index(CreateViewModel createViewModel) { if(!ModelState.IsValid) { return View(createViewModel); } UserAccessToken accessToken; try { var userCredentials = Mapper.Map<UserCredentials>(createViewModel); accessToken = _userService.Create(userCredentials); } catch(UserExistsException uee) { ModelState.AddModelError("email", "Email already in use"); return View(createViewModel); } var userProfile = Mapper.Map<UserProfile>(createViewModel); _userProfileService.UpdateProfile(accessToken, userProfile); //Login the newly created user return RedirectToAction("CreatedConfirm"); }
public void Create_TestFormValidation() { var userServiceMock = new Mock<IUserService>(); var userService = userServiceMock.Object; var userProfileServiceMock = new Mock<IUserProfileService>(); var userProfileService = userProfileServiceMock.Object; var userController = new UserController(userService, userProfileService); userController.ViewData.ModelState.AddModelError("rofl", "nao"); //This simulates any validation error var createModel = new CreateViewModel(); var userCredentials = new UserCredentials() { Email = createModel.Email, Password = createModel.Password }; var result = userController.Index(createModel) as ViewResult; //Verify that the controller does not try to call login on IUserService userServiceMock.Verify(a => a.Create(userCredentials), Times.Never()); Assert.IsNotNull(result, "Login Action did not yield a ViewResult"); Assert.AreSame(createModel, result.Model, "Controller did not forward the defective view"); }
public void Create_TestExistingUser() { var userServiceMock = new Mock<IUserService>(); var userService = userServiceMock.Object; var userProfileServiceMock = new Mock<IUserProfileService>(); var userProfileService = userProfileServiceMock.Object; var userController = new UserController(userService, userProfileService); var createModel = new CreateViewModel { Username = "******", Password = "******", StreetAddress = "rofl", City = "mao", ZipCode = 1000 }; var credentials = new UserCredentials() { Email = createModel.Email, Password = createModel.Password }; userServiceMock.Setup(a => a.Create(credentials)).Throws(new UserExistsException()); var viewResult = userController.Index(createModel) as ViewResult; Assert.IsNotNull(viewResult, "Controller did not return a ViewResult"); Assert.AreSame(createModel, viewResult.Model); userServiceMock.Verify(a => a.Create(credentials)); }
public void Create_TestSuccess() { var userServiceMock = new Mock<IUserService>(); var userService = userServiceMock.Object; var userProfileServiceMock = new Mock<IUserProfileService>(); var userProfileService = userProfileServiceMock.Object; var controllerContextMock = new Mock<ControllerContext>(); var userController = new UserController(userService, userProfileService); userController.ControllerContext = controllerContextMock.Object; var createModel = new CreateViewModel { Username = "******", Password = "******", StreetAddress = "rofl", City = "mao", ZipCode = 1000 }; var credentials = new UserCredentials() { Email = createModel.Email, Password = createModel.Password }; var accessToken = new UserAccessToken("123456"); userServiceMock.Setup(a => a.Create(credentials)).Returns(accessToken); userServiceMock.Setup(a => a.Login(credentials)).Returns(accessToken); var viewResult = userController.Index(createModel) as RedirectToRouteResult; Assert.IsNotNull(viewResult, "Controller did not return a RedirectToRouteResult"); var userProfile = new UserProfile() { Username = createModel.Username, Address = new Address() { Street = createModel.StreetAddress, City = createModel.City, ZipCode = createModel.ZipCode } }; userServiceMock.Verify(a => a.Create(credentials)); userProfileServiceMock.Verify(a => a.UpdateProfile(accessToken, userProfile)); }