public async Task <IActionResult> ChangeUserDetails(string id, ChangeUserDetailsFormModel formModel) { if (!ModelState.IsValid) { return(View(formModel)); } User user = await this.userManager.FindByIdAsync(id); if (user == null) { return(NotFound()); } bool emailIsChanged = formModel.Email != user.Email; bool usernameIsChanged = formModel.Username != user.UserName; if (emailIsChanged) { IdentityResult setEmailResult = await this.userManager.SetEmailAsync(user, formModel.Email); if (!setEmailResult.Succeeded) { this.AddModelErrors(setEmailResult); return(View(formModel)); } } if (usernameIsChanged) { IdentityResult setUsernameResult = await this.userManager.SetUserNameAsync(user, formModel.Username); if (!setUsernameResult.Succeeded) { this.AddModelErrors(setUsernameResult); return(View(formModel)); } } if (emailIsChanged || usernameIsChanged) { TempData.AddSuccessMessage(string.Format(UserProfileUpdatedMessage, user.UserName)); } return(RedirectToAction(nameof(Index), new { page = formModel.CurrentPage, search = formModel.Search })); }
public async Task <IActionResult> ChangeUserDetails(string id, int page = 1, string search = null) { User user = await this.userManager.FindByIdAsync(id); if (user == null) { return(NotFound()); } var formModel = new ChangeUserDetailsFormModel() { CurrentPage = page, Search = search, Email = user.Email, Username = user.UserName }; return(View(formModel)); }
public async Task ChangeUserDetailsPost_ShouldReturnRedirectToActionWhenValidUserId() { // Arrange string tempDataSuccessMessage = null; ChangeUserDetailsFormModel formModel = new ChangeUserDetailsFormModel() { Email = "NewEmail", Username = "******" }; Mock <UserManager <User> > userManager = this.GetAndSetUserManagerMock(); userManager .Setup(um => um.SetEmailAsync(It.IsAny <User>(), It.IsAny <string>())) .ReturnsAsync(IdentityResult.Success); userManager .Setup(um => um.SetUserNameAsync(It.IsAny <User>(), It.IsAny <string>())) .ReturnsAsync(IdentityResult.Success); Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>(); tempData.SetupSet(t => t[WebConstants.TempDataSuccessMessageKey] = It.IsAny <string>()) .Callback((string key, object successMessage) => tempDataSuccessMessage = successMessage as string); UsersController controller = new UsersController(null, null, userManager.Object); controller.TempData = tempData.Object; // Act IActionResult actionResult = await controller.ChangeUserDetails(FirstUserId, formModel); // Assert actionResult.Should().BeOfType <RedirectToActionResult>(); actionResult.As <RedirectToActionResult>().ActionName.Should().Be("Index"); tempDataSuccessMessage.Should().Be(MessageUpdated); }
public async Task ChangeUserDetailsGet_ShouldReturnViewWithCorrectModelWhenValidUserId() { // Arrange Mock <UserManager <User> > userManager = this.GetAndSetUserManagerMock(); UsersController controller = new UsersController(null, null, userManager.Object); // Act IActionResult actionResult = await controller.ChangeUserDetails(FirstUserId, 1, null); // Arrange actionResult.Should().BeOfType <ViewResult>(); object model = actionResult.As <ViewResult>().Model; model.Should().BeOfType <ChangeUserDetailsFormModel>(); ChangeUserDetailsFormModel returnedModel = model.As <ChangeUserDetailsFormModel>(); returnedModel.Email.Should().Be(FirstUserEmail); returnedModel.Username.Should().Be(FirstUserUsername); }
public async Task ChangeUserDetailsPost_ShouldReturnViewWithModelWhenSetUsernameAsyncFailed() { // Arrange ChangeUserDetailsFormModel formModel = new ChangeUserDetailsFormModel() { Email = "NewEmail", Username = "******" }; Mock <UserManager <User> > userManager = this.GetAndSetUserManagerMock(); userManager .Setup(um => um.SetEmailAsync(It.IsAny <User>(), It.IsAny <string>())) .ReturnsAsync(IdentityResult.Success); userManager .Setup(um => um.SetUserNameAsync(It.IsAny <User>(), It.IsAny <string>())) .ReturnsAsync(IdentityResult.Failed(new IdentityError { Description = "test" })); UsersController controller = new UsersController(null, null, userManager.Object); // Act IActionResult actionResult = await controller.ChangeUserDetails(FirstUserId, formModel); // Assert actionResult.Should().BeOfType <ViewResult>(); object model = actionResult.As <ViewResult>().Model; model.Should().BeOfType <ChangeUserDetailsFormModel>(); ChangeUserDetailsFormModel returnedModel = model.As <ChangeUserDetailsFormModel>(); returnedModel.Email.Should().Be(formModel.Email); returnedModel.Username.Should().Be(formModel.Username); }