Skip to content

Commit 798de72

Browse files
committed
code test coverage threshold increase
1 parent e977062 commit 798de72

File tree

3 files changed

+66
-3
lines changed

3 files changed

+66
-3
lines changed

service/src/main/java/uk/nhs/adaptors/gp2gp/common/storage/S3StorageConnector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ public class S3StorageConnector implements StorageConnector {
1313
private final S3Client s3client;
1414
private final String bucketName;
1515

16-
protected S3StorageConnector(StorageConnectorConfiguration configuration) {
16+
protected S3StorageConnector(S3Client s3client, StorageConnectorConfiguration configuration) {
1717
this.bucketName = configuration.getContainerName();
18-
this.s3client = S3Client.builder().build();
18+
this.s3client = s3client;
1919
}
2020

2121
@Override

service/src/main/java/uk/nhs/adaptors/gp2gp/common/storage/StorageConnectorFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.springframework.beans.factory.FactoryBean;
44

55
import lombok.Setter;
6+
import software.amazon.awssdk.services.s3.S3Client;
67

78
@Setter
89
public class StorageConnectorFactory implements FactoryBean<StorageConnector> {
@@ -15,7 +16,7 @@ public StorageConnector getObject() {
1516
if (storageConnector == null) {
1617
switch (StorageConnectorOptions.enumOf(configuration.getType())) {
1718
case S3:
18-
storageConnector = new S3StorageConnector(configuration);
19+
storageConnector = new S3StorageConnector(S3Client.builder().build(), configuration);
1920
break;
2021
case AZURE:
2122
storageConnector = new AzureStorageConnector();
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package uk.nhs.adaptors.gp2gp.common.storage;
2+
3+
import org.junit.jupiter.api.BeforeEach;
4+
import org.junit.jupiter.api.Test;
5+
import org.mockito.Mock;
6+
import org.mockito.MockitoAnnotations;
7+
import software.amazon.awssdk.core.ResponseInputStream;
8+
import software.amazon.awssdk.services.s3.S3Client;
9+
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
10+
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
11+
import java.io.ByteArrayInputStream;
12+
13+
import static org.junit.Assert.assertEquals;
14+
import static org.junit.Assert.assertThrows;
15+
import static org.junit.jupiter.api.Assertions.assertNotNull;
16+
import static org.mockito.ArgumentMatchers.any;
17+
import static org.mockito.Mockito.mock;
18+
import static org.mockito.Mockito.verify;
19+
import static org.mockito.Mockito.when;
20+
21+
class S3StorageConnectorTest {
22+
23+
private static final String FILE_NAME = "test-file.txt";
24+
private S3StorageConnector s3StorageConnector;
25+
private StorageConnectorConfiguration config;
26+
@Mock
27+
private S3Client mockS3Client;
28+
29+
@BeforeEach
30+
void setUp() {
31+
MockitoAnnotations.openMocks(this);
32+
33+
config = new StorageConnectorConfiguration();
34+
config.setContainerName("s3Bucket");
35+
36+
s3StorageConnector = new S3StorageConnector(mockS3Client, config);
37+
}
38+
39+
40+
@Test
41+
void expectExceptionWhenS3ClientCantDeliverResponse() {
42+
s3StorageConnector = new S3StorageConnector(S3Client.builder().build(), config);
43+
Exception exception = assertThrows(StorageConnectorException.class,
44+
() -> s3StorageConnector.downloadFromStorage("s3File"));
45+
46+
assertEquals("Error occurred downloading from S3 Bucket", exception.getMessage());
47+
}
48+
49+
@Test
50+
void downloadFromStorage() {
51+
var mockResponse = mock(GetObjectResponse.class);
52+
var mockInputStream = new ByteArrayInputStream("dummy-content".getBytes());
53+
var mockResponseInputStream = new ResponseInputStream<>(mockResponse, mockInputStream);
54+
55+
when(mockS3Client.getObject(any(GetObjectRequest.class))).thenReturn(mockResponseInputStream);
56+
57+
var result = s3StorageConnector.downloadFromStorage(FILE_NAME);
58+
59+
assertNotNull(result);
60+
verify(mockS3Client).getObject(any(GetObjectRequest.class));
61+
}
62+
}

0 commit comments

Comments
 (0)