public void Cannot_Edit_User_When_ModelState_Invalid() { var myMock = new MyMock(); //不確認UpdateAsync功能 myMock.UserManager.Setup(u => u.UpdateAsync(It.IsAny <AppUser>())).ReturnsAsync(IdentityResult.Success); UserInfoEditModel userInfo = new UserInfoEditModel { Name = myMock.AppUser.UserName, Email = myMock.AppUser.Email, Password = "******", PasswordConfirm = "123", Phone = "0123456789", CityID = 2, CountryID = 3, ShippingAddress = "999" }; var controller = new HomeController(myMock.ProductRepository.Object, myMock.UserManager.Object); controller.ModelState.AddModelError("error", "error"); var result = controller.EditUser(userInfo) as Task <ActionResult>; var viewresult = result.Result as ViewResult; Assert.AreEqual(userInfo, viewresult.Model); }
public JsonResult EditUserInfo(UserInfoEditModel model) { var json = new JsonHelper { Status = "0", Msg = "保存失败!" }; UserInfo user = null; if (model.Id != null) { user = UserInfoManage.GetById(model.Id); } if (user != null) { user = model.MapTo(user); //账号必须唯一 var userByAccount = UserInfoManage.GetUserByAccount(user.Account); if (userByAccount == null || userByAccount.Id == model.Id) { if (UserInfoManage.Update(user)) { json.Status = "1"; json.Msg = "保存成功!"; } } else { json.Msg = "该账号已存在!"; return(Json(json)); } } return(Json(json)); }
public void Cannot_Edit_User_With_Invalid_Value() { var myMock = new MyMock(); //不確認UserManager的功能是否正常 //密碼要求至少六位數 myMock.UserManager.Setup(u => u.UpdateAsync(It.IsAny <AppUser>())).ReturnsAsync(IdentityResult.Success); myMock.UserManager.Setup(u => u.UserValidator_ValidateAsync(It.IsAny <AppUser>())).ReturnsAsync(new IdentityResult("error")); myMock.UserManager.Setup(u => u.PasswordValidator_ValidateAsync(It.IsAny <string>())).ReturnsAsync(new IdentityResult("error")); myMock.UserManager.Setup(u => u.PasswordHasher_HashPassword(It.IsAny <string>())).Returns("password"); UserInfoEditModel userInfo = new UserInfoEditModel { Name = myMock.AppUser.UserName, Email = myMock.AppUser.Email, Password = "******", PasswordConfirm = "123", Phone = "0123456789", CityID = 2, CountryID = 3, ShippingAddress = "999" }; var controller = new HomeController(myMock.ProductRepository.Object, myMock.UserManager.Object); var result = controller.EditUser(userInfo) as Task <ActionResult>; var viewresult = result.Result as ViewResult; Assert.AreEqual(false, viewresult.ViewData.ModelState.IsValid); }
public void Can_Edit_User() { var myMock = new MyMock(); //不確認UserManager的功能是否正常 myMock.UserManager.Setup(u => u.UpdateAsync(It.IsAny <AppUser>())).ReturnsAsync(IdentityResult.Success); myMock.UserManager.Setup(u => u.UserValidator_ValidateAsync(It.IsAny <AppUser>())).ReturnsAsync(IdentityResult.Success); myMock.UserManager.Setup(u => u.PasswordValidator_ValidateAsync(It.IsAny <string>())).ReturnsAsync(IdentityResult.Success); myMock.UserManager.Setup(u => u.PasswordHasher_HashPassword(It.IsAny <string>())).Returns("password"); UserInfoEditModel userInfo = new UserInfoEditModel { Name = myMock.AppUser.UserName, Email = myMock.AppUser.Email, Password = "******", PasswordConfirm = "666aa666", Phone = "0123456789", CityID = 2, CountryID = 3, ShippingAddress = "999" }; var controller = new HomeController(myMock.ProductRepository.Object, myMock.UserManager.Object); var result = controller.EditUser(userInfo) as Task <ActionResult>; var viewresult = result.Result; myMock.UserManager.Verify(u => u.UserValidator_ValidateAsync(It.IsAny <AppUser>()), Times.Once()); myMock.UserManager.Verify(u => u.PasswordValidator_ValidateAsync(It.IsAny <string>()), Times.Once()); myMock.UserManager.Verify(u => u.PasswordHasher_HashPassword(It.IsAny <string>()), Times.Once()); Assert.AreEqual("EditUser", (viewresult as RedirectToRouteResult).RouteValues["action"]); }
// GET public ActionResult EditPartial(string customError = "") { var userInfo = getUserInfo(); var model = new UserInfoEditModel { info = userInfo }; ViewBag.customError = customError; return(PartialView("_EditProfileInfoPartial", model)); }
// GET public ActionResult Edit(string customError = "") { var userInfo = getUserInfo(); var model = new UserInfoEditModel { info = userInfo }; ViewBag.customError = customError; return(View(model)); }
public void Can_Get_Initial_UserData_in_Edit_User() { var myMock = new MyMock(); var controller = new HomeController(myMock.ProductRepository.Object, myMock.UserManager.Object); UserInfoEditModel result = (controller.EditUser() as ViewResult).Model as UserInfoEditModel; Assert.AreEqual("testuser", result.Name); Assert.AreEqual("*****@*****.**", result.Email); Assert.AreEqual("0987654321", result.Phone); Assert.AreEqual(1, result.CityID); Assert.AreEqual(1, result.CountryID); Assert.AreEqual("111號", result.ShippingAddress); }
/// <summary> /// 编辑用户资料 /// </summary> /// <param name="userId">用户Id</param> /// <returns></returns> public ActionResult EditUserInfo(string userId) { UserInfoEditModel userEditModel = null; Guid userGuid = new Guid(); Guid.TryParse(userId, out userGuid); var user = UserInfoManage.GetById(userGuid); userEditModel = user.MapTo(userEditModel); if (userEditModel == null) { return(Redirect(Url.Action("NotFound", "Common"))); } return(View(userEditModel)); }
public ActionResult Edit(UserInfoEditModel model) { if (ModelState.IsValid) { // Handle image upload if (model.file != null && model.file.ContentLength > 0) { // Validate filesize if (model.file.ContentLength > 6E5) { return(RedirectToRoute(new { controller = "UserInfo", Action = "Edit", customError = "File must be under 600kb" })); } // Delete old image var thisUser = db.ApplicationUserInfoes.AsNoTracking().Where(i => i.Id == model.info.Id).Include(i => i.Avatar).FirstOrDefault(); Image oldAvatar = new Image(); if (thisUser.Avatar != null) { oldAvatar = db.Images.Where(i => i.Id == thisUser.Avatar.Id).First(); } if (oldAvatar.Content != null) { db.Images.Remove(oldAvatar); db.SaveChanges(); } // Read image data Image Avatar = new Image(); Avatar.Size = model.file.ContentLength; Avatar.Name = model.file.FileName; Stream fileStream = model.file.InputStream; byte[] imageBytes = new byte[fileStream.Length]; fileStream.Read(imageBytes, 0, imageBytes.Length); Avatar.Content = imageBytes; // Update database db.Images.Add(Avatar); model.info.Avatar = Avatar; } db.Entry(model.info).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(model)); }
public async Task <ActionResult> EditUser(UserInfoEditModel userInfo) { userInfo.Name = CurrentUser.UserName; userInfo.Email = CurrentUser.Email; CityAndCountryPorvider.SetSelectListToViewBag(this, repository, userInfo.CityID, userInfo.CountryID); ViewBag.IsGoogleAccount = CheckIfGoogleAccount(); if (!CityAndCountryPorvider.CheckIfSelectListOfViewBagCorrect(this)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (!ModelState.IsValid) { return(View(userInfo)); } // 確認phone有符合所訂要求 IdentityResult validPhone = null; if (userInfo.Phone != string.Empty) { CurrentUser.PhoneNumber = userInfo.Phone; //因ValidateAsync只接受User物件,因此這邊直接更改user的屬性 validPhone = await myUserManager.UserValidator_ValidateAsync(CurrentUser); if (!validPhone.Succeeded) { AddErrorsFromResult(validPhone); } } // 確認密碼 IdentityResult validPass = null; if (userInfo.Password != string.Empty && userInfo.Password != null) { validPass = await myUserManager.PasswordValidator_ValidateAsync(userInfo.Password); if (validPass.Succeeded) { CurrentUser.PasswordHash = myUserManager.PasswordHasher_HashPassword(userInfo.Password); } else { AddErrorsFromResult(validPass); } } if ((validPhone.Succeeded && validPass == null) || (validPhone.Succeeded && userInfo.Password != string.Empty && validPass.Succeeded)) { CurrentUser.CityID = userInfo.CityID; CurrentUser.CountryID = userInfo.CountryID; CurrentUser.ShippingAddress = userInfo.ShippingAddress; IdentityResult result = await myUserManager.UpdateAsync(CurrentUser); if (result.Succeeded) { TempData["message"] = "修改資料成功!"; return(RedirectToAction("EditUser")); } else { AddErrorsFromResult(result); } } return(View(userInfo)); }
public async Task <IActionResult> Edit(UserInfoEditModel model) { return(await Edit(model, "UserName", "RealName", "Birthday", "MobilePhone", "Email")); }