diff --git a/packages/java/auth.provider/pom.xml b/packages/java/auth.provider/pom.xml index f97602a6f..12c74acd1 100644 --- a/packages/java/auth.provider/pom.xml +++ b/packages/java/auth.provider/pom.xml @@ -63,12 +63,6 @@ ${junit-version} test - - org.junit.jupiter - junit-jupiter-engine - ${junit-version} - test - io.github.cdimascio dotenv-java diff --git a/packages/java/auth.provider/src/main/java/com/affinidi/tdk/authProvider/AuthProvider.java b/packages/java/auth.provider/src/main/java/com/affinidi/tdk/authProvider/AuthProvider.java index dd121ddb2..871a803f6 100644 --- a/packages/java/auth.provider/src/main/java/com/affinidi/tdk/authProvider/AuthProvider.java +++ b/packages/java/auth.provider/src/main/java/com/affinidi/tdk/authProvider/AuthProvider.java @@ -26,7 +26,8 @@ import com.google.gson.JsonObject; /** - * This class provides + * This class provides utility functions in order to generate + * projectScopeToken required to call Affinidi Services. * * * @author Priyanka @@ -44,7 +45,7 @@ public class AuthProvider { private String publicKey; private String projectScopeToken; - AuthProvider(Configurations configurations) { + private AuthProvider(Configurations configurations) { this.projectId = configurations.projectId; this.tokenId = configurations.tokenId; this.privateKey = configurations.privateKey; diff --git a/packages/java/common/pom.xml b/packages/java/common/pom.xml index a93811cb9..581cfe69c 100644 --- a/packages/java/common/pom.xml +++ b/packages/java/common/pom.xml @@ -56,6 +56,11 @@ jersey-common 3.1.7 + + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 + org.mockito mockito-core diff --git a/packages/java/common/src/main/java/com/affinidi/tdk/common/EnvironmentUtil.java b/packages/java/common/src/main/java/com/affinidi/tdk/common/EnvironmentUtil.java index 2db81a369..fd806069f 100644 --- a/packages/java/common/src/main/java/com/affinidi/tdk/common/EnvironmentUtil.java +++ b/packages/java/common/src/main/java/com/affinidi/tdk/common/EnvironmentUtil.java @@ -21,8 +21,11 @@ public class EnvironmentUtil { private static Dotenv properties; private static Logger logger = Logger.getLogger(EnvironmentUtil.class.getName()); - static { - properties = Dotenv.load(); + public static Dotenv getProperties(){ + if(properties == null){ + properties = Dotenv.load(); + } + return properties; } @@ -35,12 +38,17 @@ public class EnvironmentUtil { */ public String getConfiguredEnvironment() { String configuredEnvironment = null; - if (properties != null) { - configuredEnvironment = properties.get(Environment.AFFINIDI_TDK_PROPERTY_NAME); - if (configuredEnvironment == null) { - configuredEnvironment = properties.get(Environment.NEXT_AFFINIDI_TDK_PROPERTY_NAME); + try{ + if (getProperties() != null) { + configuredEnvironment = getProperties().get(Environment.AFFINIDI_TDK_PROPERTY_NAME); + if (configuredEnvironment == null) { + configuredEnvironment = getProperties().get(Environment.NEXT_AFFINIDI_TDK_PROPERTY_NAME); + } } + }catch(Exception exception){ + logger.severe("Could not read .env file for TDK environment configuration"); } + if (configuredEnvironment == null) { logger.severe("Could not find environment details for "+configuredEnvironment+". Defaulting to production"); configuredEnvironment = Environment.PRODUCTION.environmentName; @@ -97,7 +105,13 @@ public String getApiGatewayUrlForEnvironment() { * @return String */ public String getValueFromEnvConfig(String propertyName) { - return properties.get(propertyName); + String propertyValue = null; + try{ + propertyValue = getProperties().get(propertyName); + }catch(Exception exception){ + logger.severe("Could not read .env file for "+propertyName); + } + return propertyValue; } /** @@ -111,8 +125,8 @@ private Environment getEnvironmentDetail() { Environment envDetail = (envName != null) ? Environment.getEnvSpecificDetails(envName) : null; if (envDetail == null) { + logger.severe("Could not find environment details for the specified name " + envName+". Hence defaulting to production"); envDetail = Environment.getEnvSpecificDetails(Environment.PRODUCTION.environmentName); - logger.severe("Could not find environment details for the specified name " + envName); } return envDetail; } diff --git a/tests/integration/java/reference/.env.example b/tests/integration/java/reference/.env.example new file mode 100644 index 000000000..b87060e4d --- /dev/null +++ b/tests/integration/java/reference/.env.example @@ -0,0 +1,7 @@ +AFFINIDI_TDK_ENVIRONMENT=prod + +PROJECT_ID="" +KEY_ID= +TOKEN_ID="" +PASSPHRASE="" +PRIVATE_KEY="" \ No newline at end of file diff --git a/tests/integration/java/reference/pom.xml b/tests/integration/java/reference/pom.xml new file mode 100644 index 000000000..2e30b9a65 --- /dev/null +++ b/tests/integration/java/reference/pom.xml @@ -0,0 +1,114 @@ + + + + 4.0.0 + jar + com.affinidi.tdk + reference + 1.0 + reference + https://github.com/affinidi/affinidi-tdk + + + Apache-2.0 + https://github.com/affinidi/affinidi-tdk/blob/main/LICENSE + repo + + + + + + Affinidi + ... + Affinidi + https://affinidi.com + + + + + UTF-8 + 1.8 + ${java.version} + ${java.version} + 1.0 + 1.0 + + + + + + com.affinidi.tdk + common + ${affinidi-common-version} + + + com.affinidi.tdk + auth.provider + ${affinidi-auth-version} + + + com.affinidi.tdk + wallets.client + 1.0.0 + compile + + + com.affinidi.tdk + credential.issuance.client + 1.0.0 + compile + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + + org.apache.maven.plugins + maven-surefire-plugin + + + maven-failsafe-plugin + 3.5.0 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/tests/integration/java/reference/src/main/java/com/affinidi/reference/TdkTestUtil.java b/tests/integration/java/reference/src/main/java/com/affinidi/reference/TdkTestUtil.java new file mode 100644 index 000000000..631606699 --- /dev/null +++ b/tests/integration/java/reference/src/main/java/com/affinidi/reference/TdkTestUtil.java @@ -0,0 +1,116 @@ + +package com.affinidi.reference; + + + + +import com.affinidi.tdk.authProvider.AuthProvider; + +import com.affinidi.tdk.credential.issuance.client.apis.IssuanceApi; + +import com.affinidi.tdk.wallets.client.ApiClient; +import com.affinidi.tdk.wallets.client.Configuration; +import com.affinidi.tdk.wallets.client.apis.WalletApi; +import com.affinidi.tdk.wallets.client.auth.ApiKeyAuth; +import com.affinidi.tdk.wallets.client.models.WalletsListDto; + + +/** +* To execute this class, +1. Ensure that base package of the working directory contains a valid .env file with values for each property +as present in .env.example +2. Ensure that auth-provider and common package jar is present in either the central maven respository +3. Or you can go to the resective pakage and run mvn clean install : in order to deply these jars in local +maven respository +* +* @author Priyanka +* +*/ + +public class TdkTestUtil { + + public static void main(String arg[]){ + try{ + System.out.println("\n\n============================="); + System.out.println("01. Testing Wallet Client using TDK java packages"); + System.out.println("=============================\n\n"); + testWalletClient(); + System.out.println("\n\n============================="); + System.out.println("Wallet Client testing using TDK java packages completed"); + System.out.println("=============================\n\n"); + + + System.out.println("\n\n============================="); + System.out.println("02. Testing Issuance Client using TDK java packages"); + System.out.println("=============================\n\n"); + testIssuanceClient(); + System.out.println("\n\n============================="); + System.out.println("Issuance Client testing using TDK java packages completed"); + System.out.println("=============================\n\n"); + }catch(Exception exception){ + exception.printStackTrace(); + } + } + + public static void testWalletClient() throws Exception{ + + System.out.println("Getting projectScopenToken before calling wallet API"); + + AuthProvider authProvider = new AuthProvider.Configurations().buildWithEnv(); + String projectToken = authProvider.fetchProjectScopedToken(); + System.out.println("ProjectScopeToken > > > > > : "+projectToken); + + // Creating an API Client using the above token + ApiClient defaultClient = Configuration.getDefaultApiClient(); + ApiKeyAuth ProjectTokenAuth = (ApiKeyAuth) defaultClient.getAuthentication("ProjectTokenAuth"); + ProjectTokenAuth.setApiKey(projectToken); + + WalletApi apiInstance = new WalletApi(defaultClient); + String didType = null; + + System.out.println("Calling listWallets "); + WalletsListDto response = apiInstance.listWallets(didType); + System.out.println("Total wallets : "+response.getWallets().size()); + + + System.out.println("Should AuthProvider refresh the token before any further call ? "+authProvider.shouldRefreshToken()); + } + + public static void testIssuanceClient() throws Exception{ + + System.out.println("Getting projectScopenToken before calling issuance API"); + AuthProvider authProvider = new AuthProvider.Configurations().buildWithEnv(); + String projectToken = authProvider.fetchProjectScopedToken(); + + // Creating an API Client using the above token + com.affinidi.tdk.credential.issuance.client.ApiClient issuanceClient = com.affinidi.tdk.credential.issuance.client.Configuration.getDefaultApiClient(); + com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth issueTokenAuth = (com.affinidi.tdk.credential.issuance.client.auth.ApiKeyAuth) issuanceClient.getAuthentication("ProjectTokenAuth"); + issueTokenAuth.setApiKey(projectToken); + + IssuanceApi issuanceApi = new IssuanceApi(issuanceClient); + String projectIdForTesting = "084036a6-a775-478a-9a97-a1323738897f"; + System.out.println(issuanceApi.listIssuance(projectIdForTesting)); + + /* Uncomment to test startIssuance. Provide the relevant projectId and crdential data + StartIssuanceInput startIssuanceInput = new StartIssuanceInput(); + startIssuanceInput.setHolderDid("did:key:zQ3shNb7dEAa7z4LY8eAbPafNM4iSxppwuvndoHkTUUp8Hbt6"); + startIssuanceInput.setClaimMode(ClaimModeEnum.NORMAL); + + StartIssuanceInputDataInner innerData = new StartIssuanceInputDataInner(); + innerData.setCredentialTypeId("AlumniIdentityCard"); + List list = new ArrayList(); + list.add(innerData); + + startIssuanceInput.setData(list); + + System.out.println(issuanceApi.startIssuance("", startIssuanceInput)); + */ + + + + + } + + + +}