/// <summary> /// Update an existing account /// </summary> /// <param name="userId"></param> /// <param name="firstName"></param> /// <param name="lastName"></param> /// <returns>Updated user details</returns> /// <exception cref="UserApiException"></exception> public Task <UserResponse> UpdateUserAccountDetails(Guid userId, string firstName, string lastName) { var request = new UpdateUserAccountRequest { FirstName = firstName, LastName = lastName }; return(_userApiClient.UpdateUserAccountAsync(userId, request)); }
public void GivenIHaveAnUpdateUserDetailsRequestForTheNewUser() { var body = new UpdateUserAccountRequest { FirstName = "AcUpdatedFirstName", LastName = "ACUpdatedLastName" }; var userId = Guid.Parse(_context.Test.NewUserId); _context.Request = _context.Patch(UpdateUserAccount(userId), body); }
public async Task should_return_bad_request_when_updating_nonexistent_user_with_missing_name() { var userId = Guid.NewGuid(); var updateUserRequest = new UpdateUserAccountRequest { LastName = "Doe" }; var jsonBody = RequestHelper.Serialise(updateUserRequest); var stringContent = new StringContent(jsonBody, Encoding.UTF8, "application/json"); var result = await SendPatchRequestAsync(UpdateUserAccount(userId), stringContent); result.StatusCode.Should().Be(HttpStatusCode.BadRequest); }
public ActionResult <UserAccountResponse> Update(long id, UpdateUserAccountRequest updateAccountDTO) { //restrict to current user and admin if (id != CurrentUser.Id && CurrentUser.Role != Role.Admin) { return(Unauthorized(new { message = "Unauthorized" })); } //only admin can update role if (CurrentUser.Role != Role.Admin) { updateAccountDTO.Role = null; } var account = _service.Update(id, updateAccountDTO); return(Ok(account)); }
public UserAccountResponse Update(long id, UpdateUserAccountRequest updatedAccountDTO) { var account = _repo.GetById(id); if (account == null) { throw new AppException($"User with Id {id} does not exist"); } //hash password if it was provided if (!string.IsNullOrEmpty(updatedAccountDTO.Password)) { account.PasswordHash = BC.HashPassword(updatedAccountDTO.Password); } //copy DTO to account and save _mapper.Map(updatedAccountDTO, account); account.UpdatedOn = DateTime.UtcNow; _repo.Update(account); return(_mapper.Map <UserAccountResponse>(account)); }
public async Task should_return_ok_and_updated_user_when_updating_an_account_successfully() { var existingUser = await CreateNewUser(); var userId = Guid.Parse(existingUser.UserId); var username = existingUser.Username; var updateUserRequest = new UpdateUserAccountRequest { FirstName = "RandomTest", LastName = "UpdatedTest" }; var jsonBody = RequestHelper.Serialise(updateUserRequest); var stringContent = new StringContent(jsonBody, Encoding.UTF8, "application/json"); var responseMessage = await SendPatchRequestAsync(UpdateUserAccount(userId), stringContent); responseMessage.StatusCode.Should().Be(HttpStatusCode.OK); var updatedUserResponse = RequestHelper.Deserialise <UserResponse>(await responseMessage.Content.ReadAsStringAsync()); updatedUserResponse.FirstName.Should().Be(updateUserRequest.FirstName); updatedUserResponse.LastName.Should().Be(updateUserRequest.LastName); updatedUserResponse.Email.Should().NotBe(username); }
public async Task <IActionResult> UpdateUserAccount([FromRoute] Guid userId, [FromBody] UpdateUserAccountRequest payload) { var result = await new UpdateUserAccountRequestValidation().ValidateAsync(payload); if (!result.IsValid) { foreach (var failure in result.Errors) { ModelState.AddModelError(failure.PropertyName, failure.ErrorMessage); } var errors = ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage)).ToList(); _telemetryClient.TrackTrace(new TraceTelemetry( $"UpdateUserAccount validation failed: {string.Join(Separator, errors)}", SeverityLevel.Error)); return(BadRequest(ModelState)); } try { var user = await _userAccountService.UpdateUserAccountAsync(userId, payload.FirstName, payload.LastName); var response = new UserResponse { Email = user.UserPrincipalName, DisplayName = user.DisplayName, FirstName = user.GivenName, LastName = user.Surname }; return(Ok(response)); } catch (UserDoesNotExistException e) { return(NotFound(e.Message)); } }