Beispiel #1
0
        /// <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);
        }
Beispiel #4
0
        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));
            }
        }