From 6469e8a293a2edcbc40f214fbee20988ff730cad Mon Sep 17 00:00:00 2001 From: tlgur Date: Sat, 10 Feb 2024 18:08:57 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=ED=8C=8C=EC=9D=BC=20=EC=97=AC?= =?UTF-8?q?=EB=9F=AC=EA=B0=9C=20=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=A0=95?= =?UTF-8?q?=EC=83=81=20=ED=9D=90=EB=A6=84=20=EC=8B=A4=ED=8C=A8=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=9E=91=EC=84=B1=20#122?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../skklub/admin/service/FileUploader.java | 2 +- .../admin/s3/unit/FileUploaderTest.java | 54 ++++++++++++++++++- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/skklub/admin/service/FileUploader.java b/src/main/java/com/skklub/admin/service/FileUploader.java index 1d86c5c..14a6d7b 100644 --- a/src/main/java/com/skklub/admin/service/FileUploader.java +++ b/src/main/java/com/skklub/admin/service/FileUploader.java @@ -42,7 +42,7 @@ public FileName uploadOne(MultipartFile multipartFile) throws ServerSideExceptio } - public List uploadAll(MultipartFile... multipartFiles) { + public List uploadAll(List multipartFiles) { return null; } diff --git a/src/test/java/com/skklub/admin/s3/unit/FileUploaderTest.java b/src/test/java/com/skklub/admin/s3/unit/FileUploaderTest.java index 905547c..70aba8a 100644 --- a/src/test/java/com/skklub/admin/s3/unit/FileUploaderTest.java +++ b/src/test/java/com/skklub/admin/s3/unit/FileUploaderTest.java @@ -23,12 +23,17 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.test.context.ActiveProfiles; import org.springframework.util.FileCopyUtils; +import org.springframework.web.multipart.MultipartFile; +import scala.Int; import java.io.ByteArrayInputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import java.util.UUID; +import java.util.stream.Collectors; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; @@ -81,7 +86,7 @@ void S3Import() throws IOException { /** * input : Random Byte File - * expect result : Save Success & return Random UUID + * expect result : Save Success & return With Random UUID */ @Test @DisplayName("파일 한개 업로드 - 정상") @@ -92,8 +97,8 @@ public void uploadOne_Default_Success() throws Exception{ byte[] contents = new byte[1024]; random.nextBytes(contents); MockMultipartFile file = new MockMultipartFile(name + "." + extension, contents); + log.info("file : {}", file.getName()); - log.info("file : {}", file.getContentType()); //mocking //when @@ -105,4 +110,49 @@ public void uploadOne_Default_Success() throws Exception{ assertThat("파일 저장 검증", amazonS3.doesObjectExist(bucket, fileName.getUploadedName()), equalTo(true)); } + /** + * input : 100 Random Byte Files + * expect result : Save Success & return With Random UUID + */ + @Test + @DisplayName("파일 여러개 업로드 - 정상") + public void uploadAll_Default_Success() throws Exception{ + //given\ + Integer fileCount = 100; + List files = new ArrayList<>(); + String extension = "testFIleExtension"; + byte[] contents = new byte[1024]; + String testFIleNamePrefix = "testFIleName"; + for (int i = 0; i < fileCount; i++) { + String name = testFIleNamePrefix + i; + random.nextBytes(contents); + files.add(new MockMultipartFile(name + "." + extension, contents)); + } + + //mocking + + //when + List fileNames = fileUploader.uploadAll(files); + + //then + assertThat("변환된 파일 총 개수 검증", fileNames.size(), equalTo(fileCount)); + List multipartFileNames = files.stream() + .map(MultipartFile::getName) + .collect(Collectors.toList()); + List savedOriginalNames = fileNames.stream() + .map(FileName::getOriginalName) + .collect(Collectors.toList()); + assertThat("원본 파일명 유지 검증 - List contains", multipartFileNames.containsAll(savedOriginalNames), equalTo(true)); + savedOriginalNames + .forEach(originalFileName -> { + assertThat("원본 파일명 유지 검증 - Prefix", originalFileName, containsString(testFIleNamePrefix)); + }); + fileNames.stream() + .map(FileName::getUploadedName) + .forEach(uploadFileName -> { + assertThat("가상 파일명 생성 검증", uploadFileName, containsString("." + extension)); + assertThat("파일 저장 검증", amazonS3.doesObjectExist(bucket, uploadFileName), equalTo(true)); + }); + + } } \ No newline at end of file