From 199b96f6549bd1cceb2d12b928a2f55997756cec Mon Sep 17 00:00:00 2001 From: Art Date: Fri, 10 Sep 2021 17:57:54 +0300 Subject: [PATCH] 81.2 Correct URL for default and custom profile image (#9) --- .../backend/service/UserServiceImpl.java | 12 +++++++++++- .../backend/controller/UserResourceUnSecureTest.java | 8 +++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java index 2a6ae7a..4b38a2f 100644 --- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java +++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java @@ -102,6 +102,13 @@ public class UserServiceImpl implements UserService { return addNewUser(newUserDto); } + private String generateDefaultProfileImageUrl(String userId) { + return ServletUriComponentsBuilder.fromCurrentContextPath() + .path(DEFAULT_USER_IMAGE_PATH) + .pathSegment(userId) + .toUriString(); + } + private String generateProfileImageUrl(String userId) { return ServletUriComponentsBuilder.fromCurrentContextPath() .path(DEFAULT_USER_IMAGE_PATH) @@ -152,7 +159,7 @@ public class UserServiceImpl implements UserService { newUser.setPassword(encodedPassword); newUser.setUserId(generateUserId()); - newUser.setProfileImageUrl(generateProfileImageUrl(newUser.getUserId())); + newUser.setProfileImageUrl(generateDefaultProfileImageUrl(newUser.getUserId())); userRepository.save(newUser); saveProfileImage(newUser, userDto.getProfileImage()); @@ -178,6 +185,9 @@ public class UserServiceImpl implements UserService { } profileImage.transferTo(userFolder.resolve(USER_IMAGE_FILENAME)); log.debug(FILE_SAVED_IN_FILE_SYSTEM + profileImage.getOriginalFilename()); + user.setProfileImageUrl(generateProfileImageUrl(user.getUserId())); + userRepository.save(user); + } catch (IOException exception) { log.error("Can't save to file", exception); } diff --git a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java index 7fa15db..059bea0 100644 --- a/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java +++ b/support-portal-backend/src/test/java/net/shyshkin/study/fullstack/supportportal/backend/controller/UserResourceUnSecureTest.java @@ -610,7 +610,8 @@ class UserResourceUnSecureTest extends BaseUserTest { .hasFieldOrPropertyWithValue("lastName", user.getLastName()) .hasFieldOrPropertyWithValue("isActive", user.isActive()) .hasFieldOrPropertyWithValue("isNotLocked", user.isNotLocked()) - .hasFieldOrPropertyWithValue("role", user.getRole()); + .hasFieldOrPropertyWithValue("role", user.getRole()) + .satisfies(u -> assertThat(u.getProfileImageUrl()).endsWith(String.format("/user/image/profile/%s/avatar.jpg", user.getUserId()))); Path path = Path.of(FileConstant.USER_FOLDER, user.getUserId(), FileConstant.USER_IMAGE_FILENAME); log.debug("Path of created file: {}", path); @@ -760,7 +761,7 @@ class UserResourceUnSecureTest extends BaseUserTest { String userId = user.getUserId(); //when - RequestEntity requestEntity = RequestEntity.get("/user/image/profile/{userId}",userId) + RequestEntity requestEntity = RequestEntity.get("/user/image/profile/{userId}", userId) .accept(MediaType.IMAGE_JPEG) .build(); var responseEntity = restTemplate.exchange(requestEntity, new ParameterizedTypeReference() { @@ -800,7 +801,8 @@ class UserResourceUnSecureTest extends BaseUserTest { .hasFieldOrPropertyWithValue("lastName", user.getLastName()) .hasFieldOrPropertyWithValue("isActive", user.isActive()) .hasFieldOrPropertyWithValue("isNotLocked", user.isNotLocked()) - .hasFieldOrPropertyWithValue("role", user.getRole()); + .hasFieldOrPropertyWithValue("role", user.getRole()) + .satisfies(u -> assertThat(u.getProfileImageUrl()).endsWith(String.format("/user/image/profile/%s/avatar.jpg", user.getUserId()))); Path path = Path.of(FileConstant.USER_FOLDER, user.getUserId(), FileConstant.USER_IMAGE_FILENAME); log.debug("Path of created file: {}", path);