Merge pull request #15014 from panos-kakos/JAVA-26119
[JAVA-26119] Merged aws-s3-update-object module with aws-s3
This commit is contained in:
commit
03fb4cacf7
@ -1,43 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>aws-s3-update-object</artifactId>
|
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
|
||||||
<name>aws-s3-update-object</name>
|
|
||||||
<description>Project demonstrating overwriting of S3 objects</description>
|
|
||||||
<parent>
|
|
||||||
<groupId>com.baeldung</groupId>
|
|
||||||
<artifactId>parent-boot-2</artifactId>
|
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
|
||||||
<relativePath>../../parent-boot-2</relativePath>
|
|
||||||
</parent>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.amazonaws</groupId>
|
|
||||||
<artifactId>aws-java-sdk</artifactId>
|
|
||||||
<version>${aws-java-sdk-version}</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
<properties>
|
|
||||||
<aws-java-sdk-version>1.12.523</aws-java-sdk-version>
|
|
||||||
</properties>
|
|
||||||
</project>
|
|
@ -1,13 +0,0 @@
|
|||||||
package com.baeldung.awss3updateobject;
|
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
|
||||||
public class AwsS3UpdateObjectApplication {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
SpringApplication.run(AwsS3UpdateObjectApplication.class, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
package com.baeldung.awss3updateobject.controller;
|
|
||||||
|
|
||||||
import com.baeldung.awss3updateobject.service.FileService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("api/v1/file")
|
|
||||||
public class FileController {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
FileService fileService;
|
|
||||||
|
|
||||||
@PostMapping("/upload")
|
|
||||||
public String uploadFile(@RequestParam("file") MultipartFile multipartFile) throws Exception {
|
|
||||||
return this.fileService.uploadFile(multipartFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/update")
|
|
||||||
public String updateFile(@RequestParam("file") MultipartFile multipartFile, @RequestParam("filePath") String exitingFilePath) throws Exception {
|
|
||||||
return this.fileService.updateFile(multipartFile, exitingFilePath);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
package com.baeldung.awss3updateobject.service;
|
|
||||||
|
|
||||||
import com.amazonaws.auth.AWSCredentials;
|
|
||||||
import com.amazonaws.auth.AWSStaticCredentialsProvider;
|
|
||||||
import com.amazonaws.auth.BasicAWSCredentials;
|
|
||||||
import com.amazonaws.regions.Regions;
|
|
||||||
import com.amazonaws.services.s3.AmazonS3;
|
|
||||||
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
|
|
||||||
import com.amazonaws.services.s3.model.*;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class FileService {
|
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(FileService.class);
|
|
||||||
|
|
||||||
public AmazonS3 amazonS3;
|
|
||||||
|
|
||||||
@Value("${aws.s3bucket}")
|
|
||||||
public String awsS3Bucket;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init(){
|
|
||||||
AWSCredentials credentials = new BasicAWSCredentials(
|
|
||||||
"AWS AccessKey",
|
|
||||||
"AWS secretKey"
|
|
||||||
);
|
|
||||||
this.amazonS3 = AmazonS3ClientBuilder.standard()
|
|
||||||
.withRegion(Regions.fromName("us-east-1"))
|
|
||||||
.withCredentials(new AWSStaticCredentialsProvider(credentials))
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String uploadFile(MultipartFile multipartFile) throws Exception {
|
|
||||||
String key = "/documents/" + multipartFile.getOriginalFilename();
|
|
||||||
return this.uploadDocument(this.awsS3Bucket, key, multipartFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String updateFile(MultipartFile multipartFile, String key) throws Exception {
|
|
||||||
return this.uploadDocument(this.awsS3Bucket, key, multipartFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String uploadDocument(String s3bucket, String key, MultipartFile multipartFile) throws Exception {
|
|
||||||
try {
|
|
||||||
ObjectMetadata metadata = new ObjectMetadata();
|
|
||||||
metadata.setContentType(multipartFile.getContentType());
|
|
||||||
Map<String, String> attributes = new HashMap<>();
|
|
||||||
attributes.put("document-content-size", String.valueOf(multipartFile.getSize()));
|
|
||||||
metadata.setUserMetadata(attributes);
|
|
||||||
InputStream documentStream = multipartFile.getInputStream();
|
|
||||||
PutObjectResult putObjectResult = this.amazonS3.putObject(new PutObjectRequest(s3bucket, key, documentStream, metadata));
|
|
||||||
|
|
||||||
S3Object s3Object = this.amazonS3.getObject(s3bucket, key);
|
|
||||||
logger.info("Last Modified: " + s3Object.getObjectMetadata().getLastModified());
|
|
||||||
return key;
|
|
||||||
} catch (AmazonS3Exception ex) {
|
|
||||||
if (ex.getErrorCode().equalsIgnoreCase("NoSuchBucket")) {
|
|
||||||
String msg = String.format("No bucket found with name %s", s3bucket);
|
|
||||||
throw new Exception(msg);
|
|
||||||
} else if (ex.getErrorCode().equalsIgnoreCase("AccessDenied")) {
|
|
||||||
String msg = String.format("Access denied to S3 bucket %s", s3bucket);
|
|
||||||
throw new Exception(msg);
|
|
||||||
}
|
|
||||||
throw ex;
|
|
||||||
} catch (IOException ex) {
|
|
||||||
String msg = String.format("Error saving file %s to AWS S3 bucket %s", key, s3bucket);
|
|
||||||
throw new Exception(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
aws.s3bucket=baeldung-documents;
|
|
@ -1,62 +0,0 @@
|
|||||||
package com.baeldung.awss3updateobject.controller;
|
|
||||||
|
|
||||||
import com.baeldung.awss3updateobject.service.FileService;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.mockito.InjectMocks;
|
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.springframework.mock.web.MockMultipartFile;
|
|
||||||
import org.springframework.test.web.servlet.MockMvc;
|
|
||||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
|
||||||
|
|
||||||
public class FileControllerUnitTest {
|
|
||||||
|
|
||||||
private MockMvc mockMvc;
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private FileService fileService;
|
|
||||||
|
|
||||||
@InjectMocks
|
|
||||||
private FileController fileController;
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setUp() {
|
|
||||||
MockitoAnnotations.openMocks(this);
|
|
||||||
this.mockMvc = MockMvcBuilders.standaloneSetup(fileController).build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenValidMultipartFile_whenUploadedViaEndpoint_thenCorrectPathIsReturned() throws Exception {
|
|
||||||
MockMultipartFile multipartFile = new MockMultipartFile("file", "test.txt", "text/plain", "sample file content".getBytes());
|
|
||||||
String expectedResult = "File Uploaded Successfully";
|
|
||||||
|
|
||||||
when(fileService.uploadFile(multipartFile)).thenReturn(expectedResult);
|
|
||||||
|
|
||||||
mockMvc.perform(multipart("/api/v1/file/upload").file(multipartFile))
|
|
||||||
.andExpect(status().isOk())
|
|
||||||
.andExpect(content().string(expectedResult));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenValidMultipartFileAndExistingPath_whenUpdatedViaEndpoint_thenSamePathIsReturned() throws Exception {
|
|
||||||
MockMultipartFile multipartFile = new MockMultipartFile("file", "test.txt", "text/plain", "updated file content".getBytes());
|
|
||||||
String filePath = "some/path/to/file";
|
|
||||||
String expectedResult = "File Updated Successfully";
|
|
||||||
|
|
||||||
when(fileService.updateFile(multipartFile, filePath)).thenReturn(expectedResult);
|
|
||||||
|
|
||||||
mockMvc.perform(multipart("/api/v1/file/update")
|
|
||||||
.file(multipartFile)
|
|
||||||
.param("filePath", filePath))
|
|
||||||
.andExpect(status().isOk())
|
|
||||||
.andExpect(content().string(expectedResult));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,99 +0,0 @@
|
|||||||
package com.baeldung.awss3updateobject.service;
|
|
||||||
|
|
||||||
import com.amazonaws.services.s3.AmazonS3;
|
|
||||||
import com.amazonaws.services.s3.model.AmazonS3Exception;
|
|
||||||
import com.amazonaws.services.s3.model.PutObjectRequest;
|
|
||||||
import com.amazonaws.services.s3.model.S3Object;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.mockito.InjectMocks;
|
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
|
|
||||||
public class FileServiceUnitTest {
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private AmazonS3 amazonS3;
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private MultipartFile multipartFile;
|
|
||||||
|
|
||||||
@InjectMocks
|
|
||||||
private FileService fileService;
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
public void setup() {
|
|
||||||
MockitoAnnotations.openMocks(this);
|
|
||||||
fileService = new FileService();
|
|
||||||
fileService.awsS3Bucket = "test-bucket";
|
|
||||||
fileService.amazonS3 = amazonS3;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenValidFile_whenUploaded_thenKeyMatchesDocumentPath() throws Exception {
|
|
||||||
when(multipartFile.getName()).thenReturn("testFile");
|
|
||||||
when(multipartFile.getOriginalFilename()).thenReturn("testFile");
|
|
||||||
when(multipartFile.getContentType()).thenReturn("application/pdf");
|
|
||||||
when(multipartFile.getSize()).thenReturn(1024L);
|
|
||||||
when(multipartFile.getInputStream()).thenReturn(mock(InputStream.class));
|
|
||||||
|
|
||||||
S3Object s3Object = new S3Object();
|
|
||||||
when(amazonS3.putObject(any())).thenReturn(null);
|
|
||||||
when(amazonS3.getObject(anyString(), anyString())).thenReturn(s3Object);
|
|
||||||
|
|
||||||
String key = fileService.uploadFile(multipartFile);
|
|
||||||
|
|
||||||
assertEquals("/documents/testFile", key);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenValidFile_whenUploadFailsDueToNoBucket_thenExceptionIsThrown() throws Exception {
|
|
||||||
when(multipartFile.getName()).thenReturn("testFile");
|
|
||||||
when(multipartFile.getOriginalFilename()).thenReturn("testFile");
|
|
||||||
when(multipartFile.getContentType()).thenReturn("application/pdf");
|
|
||||||
when(multipartFile.getSize()).thenReturn(1024L);
|
|
||||||
when(multipartFile.getInputStream()).thenReturn(mock(InputStream.class));
|
|
||||||
|
|
||||||
AmazonS3Exception exception = new AmazonS3Exception("Test exception");
|
|
||||||
exception.setErrorCode("NoSuchBucket");
|
|
||||||
when(amazonS3.putObject(any(PutObjectRequest.class))).thenThrow(exception);
|
|
||||||
|
|
||||||
assertThrows(Exception.class, () -> fileService.uploadFile(multipartFile));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenExistingFile_whenUpdated_thenSameKeyIsReturned() throws Exception {
|
|
||||||
when(multipartFile.getName()).thenReturn("testFile");
|
|
||||||
when(multipartFile.getContentType()).thenReturn("application/pdf");
|
|
||||||
when(multipartFile.getSize()).thenReturn(1024L);
|
|
||||||
when(multipartFile.getInputStream()).thenReturn(mock(InputStream.class));
|
|
||||||
|
|
||||||
S3Object s3Object = new S3Object();
|
|
||||||
when(amazonS3.putObject(any(PutObjectRequest.class))).thenReturn(null);
|
|
||||||
when(amazonS3.getObject(anyString(), anyString())).thenReturn(s3Object);
|
|
||||||
|
|
||||||
String key = "/documents/existingFile";
|
|
||||||
String resultKey = fileService.updateFile(multipartFile, key);
|
|
||||||
|
|
||||||
assertEquals(key, resultKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenFileWithIOException_whenUpdated_thenExceptionIsThrown() throws Exception {
|
|
||||||
when(multipartFile.getName()).thenReturn("testFile");
|
|
||||||
when(multipartFile.getContentType()).thenReturn("application/pdf");
|
|
||||||
when(multipartFile.getSize()).thenReturn(1024L);
|
|
||||||
when(multipartFile.getInputStream()).thenThrow(new IOException("Test IO Exception"));
|
|
||||||
|
|
||||||
assertThrows(Exception.class, () -> fileService.updateFile(multipartFile, "/documents/existingFile"));
|
|
||||||
}
|
|
||||||
}
|
|
@ -11,3 +11,4 @@ This module contains articles about Simple Storage Service (S3) on AWS
|
|||||||
- [Listing All AWS S3 Objects in a Bucket Using Java](https://www.baeldung.com/java-aws-s3-list-bucket-objects)
|
- [Listing All AWS S3 Objects in a Bucket Using Java](https://www.baeldung.com/java-aws-s3-list-bucket-objects)
|
||||||
- [Update an Existing Amazon S3 Object Using Java](https://www.baeldung.com/java-update-amazon-s3-object)
|
- [Update an Existing Amazon S3 Object Using Java](https://www.baeldung.com/java-update-amazon-s3-object)
|
||||||
- [How To Rename Files and Folders in Amazon S3](https://www.baeldung.com/java-amazon-s3-rename-files-folders)
|
- [How To Rename Files and Folders in Amazon S3](https://www.baeldung.com/java-amazon-s3-rename-files-folders)
|
||||||
|
- [Update an Existing Amazon S3 Object Using Java](https://www.baeldung.com/java-update-amazon-s3-object)
|
||||||
|
@ -45,6 +45,13 @@ public class S3Application {
|
|||||||
new File("/Users/user/Document/hello.txt")
|
new File("/Users/user/Document/hello.txt")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
s3Service.updateObject(
|
||||||
|
AWS_BUCKET,
|
||||||
|
"Document/hello2.txt",
|
||||||
|
new File("/Users/user/Document/hello2.txt")
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
//listing objects
|
//listing objects
|
||||||
s3Service.listObjects(AWS_BUCKET);
|
s3Service.listObjects(AWS_BUCKET);
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import software.amazon.awssdk.services.s3.model.GetObjectRequest;
|
|||||||
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
|
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
|
||||||
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
|
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
|
||||||
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
|
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
|
||||||
|
import software.amazon.awssdk.services.s3.model.HeadObjectResponse;
|
||||||
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;
|
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;
|
||||||
import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
|
import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
|
||||||
import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
|
import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
|
||||||
@ -99,7 +100,13 @@ class S3Service {
|
|||||||
.key(key)
|
.key(key)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
return s3Client.putObject(request, Path.of(file.toURI()) );
|
|
||||||
|
return s3Client.putObject(request, Path.of(file.toURI()));
|
||||||
|
}
|
||||||
|
|
||||||
|
//updating object
|
||||||
|
public PutObjectResponse updateObject(String bucketName, String key, java.io.File file) {
|
||||||
|
return this.putObject(bucketName, key, file);
|
||||||
}
|
}
|
||||||
|
|
||||||
//listing objects
|
//listing objects
|
||||||
@ -110,6 +117,7 @@ class S3Service {
|
|||||||
ListObjectsV2Response listObjectsV2Response = s3Client.listObjectsV2(listObjectsV2Request);
|
ListObjectsV2Response listObjectsV2Response = s3Client.listObjectsV2(listObjectsV2Request);
|
||||||
|
|
||||||
for(S3Object os : listObjectsV2Response.contents()) {
|
for(S3Object os : listObjectsV2Response.contents()) {
|
||||||
|
|
||||||
System.out.println(os.key());
|
System.out.println(os.key());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.nio.file.Path;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
import software.amazon.awssdk.services.s3.S3Client;
|
import software.amazon.awssdk.services.s3.S3Client;
|
||||||
@ -23,6 +25,7 @@ import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
|
|||||||
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;
|
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;
|
||||||
import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
|
import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
|
||||||
import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
|
import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
|
||||||
|
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
|
||||||
|
|
||||||
class S3ServiceIntegrationTest {
|
class S3ServiceIntegrationTest {
|
||||||
|
|
||||||
@ -38,6 +41,8 @@ class S3ServiceIntegrationTest {
|
|||||||
|
|
||||||
private final String AWS_BUCKET = "baeldung-tutorial-s3";
|
private final String AWS_BUCKET = "baeldung-tutorial-s3";
|
||||||
|
|
||||||
|
private File file = new File("/Users/user/Document/hello2.txt");
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.openMocks(this);
|
MockitoAnnotations.openMocks(this);
|
||||||
@ -75,6 +80,17 @@ class S3ServiceIntegrationTest {
|
|||||||
verify(s3Client).createBucket(bucketRequest);
|
verify(s3Client).createBucket(bucketRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenVerifyingUploadOfS3Object_thenCorrect() {
|
||||||
|
PutObjectRequest request = PutObjectRequest.builder()
|
||||||
|
.bucket(BUCKET_NAME)
|
||||||
|
.key(KEY_NAME)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
s3Service.putObject(BUCKET_NAME, KEY_NAME, file);
|
||||||
|
verify(s3Client).putObject(request, Path.of(file.toURI()) );
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void whenVerifyingListBuckets_thenCorrect() {
|
void whenVerifyingListBuckets_thenCorrect() {
|
||||||
when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(Collections.emptyList()).build());
|
when(s3Client.listBuckets()).thenReturn(ListBucketsResponse.builder().buckets(Collections.emptyList()).build());
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
<module>aws-miscellaneous</module>
|
<module>aws-miscellaneous</module>
|
||||||
<module>aws-reactive</module>
|
<module>aws-reactive</module>
|
||||||
<module>aws-s3</module>
|
<module>aws-s3</module>
|
||||||
<module>aws-s3-update-object</module>
|
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user