public ActionResult ChangePassword(PasswordViewModel viewModel) { try { if (!((bool?)this.Session["LoggedIn"] ?? false)) return RedirectToAction("Login", "Account"); using (var proxy = factory.GetWorkChannel()) { UserDTO user = ((UserDTO)this.Session["User"]); var newUser = proxy.UpdateUser(new UpdateRequest<UserDTO> { Login = user.Email, Password = user.Password, Data = new UserDTO { UserID = user.UserID, Email = user.Email, Name = user.Name, Password = viewModel.NewPassword, Phone = user.Phone, Address = user.Address, Rights = user.Rights } }); this.Session["User"] = newUser.Data; } } catch (Exception e) { return HandleFaults(e); } return RedirectToAction("Index"); }
public void HomeControllerChangePassword() { const bool ISAJAX = true; var info = new PasswordViewModel() { NewPassword = "******", NewPasswordAgain = "Password2", Password = "******" }; var factory = new WorkChannelFactoryMock(); HomeController ctrl = new HomeController(factory); FakeControllerSession.SetFakeControllerContext(ctrl, ISAJAX); //Redirect if not logged // TODO - maybe we need to remove this ctrl.Session["LoggedIn"] = false; var res1 = ctrl.ChangePassword(info) as RedirectToRouteResult; Assert.IsNotNull(res1); Assert.AreEqual(res1.RouteValues["action"], "Login"); Assert.AreEqual(res1.RouteValues["controller"], "Account"); //Pass if everything ok ctrl.Session["LoggedIn"] = true; var res2 = ctrl.ChangePassword(info) as RedirectToRouteResult; Assert.IsNotNull(res2); Assert.AreEqual(res2.RouteValues["action"], "Index"); var upd = factory.LastWorkChannel.UsersUpdated; Assert.AreEqual(upd.Count, 1); Assert.AreEqual(upd[0].Password, ((UserDTO)ctrl.Session["User"]).Password); Assert.AreEqual(upd[0].Password, "Password2"); //Fault when wrong user ((UserDTO)ctrl.Session["User"]).Email = "Unknown"; var res3 = ctrl.ChangePassword(info) as ViewResult; Assert.IsNotNull(res3); Assert.AreEqual(res3.Model, "wrong user or password"); }