27.3.1. Modified endpoint update user - use userId instead of current username - backend (#27)
This commit is contained in:
@ -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}")
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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}¬Locked={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}¬Locked={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}¬Locked={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}¬Locked={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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user