62 lines
2.1 KiB
Java
62 lines
2.1 KiB
Java
package com.baeldung.s3;
|
|
|
|
import com.amazonaws.event.ProgressListener;
|
|
import com.amazonaws.services.s3.AmazonS3;
|
|
import com.amazonaws.services.s3.model.PutObjectRequest;
|
|
import com.amazonaws.services.s3.model.PutObjectResult;
|
|
import com.amazonaws.services.s3.transfer.TransferManager;
|
|
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
|
|
import com.amazonaws.services.s3.transfer.Upload;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
|
|
import java.io.File;
|
|
import java.util.concurrent.Executors;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
import static org.mockito.ArgumentMatchers.anyString;
|
|
import static org.mockito.Mockito.mock;
|
|
import static org.mockito.Mockito.verify;
|
|
import static org.mockito.Mockito.when;
|
|
|
|
public class MultipartUploadLiveTest {
|
|
|
|
private static final String BUCKET_NAME = "bucket_name";
|
|
private static final String KEY_NAME = "picture.jpg";
|
|
|
|
private AmazonS3 amazonS3;
|
|
private TransferManager tm;
|
|
private ProgressListener progressListener;
|
|
|
|
@Before
|
|
public void setup() {
|
|
amazonS3 = mock(AmazonS3.class);
|
|
tm = TransferManagerBuilder
|
|
.standard()
|
|
.withS3Client(amazonS3)
|
|
.withMultipartUploadThreshold((long) (5 * 1024 * 1025))
|
|
.withExecutorFactory(() -> Executors.newFixedThreadPool(5))
|
|
.build();
|
|
progressListener =
|
|
progressEvent -> System.out.println("Transferred bytes: " + progressEvent.getBytesTransferred());
|
|
}
|
|
|
|
@Test
|
|
public void whenUploadingFileWithTransferManager_thenVerifyUploadRequested() {
|
|
File file = mock(File.class);
|
|
PutObjectResult s3Result = mock(PutObjectResult.class);
|
|
|
|
when(amazonS3.putObject(anyString(), anyString(), (File) any())).thenReturn(s3Result);
|
|
when(file.getName()).thenReturn(KEY_NAME);
|
|
|
|
PutObjectRequest request = new PutObjectRequest(BUCKET_NAME, KEY_NAME, file);
|
|
request.setGeneralProgressListener(progressListener);
|
|
|
|
Upload upload = tm.upload(request);
|
|
|
|
assertThat(upload).isNotNull();
|
|
verify(amazonS3).putObject(request);
|
|
}
|
|
}
|