From fd358ed03d664f38600bdcc6a6a84b9786145d20 Mon Sep 17 00:00:00 2001 From: Aurelia Kaliszuk Date: Tue, 19 Aug 2025 12:54:28 +0200 Subject: [PATCH 1/3] GitHub action for auto testing java when PR created. --- .github/workflows/test.yml | 25 +++++++++++++++++++++++++ .gitignore | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..33057b60 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,25 @@ +name: Test Workflow + +on: + pull_request: + +jobs: + build-and-test: + runs-on: ubuntu-latest + environment: dev + + steps: + - uses: actions/checkout@v2 + + - name: Build Docker image + run: docker build -t java . + + - name: Run tests using Docker + run: | + docker run \ + -e VOUCHERIFY_HOST=${{ vars.VOUCHERIFY_HOST }} \ + -e X_APP_ID=${{ secrets.X_APP_ID }} \ + -e X_APP_TOKEN=${{ secrets.X_APP_TOKEN }} \ + -e X_MANAGEMENT_ID=${{ secrets.X_MANAGEMENT_ID }} \ + -e X_MANAGEMENT_TOKEN=${{ secrets.X_MANAGEMENT_TOKEN }} \ + java \ No newline at end of file diff --git a/.gitignore b/.gitignore index 636be6ad..cb833a5f 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ build # Other -/.github/ +/.github/workflows/maven.yml /.openapi-generator/ /.openapi-generator-ignore /.travis.yml @@ -30,3 +30,4 @@ build /.env /.idea gradle.properties + From fc653a456ed80b4d149137fab7f76946325f79aa Mon Sep 17 00:00:00 2001 From: Aurelia Kaliszuk Date: Tue, 19 Aug 2025 13:08:30 +0200 Subject: [PATCH 2/3] Adjust docker configuration to run gh action. --- .dockerignore | 11 ++++++----- Dockerfile | 4 +--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.dockerignore b/.dockerignore index efc9bbcc..51fb2b57 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,3 @@ -*.class - # Mobile Tools for Java (J2ME) .mtj.tmp/ @@ -7,16 +5,16 @@ *.jar *.war *.ear +*.md +*.png # exclude jar for gradle wrapper !gradle/wrapper/*.jar -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* # build files **/target -target .gradle build @@ -26,7 +24,10 @@ build /.openapi-generator/ /.openapi-generator-ignore /.travis.yml -/git_push.sh /.idea +/git_push.sh +/api +/docs +/gradle gradle.properties .DS_Store diff --git a/Dockerfile b/Dockerfile index 6d53668b..7c15ca6a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,9 +9,7 @@ RUN apt-get update && \ WORKDIR /app -COPY .env . -COPY pom.xml . -COPY ./src ./src +COPY . . RUN mvn test From 4c7ae0e20268ef9313d7ab643f7890265d4c53c0 Mon Sep 17 00:00:00 2001 From: Aurelia Kaliszuk Date: Tue, 19 Aug 2025 14:06:12 +0200 Subject: [PATCH 3/3] Rebuild some secrets configuration to ensure that gh actions and local both working. --- .gitignore | 2 +- .../java/io/voucherify/ManagementTest.java | 45 ++--------------- src/test/java/io/voucherify/Utils.java | 49 ++++++++++++------- 3 files changed, 37 insertions(+), 59 deletions(-) diff --git a/.gitignore b/.gitignore index cb833a5f..5a6b5442 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,6 @@ build /.travis.yml /git_push.sh /.env -/.idea +*.idea gradle.properties diff --git a/src/test/java/io/voucherify/ManagementTest.java b/src/test/java/io/voucherify/ManagementTest.java index 690325e9..bde5300c 100644 --- a/src/test/java/io/voucherify/ManagementTest.java +++ b/src/test/java/io/voucherify/ManagementTest.java @@ -1,15 +1,11 @@ package io.voucherify; import io.voucherify.data.VoucherifyStore; -import io.voucherify.helpers.JsonHelper; - import org.junit.jupiter.api.*; import org.junit.jupiter.api.Order; - import io.voucherify.client.ApiClient; import io.voucherify.client.api.ManagementApi; import io.voucherify.client.model.*; -import io.voucherify.client.model.ManagementProjectsCustomEventSchemasCreateResponseBody.ObjectEnum; import io.voucherify.client.model.ManagementProjectsMetadataSchemaDefinition.TypeEnum; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -19,11 +15,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Properties; -import java.io.InputStream; -import java.util.Properties; -import java.io.FileInputStream; -import java.io.IOException; @org.junit.jupiter.api.Order(14) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) @@ -32,45 +23,17 @@ public class ManagementTest { public static ManagementApi managementApi = null; public static String projectId = null; public static String clusterId = null; - private static Properties properties = new Properties(); - private static InputStream input = null; @BeforeAll public static void beforeAll() { try { - // Load properties from .env file if it exists - try { - String dir = System.getProperty("user.dir"); - input = new FileInputStream(dir + "/.env"); - properties.load(input); - } catch (IOException ex) { - System.out.println("[INFO] No .env file found, using environment variables"); - ex.printStackTrace(); - } finally { - if (input != null) { - try { - input.close(); - } catch (IOException e) { - System.err.println("[WARN] Failed to close .env file: " + e.getMessage()); - } - } - } - defaultClient = Utils.getClient(); managementApi = new ManagementApi(defaultClient); - // Get VOUCHERIFY_HOST from environment variables or .env file - String voucherifyHost = System.getenv("VOUCHERIFY_HOST"); - if ((voucherifyHost == null || voucherifyHost.isEmpty()) && properties != null) { - voucherifyHost = properties.getProperty("VOUCHERIFY_HOST"); - } - - if (voucherifyHost != null && !voucherifyHost.isEmpty()) { - // Extract cluster ID from host (e.g., https://dev2.api.voucherify.io -> dev2) - String[] parts = voucherifyHost.split("//"); - if (parts.length > 1) { - clusterId = parts[1].split("\\.")[0]; - } + // Extract cluster ID from host (e.g., https://dev2.api.voucherify.io -> dev2) + String[] parts = defaultClient.getBasePath().split("//"); + if (parts.length > 1) { + clusterId = parts[1].split("\\.")[0]; } // Default to 'eu1' if clusterId couldn't be determined or is too short diff --git a/src/test/java/io/voucherify/Utils.java b/src/test/java/io/voucherify/Utils.java index 9f7a5d67..da97f7e9 100644 --- a/src/test/java/io/voucherify/Utils.java +++ b/src/test/java/io/voucherify/Utils.java @@ -3,9 +3,11 @@ import io.voucherify.client.ApiClient; import io.voucherify.client.Configuration; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Optional; import java.util.Properties; public class Utils { @@ -29,30 +31,43 @@ public static String getAlphaNumericString(int n) { public static ApiClient getClient() { Properties properties = new Properties(); - InputStream input = null; try { String dir = System.getProperty("user.dir"); - input = new FileInputStream(dir + "/.env"); + InputStream input = Files.newInputStream(Paths.get(dir + "/.env")); properties.load(input); } catch (IOException ex) { - ex.printStackTrace(); - } finally { - if (input != null) { - try { - input.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + System.out.println("[INFO] Missing .env file"); } + String voucherifyHost = Optional + .ofNullable(System.getenv("VOUCHERIFY_HOST")) + .orElse(properties.getProperty("VOUCHERIFY_HOST")); + + String xAppId = Optional + .ofNullable(System.getenv("X_APP_ID")) + .orElse(properties.getProperty("X_APP_ID")); + + String xAppToken = Optional + .ofNullable(System.getenv("X_APP_TOKEN")) + .orElse(properties.getProperty("X_APP_TOKEN")); + + String xManagementId = Optional + .ofNullable(System.getenv("X_MANAGEMENT_ID")) + .orElse(properties.getProperty("X_MANAGEMENT_ID")); + + String xManagementToken = Optional + .ofNullable(System.getenv("X_MANAGEMENT_TOKEN")) + .orElse(properties.getProperty("X_MANAGEMENT_TOKEN")); + + System.out.println("[INFO] Using HOST " + voucherifyHost); + ApiClient defaultClient = Configuration.getDefaultApiClient(); - defaultClient.setBasePath(properties.getProperty("VOUCHERIFY_HOST")); - defaultClient.setAuthentication("X-App-Id", properties.getProperty("X_APP_ID")); - defaultClient.setAuthentication("X-App-Token", properties.getProperty("X_APP_TOKEN")); - defaultClient.setAuthentication("X-Management-Id", properties.getProperty("X_MANAGEMENT_ID")); - defaultClient.setAuthentication("X-Management-Token", properties.getProperty("X_MANAGEMENT_TOKEN")); + defaultClient.setBasePath(voucherifyHost); + defaultClient.setAuthentication("X-App-Id", xAppId); + defaultClient.setAuthentication("X-App-Token", xAppToken); + defaultClient.setAuthentication("X-Management-Id", xManagementId); + defaultClient.setAuthentication("X-Management-Token", xManagementToken); return defaultClient; }