diff --git a/provider/notification-aws/build-aws/buildspec.yaml b/provider/notification-aws/build-aws/buildspec.yaml index cd48f3f69dbe2eb5ff01026a8a0b1effa843a6fd..c7088fac08e82bb35f1a1e9fea66823b50c76780 100644 --- a/provider/notification-aws/build-aws/buildspec.yaml +++ b/provider/notification-aws/build-aws/buildspec.yaml @@ -76,8 +76,9 @@ phases: - if [ "$GIT_SECRETS_SCAN_RESULT" = "FAILED" ]; then echo "Secrets detected!" && exit 1; fi - echo "Building primary service assemblies..." - - mvn -ntp -B test install sonar:sonar -pl .,notification-core,provider/notification-aws -Ddeployment.environment=prod -Dsonar.login=${SONAR_USERNAME} -Dsonar.password=${SONAR_PASSWORD} -Dsonar.branch.name=${BRANCH_NAME} - + - mvn -ntp -B test install -pl .,notification-core,provider/notification-aws -Ddeployment.environment=prod + - mvn sonar:sonar -pl .,provider/notification-aws -Dsonar.scm.provider=git -Dsonar.login=${SONAR_USERNAME} -Dsonar.password=${SONAR_PASSWORD} -Dsonar.branch.name=${BRANCH_NAME} + - echo "Building integration testing assemblies and gathering artifacts..." - ./testing/notification-test-aws/build-aws/prepare-dist.sh diff --git a/provider/notification-aws/lombok.config b/provider/notification-aws/lombok.config new file mode 100644 index 0000000000000000000000000000000000000000..0c2484f841602f9ef9b8613e98c78a4c2fbdc7b5 --- /dev/null +++ b/provider/notification-aws/lombok.config @@ -0,0 +1,2 @@ + config.stopBubbling = true + lombok.addLombokGeneratedAnnotation = true diff --git a/provider/notification-aws/pom.xml b/provider/notification-aws/pom.xml index accdd6256c04e550e499f2e88cb74186100e49c8..52c3947c3440551c1923397f70a032906452f2da 100644 --- a/provider/notification-aws/pom.xml +++ b/provider/notification-aws/pom.xml @@ -203,10 +203,6 @@ <goals> <goal>prepare-agent</goal> </goals> - <configuration> - <!-- Sets the VM argument line used when unit tests are run. --> - <propertyName>jacocoArgLine</propertyName> - </configuration> </execution> <execution> <id>report</id> diff --git a/provider/notification-aws/src/main/java/org/opengroup/osdu/notification/provider/aws/utils/AwsCognitoClient.java b/provider/notification-aws/src/main/java/org/opengroup/osdu/notification/provider/aws/utils/AwsCognitoClient.java index a5975d3c94ce71e6422210f69b030c4161a22525..bafadd6377fcc514926c8cacd27aaedc021a990f 100644 --- a/provider/notification-aws/src/main/java/org/opengroup/osdu/notification/provider/aws/utils/AwsCognitoClient.java +++ b/provider/notification-aws/src/main/java/org/opengroup/osdu/notification/provider/aws/utils/AwsCognitoClient.java @@ -75,7 +75,7 @@ public class AwsCognitoClient { return provider; } - public static AWSCognitoIdentityProvider generateCognitoClient(String region) + public AWSCognitoIdentityProvider generateCognitoClient(String region) { if (System.getenv("AWS_COGNITO_REGION") != null) { region = System.getenv("AWS_COGNITO_REGION"); diff --git a/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/security/KmsHelperTest.java b/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/security/KmsHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..fd641b020c0bf698cab637ccb4b71abeb1068a6f --- /dev/null +++ b/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/security/KmsHelperTest.java @@ -0,0 +1,77 @@ +package org.opengroup.osdu.notification.provider.aws.security; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import java.nio.ByteBuffer; + +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedConstruction; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; +import org.opengroup.osdu.core.aws.ssm.K8sLocalParameterProvider; +import org.opengroup.osdu.core.common.model.http.DpsHeaders; +import org.powermock.reflect.Whitebox; + +import com.amazonaws.SdkClientException; +import com.amazonaws.services.kms.AWSKMS;; + +@RunWith(MockitoJUnitRunner.class) +public class KmsHelperTest { + + @InjectMocks + private KmsHelper kmsHelper; + + @Mock + private DpsHeaders dpsHeaders; + + @Mock + private ByteBuffer ciphertext; + + private static MockedConstruction<K8sLocalParameterProvider> mockedConstruction; + + + @BeforeClass + public static void setup() { + mockedConstruction = Mockito.mockConstruction(K8sLocalParameterProvider.class, + (mock, context) -> { + //implement initializer for mock. Set return value for object A mock methods + when(mock.getParameterAsString("notification-sqs-url")).thenReturn( + "test-sqs-url"); + }); + } + + @AfterClass + public static void close(){ + mockedConstruction.close(); + } + + @Before + public void initTest() { + Whitebox.setInternalState(kmsHelper, "amazonRegion", "us-east-1"); + Whitebox.setInternalState(kmsHelper, "kmsEndpoint", "aws.kms.endpoint"); + } + + @Test + public void init_InitalizesAsExpected() { + kmsHelper.init(); + } + + @Test(expected = SdkClientException.class) + public void encrypt_EncryptsData() { + kmsHelper.init(); + kmsHelper.encrypt("plain text"); + } + + @Test(expected = SdkClientException.class ) + public void decryptThorwsFormMockedKmsClient() { + kmsHelper.init(); + kmsHelper.decrypt(ciphertext, "dataPartitionId"); + } +} diff --git a/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/security/ThreadSignatureServiceTest.java b/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/security/ThreadSignatureServiceTest.java index fe7d7e5c15c0851183643bfd6ce35b7cca029f11..dc7551e1d66bf4776917268133ffad2999761179 100644 --- a/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/security/ThreadSignatureServiceTest.java +++ b/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/security/ThreadSignatureServiceTest.java @@ -16,6 +16,10 @@ package org.opengroup.osdu.notification.provider.aws.security; import static org.junit.Assert.assertNotNull; import static org.mockito.ArgumentMatchers.any; +import java.security.NoSuchAlgorithmException; + +import javax.crypto.Mac; + import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; @@ -24,8 +28,7 @@ import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; import org.opengroup.osdu.core.common.cryptographic.SignatureServiceException; -import javax.crypto.Mac; -import java.security.NoSuchAlgorithmException; +import com.google.gson.JsonSyntaxException; @RunWith(MockitoJUnitRunner.class) public class ThreadSignatureServiceTest { @@ -106,4 +109,8 @@ public class ThreadSignatureServiceTest { threadSignatureService.verifyHmacSignature("invalidHmac", SECRET); } + @Test(expected = JsonSyntaxException.class) + public void verifyHmacSignature_() throws SignatureServiceException { + threadSignatureService.verifyHmacSignature(HMAC, SECRET); + } } diff --git a/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/utils/AwsCognitoClientTest.java b/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/utils/AwsCognitoClientTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4d167e1a1f1f384847b4f6ed31c7c28d4d167999 --- /dev/null +++ b/provider/notification-aws/src/test/java/org/opengroup/osdu/notification/provider/aws/utils/AwsCognitoClientTest.java @@ -0,0 +1,69 @@ +package org.opengroup.osdu.notification.provider.aws.utils; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import com.amazonaws.services.cognitoidp.AWSCognitoIdentityProvider; +import com.amazonaws.services.sqs.AmazonSQS; + +import io.jsonwebtoken.lang.Assert; + +@RunWith(MockitoJUnitRunner.class) +public class AwsCognitoClientTest { + + private AwsCognitoClient awsCognitoClient; + + @Mock + private AmazonSQS sqsClient; + + @Mock + private AWSCognitoIdentityProvider provider; + + @Before + public void setUp() { + awsCognitoClient = new AwsCognitoClient("region", "awsCognitoClientId", "awsCognitoAuthFlow", + "awsCognitoAuthParamsUser", "awsCognitoAuthParamsPassword"); + } + + @Test + public void constuctorCreatesObject() { + Assert.isInstanceOf(AwsCognitoClient.class, awsCognitoClient); + } + + @Test + public void getToken() { + awsCognitoClient.provider = provider; + when(provider.initiateAuth(any())).thenReturn(null); + String expected = ""; + String actual = awsCognitoClient.getToken("username", "password", "tokenType"); + assertEquals(expected, actual); + } + + @Test + public void getProvider() { + AWSCognitoIdentityProvider object = awsCognitoClient.getProvider(); + assertTrue(object instanceof AWSCognitoIdentityProvider); + } + + @Test + public void generateCognitoClient() { + AWSCognitoIdentityProvider object = awsCognitoClient.generateCognitoClient("us-east-1"); + assertTrue(object instanceof AWSCognitoIdentityProvider); + } + + //the code on production side seems useless. hence useless test here just for coverage. + @Test + public void setPassword() { + awsCognitoClient.provider = provider; + when(provider.adminSetUserPassword(any())).thenReturn(null); + awsCognitoClient.setPassword("username", "password", "user-pool-id"); + } +}