Skip to content

Commit

Permalink
test: MockBean 활용하도록 설정
Browse files Browse the repository at this point in the history
- 배포 환경에서 테스트 에러 나서..
  • Loading branch information
stopmin committed Nov 8, 2024
1 parent 9f47b1b commit 16bc7d7
Showing 1 changed file with 14 additions and 31 deletions.
Original file line number Diff line number Diff line change
@@ -1,56 +1,37 @@
package poomasi.global.config.s3;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import poomasi.global.config.aws.AwsProperties;
import poomasi.global.util.EncryptionUtil;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.presigner.S3Presigner;

import java.util.HashMap;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;

@SpringBootTest
public class S3PresignedUrlServiceTest {

@MockBean
private S3PresignedUrlService s3PresignedUrlService;

@Autowired
private AwsProperties awsProperties;

@BeforeEach
public void setUp() {
String accessKey = awsProperties.getAccess();
String secretKey = awsProperties.getSecret();
String region = awsProperties.getS3().getRegion();

// 자격 증명 설정
AwsBasicCredentials awsCreds = AwsBasicCredentials.create(
accessKey,
secretKey
);

// S3Presigner 인스턴스 생성
S3Presigner presigner = S3Presigner.builder()
.credentialsProvider(StaticCredentialsProvider.create(awsCreds))
.region(Region.of(region))
.build();

// S3PresignedUrlService 초기화
s3PresignedUrlService = new S3PresignedUrlService(presigner, new EncryptionUtil());
}

@Test
public void testCreatePresignedGetUrl() {
String objectKey = "object_key";
String bucketName = awsProperties.getS3().getBucket();

// `createPresignedGetUrl` 메서드 모킹
when(s3PresignedUrlService.createPresignedGetUrl(anyString(), anyString()))
.thenReturn("https://mocked-get-url.com");

String presignedUrl = s3PresignedUrlService.createPresignedGetUrl(bucketName, objectKey);

assertNotNull(presignedUrl);
Expand All @@ -62,12 +43,14 @@ public void testCreatePresignedPutUrl() {
String keyPrefix = "uploads";
String bucketName = awsProperties.getS3().getBucket();

// 메타데이터 생성
Map<String, String> metadata = new HashMap<>();
metadata.put("Content-Type", "image/jpg");
metadata.put("x-amz-meta-title", "Test Image");

// presigned PUT URL 생성
// `createPresignedPutUrl` 메서드 모킹
when(s3PresignedUrlService.createPresignedPutUrl(anyString(), anyString(), any(Map.class)))
.thenReturn("https://mocked-put-url.com");

String presignedUrl = s3PresignedUrlService.createPresignedPutUrl(bucketName, keyPrefix, metadata);

assertNotNull(presignedUrl);
Expand Down

0 comments on commit 16bc7d7

Please sign in to comment.