27.3.1. Modified endpoint update user - use userId instead of current username - backend (#27)

This commit is contained in:
Art
2021-09-28 14:37:01 +03:00
parent 76cd81a731
commit 1046f352ab
5 changed files with 34 additions and 21 deletions

View File

@ -65,10 +65,10 @@ public class UserResource {
return userService.addNewUser(userDto);
}
@PutMapping("{currentUsername}")
public User updateUser(@PathVariable String currentUsername, @Valid UserDto userDto) {
@PutMapping("{userId}")
public User updateUser(@PathVariable UUID userId, @Valid UserDto userDto) {
log.debug("User DTO: {}", userDto);
return userService.updateUser(currentUsername, userDto);
return userService.updateUser(userId, userDto);
}
@GetMapping("{username}")

View File

@ -20,9 +20,11 @@ public interface UserService extends UserDetailsService {
User findByEmail(String email);
User findByUserId(UUID userId);
User addNewUser(UserDto userDto);
User updateUser(String username, UserDto userDto);
User updateUser(UUID userId, UserDto userDto);
void deleteUser(UUID userId);

View File

@ -145,6 +145,13 @@ public class UserServiceImpl implements UserService {
.orElseThrow(() -> new EmailNotFoundException(String.format(EMAIL_NOT_FOUND_MSG, email)));
}
@Override
public User findByUserId(UUID userId) {
return userRepository
.findByUserId(userId)
.orElseThrow(() -> new UserNotFoundException(USER_NOT_FOUND_MSG));
}
@Override
public User addNewUser(UserDto userDto) {
@ -210,12 +217,12 @@ public class UserServiceImpl implements UserService {
}
@Override
public User updateUser(String username, UserDto userDto) {
public User updateUser(UUID userId, UserDto userDto) {
String newUsername = userDto.getUsername();
String email = userDto.getEmail();
User user = validateUpdateUsernameAndEmail(username, newUsername, email);
User user = validateUpdateUsernameAndEmail(userId, newUsername, email);
user.setFirstName(userDto.getFirstName());
user.setLastName(userDto.getLastName());
@ -303,13 +310,13 @@ public class UserServiceImpl implements UserService {
throwEmailExistsException(email);
}
private User validateUpdateUsernameAndEmail(String currentUsername, String username, String email) {
private User validateUpdateUsernameAndEmail(UUID userId, String username, String email) {
Objects.requireNonNull(currentUsername);
Objects.requireNonNull(userId);
User currentUser = findByUsername(currentUsername);
User currentUser = findByUserId(userId);
if (!Objects.equals(currentUsername, username) && userRepository.existsByUsername(username))
if (!Objects.equals(currentUser.getUsername(), username) && userRepository.existsByUsername(username))
throwUsernameExistsException(username);
if (!Objects.equals(currentUser.getEmail(), email) && userRepository.existsByEmail(email))

View File

@ -590,6 +590,7 @@ class UserResourceTest extends BaseUserTest {
User user = createRandomUser();
userRepository.save(user);
String currentUsername = user.getUsername();
UUID userId = user.getUserId();
UserDto userDto = createRandomUserDto();
@ -610,7 +611,7 @@ class UserResourceTest extends BaseUserTest {
//when
var requestEntity = RequestEntity
.put("/user/{currentUsername}", currentUsername)
.put("/user/{userId}", userId)
.contentType(MediaType.MULTIPART_FORM_DATA)
.headers(httpHeaders -> httpHeaders.setBearerAuth(correctToken))
.body(body);

View File

@ -258,11 +258,12 @@ class UserResourceUnSecureTest extends BaseUserTest {
//given
UserDto userDto = createRandomUserDto();
String currentUsername = user.getUsername();
UUID userId = user.getUserId();
userDto.setUsername(currentUsername);
userDto.setRole(Role.ROLE_MANAGER);
Map<String, ?> paramMap = Map.of(
"currentUsername", currentUsername,
"userId", userId,
"firstName", userDto.getFirstName(),
"lastName", userDto.getLastName(),
"username", userDto.getUsername(),
@ -275,7 +276,7 @@ class UserResourceUnSecureTest extends BaseUserTest {
//when
ResponseEntity<User> responseEntity = restTemplate
.exchange(
"/user/{currentUsername}?username={username}&email={email}" +
"/user/{userId}?username={username}&email={email}" +
"&firstName={firstName}&lastName={lastName}" +
"&role={role}&active={isActive}&notLocked={isNotLocked}",
HttpMethod.PUT,
@ -304,12 +305,12 @@ class UserResourceUnSecureTest extends BaseUserTest {
//given
UserDto userDto = createRandomUserDto();
String currentUsername = user.getUsername();
UUID userId = user.getUserId();
userDto.setRole(Role.ROLE_HR);
Map<String, ?> paramMap = Map.of(
"currentUsername", currentUsername,
"userId", userId,
"firstName", userDto.getFirstName(),
"lastName", userDto.getLastName(),
"username", userDto.getUsername(),
@ -322,7 +323,7 @@ class UserResourceUnSecureTest extends BaseUserTest {
//when
ResponseEntity<User> responseEntity = restTemplate
.exchange(
"/user/{currentUsername}?username={username}&email={email}" +
"/user/{userId}?username={username}&email={email}" +
"&firstName={firstName}&lastName={lastName}" +
"&role={role}&active={isActive}&notLocked={isNotLocked}",
HttpMethod.PUT,
@ -353,11 +354,12 @@ class UserResourceUnSecureTest extends BaseUserTest {
//given
UserDto userDto = createRandomUserDto();
String currentUsername = user.getUsername();
UUID userId = user.getUserId();
userDto.setRole(Role.ROLE_USER);
Map<String, ?> paramMap = Map.of(
"currentUsername", currentUsername,
"userId", userId,
"firstName", userDto.getFirstName(),
"username", userDto.getUsername(),
"email", userDto.getEmail(),
@ -369,7 +371,7 @@ class UserResourceUnSecureTest extends BaseUserTest {
//when
var responseEntity = restTemplate
.exchange(
"/user/{currentUsername}?username={username}&email={email}" +
"/user/{userId}?username={username}&email={email}" +
"&firstName={firstName}" +
"&role={role}&active={isActive}&notLocked={isNotLocked}",
HttpMethod.PUT,
@ -394,11 +396,12 @@ class UserResourceUnSecureTest extends BaseUserTest {
//given
UserDto userDto = createRandomUserDto();
String currentUsername = FAKER.name().username();
UUID userId = UUID.randomUUID();
userDto.setUsername(currentUsername);
userDto.setRole(Role.ROLE_MANAGER);
Map<String, ?> paramMap = Map.of(
"currentUsername", currentUsername,
"userId", userId,
"firstName", userDto.getFirstName(),
"lastName", userDto.getLastName(),
"username", userDto.getUsername(),
@ -411,7 +414,7 @@ class UserResourceUnSecureTest extends BaseUserTest {
//when
var responseEntity = restTemplate
.exchange(
"/user/{currentUsername}?username={username}&email={email}" +
"/user/{userId}?username={username}&email={email}" +
"&firstName={firstName}&lastName={lastName}" +
"&role={role}&active={isActive}&notLocked={isNotLocked}",
HttpMethod.PUT,
@ -427,7 +430,7 @@ class UserResourceUnSecureTest extends BaseUserTest {
.isNotNull()
.hasNoNullFieldsOrProperties()
.hasFieldOrPropertyWithValue("httpStatus", BAD_REQUEST)
.hasFieldOrPropertyWithValue("message", String.format("User with username `%s` not found", currentUsername));
.hasFieldOrPropertyWithValue("message", "User not found");
}
}