diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..e1d1cc7 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/README.md b/README.md index 3f17447..be01e11 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ You can download release builds through the [releases section of this](https://g software.amazon.payloadoffloading payloadoffloading-common - 1.1.2 + 1.1.3 jar ``` diff --git a/pom.xml b/pom.xml index 08c4eff..a7bc784 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ software.amazon.payloadoffloading payloadoffloading-common - 1.1.2 + 1.1.3 jar Payload offloading common library for AWS Common library between extended Amazon AWS clients to save payloads up to 2GB on Amazon S3. @@ -46,27 +46,15 @@ ${aws-java-sdk.version} - junit - junit - 4.12 + org.junit.jupiter + junit-jupiter + 5.9.2 test org.mockito mockito-core - 3.3.3 - test - - - org.hamcrest - hamcrest-all - 1.3 - test - - - pl.pragmatists - JUnitParams - 1.1.1 + 5.2.0 test @@ -77,7 +65,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.8.1 + 3.11.0 1.8 1.8 @@ -100,10 +88,15 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0 + org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 3.5.0 attach-javadocs @@ -111,11 +104,8 @@ jar - - -Xdoclint:none + 8 + none @@ -123,7 +113,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.7 + 1.6.13 true ossrh diff --git a/src/test/java/software/amazon/payloadoffloading/PayloadStorageConfigurationTest.java b/src/test/java/software/amazon/payloadoffloading/PayloadStorageConfigurationTest.java index 1f1ee95..9083ef5 100644 --- a/src/test/java/software/amazon/payloadoffloading/PayloadStorageConfigurationTest.java +++ b/src/test/java/software/amazon/payloadoffloading/PayloadStorageConfigurationTest.java @@ -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. @@ -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; @@ -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); @@ -91,7 +96,7 @@ public void testSseAwsKeyManagementParams() { payloadStorageConfiguration.setSSEAwsKeyManagementParams(sseAwsKeyManagementParams); assertEquals(s3ServerSideEncryptionKMSKeyId, payloadStorageConfiguration.getSSEAwsKeyManagementParams() - .getAwsKmsKeyId()); + .getAwsKmsKeyId()); } @Test diff --git a/src/test/java/software/amazon/payloadoffloading/S3BackedPayloadStoreTest.java b/src/test/java/software/amazon/payloadoffloading/S3BackedPayloadStoreTest.java index 1b0e282..3f4beac 100644 --- a/src/test/java/software/amazon/payloadoffloading/S3BackedPayloadStoreTest.java +++ b/src/test/java/software/amazon/payloadoffloading/S3BackedPayloadStoreTest.java @@ -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"; @@ -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); @@ -43,8 +44,7 @@ public void testStoreOriginalPayloadOnSuccess() { ArgumentCaptor sseArgsCaptor = ArgumentCaptor.forClass(SSEAwsKeyManagementParams.class); ArgumentCaptor 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); @@ -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); @@ -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 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); @@ -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 @@ -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 @@ -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); } } \ No newline at end of file diff --git a/src/test/java/software/amazon/payloadoffloading/S3DaoTest.java b/src/test/java/software/amazon/payloadoffloading/S3DaoTest.java index eb1fdb8..e8d953e 100644 --- a/src/test/java/software/amazon/payloadoffloading/S3DaoTest.java +++ b/src/test/java/software/amazon/payloadoffloading/S3DaoTest.java @@ -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"; @@ -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);