Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,4 @@ jobs:
uses: gradle/actions/setup-gradle@v4

- name: Build with Gradle
run: ./gradlew build
run: SPRING_PROFILES_ACTIVE=integration-test ./gradlew test
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@
import com.backend.server.config.ControllerTest;
import com.backend.server.util.S3ApiUtil;
import com.jayway.jsonpath.JsonPath;
import java.time.LocalDateTime;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.IfProfileValue;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit.jupiter.EnabledIf;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;

Expand All @@ -26,11 +29,13 @@ class CommonPresignedUrlControllerTest {
class Presigned_URL_API_는 {

@Test
@IfProfileValue(name = "spring.profiles.active", value = "integration-test")
@EnabledIf(expression = "#{'${spring.profiles.active:default}' == 'integration-test'}", loadContext = true)
void 파일_업로드가_가능한_URL을_응답한다() throws Exception {
/* presigned url 을 발급받습니다. */
//given
final String fileName = "asdf.txt";
final String fileContent = "Hello World!";
final String fileContent = LocalDateTime.now().toString();
final String fileName = String.format("%s.txt", fileContent);
System.out.printf("file name : %s\tfile content : %s\n", fileName, fileContent);

//when
ResultActions result = mockMvc.perform(get("/api/s3/presigned-url")
Expand All @@ -41,16 +46,30 @@ class Presigned_URL_API_는 {

String responseJson = result.andReturn().getResponse().getContentAsString();
String presignedUrl = JsonPath.parse(responseJson).read("$.data", String.class);
/* presigned url 을 발급받습니다. */

/* presigned url 로 파일이 잘 업로드 되는지 테스트 */
//given
s3ApiUtil.upload(presignedUrl, fileContent);

try {
assertThat(s3ApiUtil.get(fileName))
//when
ResponseEntity<String> response = s3ApiUtil.get(fileName);

//then
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(response.getBody())
.as("업로드한 파일 내용과 업로드된 파일 내용이 일치하는지 확인합니다.")
.isEqualTo(fileContent);
} finally {
// 테스트로 업로드한 파일을 삭제하고, 잘 삭제되었는지 확인합니다.
s3ApiUtil.delete(fileName);

assertThat(s3ApiUtil.get(fileName))
.as("테스트용 파일이 삭제되었는지 확인합니다.")
.isNull();
}
/* presigned url 로 파일이 잘 업로드 되는지 테스트 */
}
}
}

This file was deleted.

22 changes: 11 additions & 11 deletions src/test/java/com/backend/server/util/S3ApiUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,20 @@ public void upload(String presignedUrl, String content) {
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
}

public String get(String fileKey) {
public ResponseEntity<String> get(String fileKey) {
final String url = String.format("https://%s.s3.%s.amazonaws.com/%s",
s3Properties.getBucket(), s3Properties.getRegion(), fileKey);

ResponseEntity<String> response = restTemplate.exchange(
url,
HttpMethod.GET,
new HttpEntity<>(new HttpHeaders()),
String.class
);

assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);

return response.getBody();
try {
return restTemplate.exchange(
url,
HttpMethod.GET,
new HttpEntity<>(new HttpHeaders()),
String.class
);
} catch (RuntimeException e) {
return null;
}
}

public void delete(String fileKey) {
Expand Down