From 7b1b3bc39adb2c3653a52a9ed9422ff36ee84dde Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Thu, 11 Sep 2025 14:05:36 +0000 Subject: [PATCH 1/6] [AUTOMATED] Private Release 2.0.0-dev-903835b --- v3/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/pom.xml b/v3/pom.xml index fb409cb5..79aedf65 100644 --- a/v3/pom.xml +++ b/v3/pom.xml @@ -11,7 +11,7 @@ skyflow-java - 3.0.0-beta.4 + 2.0.0-dev.903835b jar ${project.groupId}:${project.artifactId} Skyflow V3 SDK for the Java programming language From 3fa14f8419db69cbc08b3fc55994f35c087f8fa7 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow <156889717+saileshwar-skyflow@users.noreply.github.com> Date: Fri, 19 Sep 2025 12:25:02 +0530 Subject: [PATCH 2/6] SK-2291: Add unit test cases for V3 SDK. (#234) * SK-2291: add unit test cases --- .../test/java/com/skyflow/SkyflowTests.java | 0 .../java/com/skyflow/VaultClientTests.java | 0 .../java/com/skyflow/utils/UtilsTests.java | 0 .../controller/VaultControllerTests.java | 20 +- .../vault/data/DetokenizeRequestTests.java | 179 ++++++++++++++++++ .../com/skyflow/vault/data/InsertTests.java | 0 6 files changed, 184 insertions(+), 15 deletions(-) rename v3/{ => src}/test/java/com/skyflow/SkyflowTests.java (100%) rename v3/{ => src}/test/java/com/skyflow/VaultClientTests.java (100%) rename v3/{ => src}/test/java/com/skyflow/utils/UtilsTests.java (100%) rename v3/{ => src}/test/java/com/skyflow/vault/controller/VaultControllerTests.java (94%) create mode 100644 v3/src/test/java/com/skyflow/vault/data/DetokenizeRequestTests.java rename v3/{ => src}/test/java/com/skyflow/vault/data/InsertTests.java (100%) diff --git a/v3/test/java/com/skyflow/SkyflowTests.java b/v3/src/test/java/com/skyflow/SkyflowTests.java similarity index 100% rename from v3/test/java/com/skyflow/SkyflowTests.java rename to v3/src/test/java/com/skyflow/SkyflowTests.java diff --git a/v3/test/java/com/skyflow/VaultClientTests.java b/v3/src/test/java/com/skyflow/VaultClientTests.java similarity index 100% rename from v3/test/java/com/skyflow/VaultClientTests.java rename to v3/src/test/java/com/skyflow/VaultClientTests.java diff --git a/v3/test/java/com/skyflow/utils/UtilsTests.java b/v3/src/test/java/com/skyflow/utils/UtilsTests.java similarity index 100% rename from v3/test/java/com/skyflow/utils/UtilsTests.java rename to v3/src/test/java/com/skyflow/utils/UtilsTests.java diff --git a/v3/test/java/com/skyflow/vault/controller/VaultControllerTests.java b/v3/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java similarity index 94% rename from v3/test/java/com/skyflow/vault/controller/VaultControllerTests.java rename to v3/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java index 605d29eb..938799b6 100644 --- a/v3/test/java/com/skyflow/vault/controller/VaultControllerTests.java +++ b/v3/src/test/java/com/skyflow/vault/controller/VaultControllerTests.java @@ -19,7 +19,6 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; -import java.util.Scanner; import static org.junit.Assert.*; @@ -61,15 +60,6 @@ private void writeEnv(String content) { } catch (IOException e) { throw new RuntimeException(e); } - // Print the contents of the .env file - try (Scanner scanner = new Scanner(envFile)) { - System.out.println("Current .env contents:"); - while (scanner.hasNextLine()) { - System.out.println(scanner.nextLine()); - } - } catch (IOException e) { - System.out.println("Could not read .env file: " + e.getMessage()); - } } private VaultController createController() throws SkyflowException { @@ -258,7 +248,7 @@ public void testBatchSizeExceedsMax() throws Exception { // Ignore, Testing concurrency/batch config } - assertEquals(1000, getPrivateInt(controller, "insertBatchSize")); + assertEquals(Constants.MAX_INSERT_BATCH_SIZE.intValue(), getPrivateInt(controller, "insertBatchSize")); } @Test @@ -274,7 +264,7 @@ public void testConcurrencyExceedsMax() throws Exception { // Ignore, Testing concurrency/batch config } - assertEquals(1, getPrivateInt(controller, "insertConcurrencyLimit")); + assertEquals(Constants.INSERT_CONCURRENCY_LIMIT.intValue(), getPrivateInt(controller, "insertConcurrencyLimit")); } @Test @@ -289,7 +279,7 @@ public void testBatchSizeZeroOrNegative() throws Exception { // Ignore, Testing concurrency/batch config } - assertEquals(50, getPrivateInt(controller, "insertBatchSize")); + assertEquals(Constants.INSERT_BATCH_SIZE.intValue(), getPrivateInt(controller, "insertBatchSize")); writeEnv("INSERT_BATCH_SIZE=-5"); @@ -299,7 +289,7 @@ public void testBatchSizeZeroOrNegative() throws Exception { // Ignore, Testing concurrency/batch config } - assertEquals(50, getPrivateInt(controller, "insertBatchSize")); + assertEquals(Constants.INSERT_BATCH_SIZE.intValue(), getPrivateInt(controller, "insertBatchSize")); } @Test @@ -378,7 +368,7 @@ public void testHighConcurrencyForLowRecords() throws Exception { // Only 10 batches needed, so concurrency should be clamped to 10 assertEquals(1000, getPrivateInt(controller, "insertBatchSize")); - assertEquals(10, getPrivateInt(controller, "insertConcurrencyLimit")); + assertEquals(Constants.MAX_INSERT_CONCURRENCY_LIMIT.intValue(), getPrivateInt(controller, "insertConcurrencyLimit")); } diff --git a/v3/src/test/java/com/skyflow/vault/data/DetokenizeRequestTests.java b/v3/src/test/java/com/skyflow/vault/data/DetokenizeRequestTests.java new file mode 100644 index 00000000..fc729a08 --- /dev/null +++ b/v3/src/test/java/com/skyflow/vault/data/DetokenizeRequestTests.java @@ -0,0 +1,179 @@ +package com.skyflow.vault.data; + +import com.skyflow.errors.ErrorCode; +import com.skyflow.errors.ErrorMessage; +import com.skyflow.errors.SkyflowException; +import com.skyflow.utils.validations.Validations; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class DetokenizeRequestTests { + @Test + public void testDetokenizeRequestBuilderAndGetters() { + List tokens = Arrays.asList("token1", "token2"); + TokenGroupRedactions group = TokenGroupRedactions.builder() + .tokenGroupName("group1") + .redaction("PLAIN_TEXT") + .build(); + List groupRedactions = Collections.singletonList(group); + + DetokenizeRequest request = DetokenizeRequest.builder() + .tokens(tokens) + .tokenGroupRedactions(groupRedactions) + .build(); + + Assert.assertEquals(tokens, request.getTokens()); + Assert.assertEquals(groupRedactions, request.getTokenGroupRedactions()); + } + + @Test + public void testTokenGroupRedactionsBuilderAndGetters() { + TokenGroupRedactions group = TokenGroupRedactions.builder() + .tokenGroupName("groupA") + .redaction("MASKED") + .build(); + Assert.assertEquals("groupA", group.getTokenGroupName()); + Assert.assertEquals("MASKED", group.getRedaction()); + } + + @Test + public void testValidateDetokenizeRequestValid() { + try { + List tokens = Arrays.asList("token1", "token2"); + TokenGroupRedactions group = TokenGroupRedactions.builder() + .tokenGroupName("group1") + .redaction("PLAIN_TEXT") + .build(); + List groupRedactions = Collections.singletonList(group); + DetokenizeRequest request = DetokenizeRequest.builder() + .tokens(tokens) + .tokenGroupRedactions(groupRedactions) + .build(); + Validations.validateDetokenizeRequest(request); + } catch (SkyflowException e) { + Assert.fail("Should not have thrown exception for valid request"); + } + } + + @Test + public void testValidateDetokenizeRequestNull() { + try { + Validations.validateDetokenizeRequest(null); + Assert.fail("Should have thrown exception for null request"); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.DetokenizeRequestNull.getMessage(), e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequestEmptyTokens() { + try { + DetokenizeRequest request = DetokenizeRequest.builder() + .tokens(new ArrayList<>()) + .build(); + Validations.validateDetokenizeRequest(request); + Assert.fail("Should have thrown exception for empty tokens"); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.EmptyDetokenizeData.getMessage(), e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequestNullOrEmptyToken() { + try { + List tokens = Arrays.asList("token1", null, ""); + DetokenizeRequest request = DetokenizeRequest.builder() + .tokens(tokens) + .build(); + Validations.validateDetokenizeRequest(request); + Assert.fail("Should have thrown exception for null/empty token"); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.EmptyTokenInDetokenizeData.getMessage(), e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequestTokensSizeExceed() { + try { + List tokens = new ArrayList<>(); + for (int i = 0; i < 10001; i++) { + tokens.add("token" + i); + } + DetokenizeRequest request = DetokenizeRequest.builder() + .tokens(tokens) + .build(); + Validations.validateDetokenizeRequest(request); + Assert.fail("Should have thrown exception for tokens size exceed"); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.TokensSizeExceedError.getMessage(), e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequestNullGroupRedaction() { + try { + List tokens = Arrays.asList("token1"); + List groupRedactions = Arrays.asList((TokenGroupRedactions) null); + DetokenizeRequest request = DetokenizeRequest.builder() + .tokens(tokens) + .tokenGroupRedactions(groupRedactions) + .build(); + Validations.validateDetokenizeRequest(request); + Assert.fail("Should have thrown exception for null group redaction"); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.NullTokenGroupRedactions.getMessage(), e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequestEmptyGroupName() { + try { + List tokens = Arrays.asList("token1"); + TokenGroupRedactions group = TokenGroupRedactions.builder() + .tokenGroupName("") + .redaction("PLAIN_TEXT") + .build(); + List groupRedactions = Collections.singletonList(group); + DetokenizeRequest request = DetokenizeRequest.builder() + .tokens(tokens) + .tokenGroupRedactions(groupRedactions) + .build(); + Validations.validateDetokenizeRequest(request); + Assert.fail("Should have thrown exception for empty group name"); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.NullTokenGroupNameInTokenGroup.getMessage(), e.getMessage()); + } + } + + @Test + public void testValidateDetokenizeRequestEmptyRedaction() { + try { + List tokens = Arrays.asList("token1"); + TokenGroupRedactions group = TokenGroupRedactions.builder() + .tokenGroupName("group1") + .redaction("") + .build(); + List groupRedactions = Collections.singletonList(group); + DetokenizeRequest request = DetokenizeRequest.builder() + .tokens(tokens) + .tokenGroupRedactions(groupRedactions) + .build(); + Validations.validateDetokenizeRequest(request); + Assert.fail("Should have thrown exception for empty redaction"); + } catch (SkyflowException e) { + Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode()); + Assert.assertEquals(ErrorMessage.NullRedactionInTokenGroup.getMessage(), e.getMessage()); + } + } +} diff --git a/v3/test/java/com/skyflow/vault/data/InsertTests.java b/v3/src/test/java/com/skyflow/vault/data/InsertTests.java similarity index 100% rename from v3/test/java/com/skyflow/vault/data/InsertTests.java rename to v3/src/test/java/com/skyflow/vault/data/InsertTests.java From b7d34bba490d59b964055d3627075447bfc72fae Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Fri, 19 Sep 2025 06:55:16 +0000 Subject: [PATCH 3/6] [AUTOMATED] Private Release 2.0.0-dev-3fa14f8 --- v3/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/pom.xml b/v3/pom.xml index 79aedf65..b4cf9097 100644 --- a/v3/pom.xml +++ b/v3/pom.xml @@ -11,7 +11,7 @@ skyflow-java - 2.0.0-dev.903835b + 2.0.0-dev.3fa14f8 jar ${project.groupId}:${project.artifactId} Skyflow V3 SDK for the Java programming language From 01ce5e04d47aee4d4e254cb9def26c09fa2fd85c Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 19 Sep 2025 18:21:09 +0530 Subject: [PATCH 4/6] SK-2302 updated limit --- v3/src/main/java/com/skyflow/utils/Constants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/src/main/java/com/skyflow/utils/Constants.java b/v3/src/main/java/com/skyflow/utils/Constants.java index 33da8b27..cfc29792 100644 --- a/v3/src/main/java/com/skyflow/utils/Constants.java +++ b/v3/src/main/java/com/skyflow/utils/Constants.java @@ -7,11 +7,11 @@ public final class Constants extends BaseConstants { public static final String SDK_PREFIX = SDK_NAME + SDK_VERSION; public static final Integer INSERT_BATCH_SIZE = 50; public static final Integer MAX_INSERT_BATCH_SIZE = 1000; - public static final Integer INSERT_CONCURRENCY_LIMIT = 1; + public static final Integer INSERT_CONCURRENCY_LIMIT = 10; public static final Integer MAX_INSERT_CONCURRENCY_LIMIT = 10; public static final Integer DETOKENIZE_BATCH_SIZE = 50; - public static final Integer DETOKENIZE_CONCURRENCY_LIMIT = 1; + public static final Integer DETOKENIZE_CONCURRENCY_LIMIT = 10; public static final Integer MAX_DETOKENIZE_BATCH_SIZE = 1000; public static final Integer MAX_DETOKENIZE_CONCURRENCY_LIMIT = 10; From ae9f2f4a076cbbf7a053b92184c27da515e3f179 Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 19 Sep 2025 12:51:36 +0000 Subject: [PATCH 5/6] [AUTOMATED] Private Release 2.0.0-dev-01ce5e0 --- v3/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/pom.xml b/v3/pom.xml index b4cf9097..4fe6b02d 100644 --- a/v3/pom.xml +++ b/v3/pom.xml @@ -11,7 +11,7 @@ skyflow-java - 2.0.0-dev.3fa14f8 + 2.0.0-dev.01ce5e0 jar ${project.groupId}:${project.artifactId} Skyflow V3 SDK for the Java programming language From 72916bd0187052173d8abbaf6fe3cb115018360f Mon Sep 17 00:00:00 2001 From: skyflow-bharti Date: Fri, 19 Sep 2025 12:54:30 +0000 Subject: [PATCH 6/6] [AUTOMATED] Private Release 2.0.0-dev-e0db412 --- v3/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/pom.xml b/v3/pom.xml index 3ffc3c09..184393a9 100644 --- a/v3/pom.xml +++ b/v3/pom.xml @@ -11,7 +11,7 @@ com.skyflow skyflow-java - 2.0.0-dev.e96d8dc + 2.0.0-dev.e0db412 jar ${project.groupId}:${project.artifactId} Skyflow V3 SDK for the Java programming language