From ccf831e97af24e1f027b138ecd20db271c85d240 Mon Sep 17 00:00:00 2001 From: sewon Date: Tue, 27 Aug 2024 18:02:32 +0900 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=EC=B4=88=EA=B8=B0=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=A5=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=9D=98=20=EA=B2=BD=EC=9A=B0=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=82=AD=EC=A0=9C=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solidconnection/siteuser/service/SiteUserService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java index 71436ff87..2ccf040aa 100644 --- a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java +++ b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java @@ -88,7 +88,10 @@ public ProfileImageUpdateResponse updateProfileImage(String email, MultipartFile SiteUser siteUser = siteUserRepository.getByEmail(email); validateProfileImage(imageFile); - s3Service.deleteExProfile(email); + // 기존 url이 초기에 등록되는 kakao,,, 형식인 경우에는 deleteExProfile 수행하지 않음 + if (siteUser.getProfileImageUrl().contains(".com")) { + s3Service.deleteExProfile(email); + } UploadedFileUrlResponse uploadedFileUrlResponse = s3Service.uploadFile(imageFile, ImgType.PROFILE); siteUser.setProfileImageUrl(uploadedFileUrlResponse.fileUrl()); siteUserRepository.save(siteUser); From b8a1c699c60ef34231298be24c3876570740f4a2 Mon Sep 17 00:00:00 2001 From: sewon Date: Tue, 27 Aug 2024 18:03:14 +0900 Subject: [PATCH 2/4] =?UTF-8?q?test:=20=EC=B4=88=EA=B8=B0=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unit/service/SiteUserServiceTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java b/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java index f6a330348..0c6b28dcb 100644 --- a/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java @@ -49,6 +49,7 @@ public class SiteUserServiceTest { private SiteUser siteUser; private MultipartFile imageFile; private UploadedFileUrlResponse uploadedFileUrlResponse; + private final String defaultProfileImageUrl = "http://k.kakaocdn.net/dn/o2c5A/btsASaNh2Lr/Xum5kRyuErD8LIuLQEWfC0/img_640x640.jpg"; @BeforeEach void setUp() { @@ -80,6 +81,23 @@ private UploadedFileUrlResponse createUploadedFileUrlResponse() { return new UploadedFileUrlResponse("https://s3.example.com/test1.png"); } + @Test + void 초기_프로필_이미지를_수정한다() { + siteUser.setProfileImageUrl(defaultProfileImageUrl); + when(siteUserRepository.getByEmail(siteUser.getEmail())).thenReturn(siteUser); + when(s3Service.uploadFile(imageFile, ImgType.PROFILE)).thenReturn(uploadedFileUrlResponse); + + // When + ProfileImageUpdateResponse profileImageUpdateResponse = + siteUserService.updateProfileImage(siteUser.getEmail(), imageFile); + // Then + assertEquals(profileImageUpdateResponse, ProfileImageUpdateResponse.from(siteUser)); + verify(siteUserRepository, times(1)).getByEmail(siteUser.getEmail()); + verify(s3Service, times(0)).deleteExProfile(siteUser.getEmail()); + verify(s3Service, times(1)).uploadFile(imageFile, ImgType.PROFILE); + verify(siteUserRepository, times(1)).save(any(SiteUser.class)); + } + @Test void 프로필_이미지를_수정한다() { // Given From 8c53dc683744d72bd6dd937d378f75710d3af8ff Mon Sep 17 00:00:00 2001 From: sewon Date: Tue, 27 Aug 2024 18:51:35 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=EC=B4=88=EA=B8=B0=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=EA=B0=80=20null=EC=9D=B4=20=EB=90=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EC=9D=8C=EC=9D=84=20=EA=B3=A0=EB=A0=A4=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siteuser/service/SiteUserService.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java index 2ccf040aa..0ab6aa0d2 100644 --- a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java +++ b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java @@ -88,8 +88,8 @@ public ProfileImageUpdateResponse updateProfileImage(String email, MultipartFile SiteUser siteUser = siteUserRepository.getByEmail(email); validateProfileImage(imageFile); - // 기존 url이 초기에 등록되는 kakao,,, 형식인 경우에는 deleteExProfile 수행하지 않음 - if (siteUser.getProfileImageUrl().contains(".com")) { + // 프로필 이미지를 처음 수정하는 경우에는 deleteExProfile 수행하지 않음 + if(!isDefaultProfileImage(siteUser.getProfileImageUrl())){ s3Service.deleteExProfile(email); } UploadedFileUrlResponse uploadedFileUrlResponse = s3Service.uploadFile(imageFile, ImgType.PROFILE); @@ -105,6 +105,11 @@ private void validateProfileImage(MultipartFile imageFile) { } } + private boolean isDefaultProfileImage(String profileImageUrl) { + String prefix = "https://solid-connection-uploaded.s3.ap-northeast-2.amazonaws.com/profile/"; + return profileImageUrl == null || !profileImageUrl.startsWith(prefix); + } + /* * 닉네임을 수정한다. * */ From d96042d598b865977538fe49f719eb1e62eaeaf2 Mon Sep 17 00:00:00 2001 From: sewon Date: Tue, 27 Aug 2024 18:52:20 +0900 Subject: [PATCH 4/4] =?UTF-8?q?test:=20=EC=B4=88=EA=B8=B0=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EA=B2=BD?= =?UTF-8?q?=EB=A1=9C=EA=B0=80=20null=EC=9D=BC=EB=95=8C=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unit/service/SiteUserServiceTest.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java b/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java index 0c6b28dcb..7cfeb94c6 100644 --- a/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java @@ -63,7 +63,7 @@ private SiteUser createSiteUser() { return new SiteUser( "test@example.com", "nickname", - "http://example.com/profile.jpg", + "https://solid-connection-uploaded.s3.ap-northeast-2.amazonaws.com/profile/abcd", "1999-01-01", PreparationStatus.CONSIDERING, Role.MENTEE, @@ -82,7 +82,7 @@ private UploadedFileUrlResponse createUploadedFileUrlResponse() { } @Test - void 초기_프로필_이미지를_수정한다() { + void 초기_프로필_이미지를_수정한다_kakao() { siteUser.setProfileImageUrl(defaultProfileImageUrl); when(siteUserRepository.getByEmail(siteUser.getEmail())).thenReturn(siteUser); when(s3Service.uploadFile(imageFile, ImgType.PROFILE)).thenReturn(uploadedFileUrlResponse); @@ -98,6 +98,23 @@ private UploadedFileUrlResponse createUploadedFileUrlResponse() { verify(siteUserRepository, times(1)).save(any(SiteUser.class)); } + @Test + void 초기_프로필_이미지를_수정한다_null() { + siteUser.setProfileImageUrl(null); + when(siteUserRepository.getByEmail(siteUser.getEmail())).thenReturn(siteUser); + when(s3Service.uploadFile(imageFile, ImgType.PROFILE)).thenReturn(uploadedFileUrlResponse); + + // When + ProfileImageUpdateResponse profileImageUpdateResponse = + siteUserService.updateProfileImage(siteUser.getEmail(), imageFile); + // Then + assertEquals(profileImageUpdateResponse, ProfileImageUpdateResponse.from(siteUser)); + verify(siteUserRepository, times(1)).getByEmail(siteUser.getEmail()); + verify(s3Service, times(0)).deleteExProfile(siteUser.getEmail()); + verify(s3Service, times(1)).uploadFile(imageFile, ImgType.PROFILE); + verify(siteUserRepository, times(1)).save(any(SiteUser.class)); + } + @Test void 프로필_이미지를_수정한다() { // Given