Skip to content

Upgrade Junit4 to 5 #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 24, 2023
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
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ You can download release builds through the [releases section of this](https://g
<dependency>
<groupId>software.amazon.payloadoffloading</groupId>
<artifactId>payloadoffloading-common</artifactId>
<version>1.1.2</version>
<version>1.1.3</version>
<type>jar</type>
</dependency>
```
Expand Down
40 changes: 15 additions & 25 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>software.amazon.payloadoffloading</groupId>
<artifactId>payloadoffloading-common</artifactId>
<version>1.1.2</version>
<version>1.1.3</version>
<packaging>jar</packaging>
<name>Payload offloading common library for AWS</name>
<description>Common library between extended Amazon AWS clients to save payloads up to 2GB on Amazon S3.</description>
Expand Down Expand Up @@ -46,27 +46,15 @@
<version>${aws-java-sdk.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.3.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>pl.pragmatists</groupId>
<artifactId>JUnitParams</artifactId>
<version>1.1.1</version>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand All @@ -77,7 +65,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
Expand All @@ -100,30 +88,32 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<version>3.5.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<!--
TODO-RS: Java 8 is more strict about some javadoc tags.
We'll need to update quite a few to remove this workaround.
-->
<additionalparam>-Xdoclint:none</additionalparam>
<source>8</source>
<doclint>none</doclint>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<version>1.6.13</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.SSEAwsKeyManagementParams;
import org.junit.Before;
import org.junit.Test;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNotSame;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;
import static org.junit.Assert.*;

/**
* Tests the PayloadStorageConfiguration class.
Expand All @@ -19,7 +24,7 @@ public class PayloadStorageConfigurationTest {
private SSEAwsKeyManagementParams sseAwsKeyManagementParams;
private CannedAccessControlList cannedAccessControlList;

@Before
@BeforeEach
public void setup() {
sseAwsKeyManagementParams = new SSEAwsKeyManagementParams(s3ServerSideEncryptionKMSKeyId);
cannedAccessControlList = CannedAccessControlList.BucketOwnerFullControl;
Expand Down Expand Up @@ -54,7 +59,7 @@ public void testCopyConstructor() {

@Test
public void testPayloadSupportEnabled() {
AmazonS3 s3 = mock(AmazonS3.class);
AmazonS3 s3 = mock(AmazonS3.class);
PayloadStorageConfiguration payloadStorageConfiguration = new PayloadStorageConfiguration();
payloadStorageConfiguration.setPayloadSupportEnabled(s3, s3BucketName);

Expand Down Expand Up @@ -91,7 +96,7 @@ public void testSseAwsKeyManagementParams() {

payloadStorageConfiguration.setSSEAwsKeyManagementParams(sseAwsKeyManagementParams);
assertEquals(s3ServerSideEncryptionKMSKeyId, payloadStorageConfiguration.getSSEAwsKeyManagementParams()
.getAwsKmsKeyId());
.getAwsKmsKeyId());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,22 @@
import com.amazonaws.AmazonClientException;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.SSEAwsKeyManagementParams;
import junitparams.JUnitParamsRunner;
import org.hamcrest.Matchers;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;

@RunWith(JUnitParamsRunner.class)
public class S3BackedPayloadStoreTest {
private static final String S3_BUCKET_NAME = "test-bucket-name";
private static final String S3_SERVER_SIDE_ENCRYPTION_KMS_KEY_ID = "test-customer-managed-kms-key-id";
Expand All @@ -26,10 +29,8 @@ public class S3BackedPayloadStoreTest {
private PayloadStore payloadStore;
private S3Dao s3Dao;

@Rule
public final ExpectedException exception = ExpectedException.none();

@Before
@BeforeEach
public void setup() {
s3Dao = mock(S3Dao.class);
payloadStore = new S3BackedPayloadStore(s3Dao, S3_BUCKET_NAME);
Expand All @@ -43,8 +44,7 @@ public void testStoreOriginalPayloadOnSuccess() {
ArgumentCaptor<SSEAwsKeyManagementParams> sseArgsCaptor = ArgumentCaptor.forClass(SSEAwsKeyManagementParams.class);
ArgumentCaptor<CannedAccessControlList> cannedArgsCaptor = ArgumentCaptor.forClass(CannedAccessControlList.class);

verify(s3Dao, times(1)).storeTextInS3(eq(S3_BUCKET_NAME), keyCaptor.capture(),
eq(ANY_PAYLOAD), eq(ANY_PAYLOAD_LENGTH));
verify(s3Dao, times(1)).storeTextInS3(eq(S3_BUCKET_NAME), keyCaptor.capture(), eq(ANY_PAYLOAD), eq(ANY_PAYLOAD_LENGTH));

PayloadS3Pointer expectedPayloadPointer = new PayloadS3Pointer(S3_BUCKET_NAME, keyCaptor.getValue());
assertEquals(expectedPayloadPointer.toJson(), actualPayloadPointer);
Expand All @@ -54,8 +54,7 @@ public void testStoreOriginalPayloadOnSuccess() {
public void testStoreOriginalPayloadWithS3KeyOnSuccess() {
String actualPayloadPointer = payloadStore.storeOriginalPayload(ANY_PAYLOAD, ANY_PAYLOAD_LENGTH, ANY_S3_KEY);

verify(s3Dao, times(1)).storeTextInS3(eq(S3_BUCKET_NAME), eq(ANY_S3_KEY),
eq(ANY_PAYLOAD), eq(ANY_PAYLOAD_LENGTH));
verify(s3Dao, times(1)).storeTextInS3(eq(S3_BUCKET_NAME), eq(ANY_S3_KEY), eq(ANY_PAYLOAD), eq(ANY_PAYLOAD_LENGTH));

PayloadS3Pointer expectedPayloadPointer = new PayloadS3Pointer(S3_BUCKET_NAME, ANY_S3_KEY);
assertEquals(expectedPayloadPointer.toJson(), actualPayloadPointer);
Expand All @@ -64,17 +63,14 @@ public void testStoreOriginalPayloadWithS3KeyOnSuccess() {
@Test
public void testStoreOriginalPayloadDoesAlwaysCreateNewObjects() {
//Store any payload
String anyActualPayloadPointer = payloadStore
.storeOriginalPayload(ANY_PAYLOAD, ANY_PAYLOAD_LENGTH);
String anyActualPayloadPointer = payloadStore.storeOriginalPayload(ANY_PAYLOAD, ANY_PAYLOAD_LENGTH);

//Store any other payload and validate that the pointers are different
String anyOtherActualPayloadPointer = payloadStore
.storeOriginalPayload(ANY_PAYLOAD, ANY_PAYLOAD_LENGTH);
String anyOtherActualPayloadPointer = payloadStore.storeOriginalPayload(ANY_PAYLOAD, ANY_PAYLOAD_LENGTH);

ArgumentCaptor<String> anyOtherKeyCaptor = ArgumentCaptor.forClass(String.class);

verify(s3Dao, times(2)).storeTextInS3(eq(S3_BUCKET_NAME), anyOtherKeyCaptor.capture(),
eq(ANY_PAYLOAD), eq(ANY_PAYLOAD_LENGTH));
verify(s3Dao, times(2)).storeTextInS3(eq(S3_BUCKET_NAME), anyOtherKeyCaptor.capture(), eq(ANY_PAYLOAD), eq(ANY_PAYLOAD_LENGTH));

String anyS3Key = anyOtherKeyCaptor.getAllValues().get(0);
String anyOtherS3Key = anyOtherKeyCaptor.getAllValues().get(1);
Expand All @@ -85,24 +81,16 @@ public void testStoreOriginalPayloadDoesAlwaysCreateNewObjects() {
PayloadS3Pointer anyOtherExpectedPayloadPointer = new PayloadS3Pointer(S3_BUCKET_NAME, anyOtherS3Key);
assertEquals(anyOtherExpectedPayloadPointer.toJson(), anyOtherActualPayloadPointer);

assertThat(anyS3Key, Matchers.not(anyOtherS3Key));
assertThat(anyActualPayloadPointer, Matchers.not(anyOtherActualPayloadPointer));
assertNotEquals(anyS3Key, anyOtherS3Key);
assertNotEquals(anyActualPayloadPointer, anyOtherActualPayloadPointer);
}

@Test
public void testStoreOriginalPayloadOnS3Failure() {
doThrow(new AmazonClientException("S3 Exception"))
.when(s3Dao)
.storeTextInS3(
any(String.class),
any(String.class),
any(String.class),
any(Long.class));

exception.expect(AmazonClientException.class);
exception.expectMessage("S3 Exception");
doThrow(new AmazonClientException("S3 Exception")).when(s3Dao).storeTextInS3(any(String.class), any(String.class), any(String.class), any(Long.class));

//Any S3 Dao exception is thrown back as-is to clients
payloadStore.storeOriginalPayload(ANY_PAYLOAD, ANY_PAYLOAD_LENGTH);
assertThrows(AmazonClientException.class, () -> payloadStore.storeOriginalPayload(ANY_PAYLOAD, ANY_PAYLOAD_LENGTH), "S3 Exception");
}

@Test
Expand All @@ -122,21 +110,17 @@ public void testGetOriginalPayloadOnSuccess() {

@Test
public void testGetOriginalPayloadIncorrectPointer() {
exception.expect(AmazonClientException.class);
exception.expectMessage(INCORRECT_POINTER_EXCEPTION_MSG);
//Any S3 Dao exception is thrown back as-is to clients
payloadStore.getOriginalPayload("IncorrectPointer");
assertThrows(AmazonClientException.class, () -> payloadStore.getOriginalPayload("IncorrectPointer"), INCORRECT_POINTER_EXCEPTION_MSG);
verifyNoInteractions(s3Dao);
}

@Test
public void testGetOriginalPayloadOnS3Failure() {
when(s3Dao.getTextFromS3(any(String.class), any(String.class))).thenThrow(new AmazonClientException("S3 Exception"));
exception.expect(AmazonClientException.class);
exception.expectMessage("S3 Exception");
//Any S3 Dao exception is thrown back as-is to clients
PayloadS3Pointer anyPointer = new PayloadS3Pointer(S3_BUCKET_NAME, ANY_S3_KEY);
payloadStore.getOriginalPayload(anyPointer.toJson());
assertThrows(AmazonClientException.class, () -> payloadStore.getOriginalPayload(anyPointer.toJson()), "S3 Exception");
}

@Test
Expand All @@ -154,9 +138,7 @@ public void testDeleteOriginalPayloadOnSuccess() {

@Test
public void testDeleteOriginalPayloadIncorrectPointer() {
exception.expect(AmazonClientException.class);
exception.expectMessage(INCORRECT_POINTER_EXCEPTION_MSG);
payloadStore.deleteOriginalPayload("IncorrectPointer");
assertThrows(AmazonClientException.class, () -> payloadStore.deleteOriginalPayload("IncorrectPointer"), INCORRECT_POINTER_EXCEPTION_MSG);
verifyNoInteractions(s3Dao);
}
}
16 changes: 8 additions & 8 deletions src/test/java/software/amazon/payloadoffloading/S3DaoTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.SSEAwsKeyManagementParams;
import junitparams.JUnitParamsRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

@RunWith(JUnitParamsRunner.class)
public class S3DaoTest {

private static String s3ServerSideEncryptionKMSKeyId = "test-customer-managed-kms-key-id";
Expand All @@ -26,7 +26,7 @@ public class S3DaoTest {
private AmazonS3 s3Client;
private S3Dao dao;

@Before
@BeforeEach
public void setup() {
s3Client = mock(AmazonS3.class);
sseAwsKeyManagementParams = new SSEAwsKeyManagementParams(s3ServerSideEncryptionKMSKeyId);
Expand Down