Şu satırı dahil ederiz
testImplementation "org.testcontainers:testcontainers"testImplementation 'org.testcontainers:junit-jupiter'testImplementation "org.testcontainers:localstack"testImplementation 'org.testcontainers:postgresql'
getAccessKey metodu
Örnek
Şöyle yaparız
import com.amazonaws.services.s3.AmazonS3; import org.testcontainers.containers.localstack.LocalStackContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.utility.DockerImageName; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Testcontainers public class UploadControllerAPITest { public static final String BUCKET_NAME = "testbucket"; @LocalServerPort private int port; @Container private static final LocalStackContainer localStackContainer = new LocalStackContainer( DockerImageName.parse("localstack/localstack:0.11.3")) .withServices(LocalStackContainer.Service.S3); @Autowired private TestRestTemplate restTemplate; @Autowired private AmazonS3 s3Client; @BeforeAll static void beforeAll() { System.setProperty("spring.cloud.aws.credentials.access-key", localStackContainer.getAccessKey()); System.setProperty("spring.cloud.aws.credentials.secret-key", localStackContainer.getSecretKey()); System.setProperty("spring.cloud.aws.s3.region",localStackContainer.getRegion()); System.setProperty("cloud.aws.s3.endpoint", localStackContainer.getEndpointOverride(LocalStackContainer.Service.S3) .toString()); } @BeforeEach void setUp() { s3Client.createBucket(BUCKET_NAME); } }
Şöyle yaparız
@Test void shouldUploadFileSuccessFullyToS3() { String fileUploadURI = "/api/upload"; LinkedMultiValueMap<String, Object> parameters = new LinkedMultiValueMap<>(); parameters.add("file", new ClassPathResource("sample.txt")); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); HttpEntity<LinkedMultiValueMap<String, Object>> entity = new HttpEntity<>(parameters, headers); String expected = "{\"status\":\"success\", \"url\":\"/testbucket/sample.txt\"}"; ResponseEntity<String> responseEntity = restTemplate .exchange("http://localhost:" + port + fileUploadURI, POST, entity, String.class); assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); assertEquals(expected, responseEntity.getBody()); }
execInContainer metodu
Hiç yorum yok:
Yorum Gönder