From fa765eb68e90461e7456ccce95142cf58fae9010 Mon Sep 17 00:00:00 2001 From: Nadia Mayor Date: Thu, 7 Sep 2023 17:12:43 -0300 Subject: [PATCH 1/7] WIP falg set sanitizer --- .../split/client/utils/FlagSetSanitizer.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 client/src/main/java/io/split/client/utils/FlagSetSanitizer.java diff --git a/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java b/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java new file mode 100644 index 000000000..052646148 --- /dev/null +++ b/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java @@ -0,0 +1,40 @@ +package io.split.client.utils; + +import io.split.engine.common.Synchronizer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; + +public final class FlagSetSanitizer { + + private final String FLAG_SET_REGEX = "^[a-z0-9][_a-z0-9]{0,49}$"; + private static final Logger _log = LoggerFactory.getLogger(FlagSetSanitizer.class); + + private FlagSetSanitizer() { + throw new IllegalStateException("Utility class"); + } + + public HashSet sanitizeFlagSet(List flagSets) { + if (flagSets == null || flagSets.isEmpty()) { + _log.error("FlagSets must be a non-empty list."); + return new HashSet<>(); + } + HashSet result = new HashSet<>(); + for (String flagSet: flagSets) { + if(flagSet != flagSet.toLowerCase()) { + _log.warn(String.format("Flag Set name %s should be all lowercase - converting string to lowercase", flagSet)); + flagSet = flagSet.toLowerCase(); + } + if (flagSet.trim() != flagSet) { + _log.warn(String.format("Flag Set name %s has extra whitespace, trimming", flagSet)); + flagSet = flagSet.trim(); + } + if () + } + + } +} From 5d0269f0292d326aa7a079091a7dd65c8411958f Mon Sep 17 00:00:00 2001 From: Nadia Mayor Date: Fri, 8 Sep 2023 11:02:36 -0300 Subject: [PATCH 2/7] [SDKS-7516] Update FlagSetSanitizer --- .../split/client/utils/FlagSetSanitizer.java | 26 ++++++++++++------- .../client/utils/FlagSetSanitizerTest.java | 18 +++++++++++++ 2 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java diff --git a/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java b/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java index 052646148..8efdee7fc 100644 --- a/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java +++ b/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java @@ -1,29 +1,29 @@ package io.split.client.utils; -import io.split.engine.common.Synchronizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Collections; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.Locale; +import java.util.regex.Pattern; +import java.util.stream.Collectors; public final class FlagSetSanitizer { - private final String FLAG_SET_REGEX = "^[a-z0-9][_a-z0-9]{0,49}$"; + private static final String FLAG_SET_REGEX = "^[a-z0-9][_a-z0-9]{0,49}$"; private static final Logger _log = LoggerFactory.getLogger(FlagSetSanitizer.class); private FlagSetSanitizer() { throw new IllegalStateException("Utility class"); } - public HashSet sanitizeFlagSet(List flagSets) { + public static List sanitizeFlagSet(List flagSets) { if (flagSets == null || flagSets.isEmpty()) { _log.error("FlagSets must be a non-empty list."); - return new HashSet<>(); + return new ArrayList<>(); } - HashSet result = new HashSet<>(); + HashSet sanitizedFlagSets = new HashSet<>(); for (String flagSet: flagSets) { if(flagSet != flagSet.toLowerCase()) { _log.warn(String.format("Flag Set name %s should be all lowercase - converting string to lowercase", flagSet)); @@ -33,8 +33,14 @@ public HashSet sanitizeFlagSet(List flagSets) { _log.warn(String.format("Flag Set name %s has extra whitespace, trimming", flagSet)); flagSet = flagSet.trim(); } - if () + if (!Pattern.matches(FLAG_SET_REGEX, flagSet)) { + _log.warn(String.format("you passed %s, Flag Set must adhere to the regular expressions %s. This means an Flag Set must be " + + "start with a letter, be in lowercase, alphanumeric and have a max length of 50 characters. %s was discarded.", + flagSet, FLAG_SET_REGEX, flagSet)); + continue; + } + sanitizedFlagSets.add(flagSet); } - + return sanitizedFlagSets.stream().sorted().collect(Collectors.toList()); } -} +} \ No newline at end of file diff --git a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java new file mode 100644 index 000000000..4cf8758cc --- /dev/null +++ b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java @@ -0,0 +1,18 @@ +package io.split.client.utils; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +public class FlagSetSanitizerTest { + + @Test + public void testEmptyFlagSets() { + List flagSets = new ArrayList<>(); + List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + Assert.assertTrue(cleanFlagSets.isEmpty()); + } + +} \ No newline at end of file From f3408a0b1e6a94be549f7867b65cea91f305efbb Mon Sep 17 00:00:00 2001 From: Nadia Mayor Date: Fri, 8 Sep 2023 16:14:36 -0300 Subject: [PATCH 3/7] [SDKS-7516] Add test cases for FlagSetSanitizer --- .../client/utils/FlagSetSanitizerTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java index 4cf8758cc..d06e19643 100644 --- a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java +++ b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java @@ -15,4 +15,33 @@ public void testEmptyFlagSets() { Assert.assertTrue(cleanFlagSets.isEmpty()); } + @Test + public void testUpperFlagSets() { + List flagSets = new ArrayList<>(); + flagSets.add("Test1"); + flagSets.add("TEST2"); + List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + Assert.assertEquals("test1", cleanFlagSets.get(0)); + Assert.assertEquals("test2", cleanFlagSets.get(1)); + } + + @Test + public void testTrimFlagSets() { + List flagSets = new ArrayList<>(); + flagSets.add(" test1"); + flagSets.add(" test2 "); + List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + Assert.assertEquals("test1", cleanFlagSets.get(0)); + Assert.assertEquals("test2", cleanFlagSets.get(1)); + } + + @Test + public void testRegexFlagSets() { + List flagSets = new ArrayList<>(); + flagSets.add(" test1"); + flagSets.add(" test-2 "); + List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + Assert.assertEquals(1, cleanFlagSets.size()); + Assert.assertEquals("test1", cleanFlagSets.get(0)); + } } \ No newline at end of file From 00dc5d525b25afb5b2ba8d5dc1b85767d5774292 Mon Sep 17 00:00:00 2001 From: Nadia Mayor Date: Fri, 8 Sep 2023 17:47:42 -0300 Subject: [PATCH 4/7] [SDKS-7516] Add FlagSetSanitizer in SplitClientConfig --- .../main/java/io/split/client/SplitClientConfig.java | 6 +++--- .../java/io/split/client/SplitClientConfigTest.java | 4 ++-- .../io/split/client/utils/FlagSetSanitizerTest.java | 10 ++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/client/src/main/java/io/split/client/SplitClientConfig.java b/client/src/main/java/io/split/client/SplitClientConfig.java index 6da72fd53..4632a1ca0 100644 --- a/client/src/main/java/io/split/client/SplitClientConfig.java +++ b/client/src/main/java/io/split/client/SplitClientConfig.java @@ -16,6 +16,8 @@ import java.util.Properties; import java.util.concurrent.ThreadFactory; +import static io.split.client.utils.FlagSetSanitizer.sanitizeFlagSet; + /** * Configurations for the SplitClient. * @@ -195,7 +197,6 @@ private SplitClientConfig(String endpoint, _threadFactory = threadFactory; _flagSetsFilter = flagSetsFilter; - Properties props = new Properties(); try { props.load(this.getClass().getClassLoader().getResourceAsStream("splitversion.properties")); @@ -921,8 +922,7 @@ public Builder customStorageWrapper(CustomStorageWrapper customStorageWrapper) { * @return this builder */ public Builder flagSetsFilter(List flagSetsFilter) { - _flagSetsFilter = flagSetsFilter; - //TODO Apply validations + _flagSetsFilter = sanitizeFlagSet(flagSetsFilter); return this; } diff --git a/client/src/test/java/io/split/client/SplitClientConfigTest.java b/client/src/test/java/io/split/client/SplitClientConfigTest.java index 16e67525e..497b8da82 100644 --- a/client/src/test/java/io/split/client/SplitClientConfigTest.java +++ b/client/src/test/java/io/split/client/SplitClientConfigTest.java @@ -195,9 +195,9 @@ public void checkDefaultRateForFeatureAndSegment() { @Test public void checkSetFlagSetsFilter() { - List sets = Stream.of("test1", "test2").collect(Collectors.toList()); + List sets = Stream.of("test1", "test2", "TEST3", "test-4").collect(Collectors.toList()); SplitClientConfig config = SplitClientConfig.builder().flagSetsFilter(sets).build(); Assert.assertNotNull(config.getSetsFilter()); - Assert.assertEquals(2, config.getSetsFilter().size()); + Assert.assertEquals(3, config.getSetsFilter().size()); } } diff --git a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java index d06e19643..814f36a8d 100644 --- a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java +++ b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java @@ -44,4 +44,14 @@ public void testRegexFlagSets() { Assert.assertEquals(1, cleanFlagSets.size()); Assert.assertEquals("test1", cleanFlagSets.get(0)); } + + @Test + public void testDuplicateFlagSets() { + List flagSets = new ArrayList<>(); + flagSets.add(" test1"); + flagSets.add(" test1 "); + List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + Assert.assertEquals(1, cleanFlagSets.size()); + Assert.assertEquals("test1", cleanFlagSets.get(0)); + } } \ No newline at end of file From d7386d5487ca25f4d67df9c927adceca5122857f Mon Sep 17 00:00:00 2001 From: Nadia Mayor Date: Mon, 11 Sep 2023 11:37:50 -0300 Subject: [PATCH 5/7] [SDKS-7516] Pr suggestions --- .../io/split/client/SplitClientConfig.java | 4 +-- ...tSanitizer.java => FlagSetsValidator.java} | 12 ++++++--- .../client/utils/FlagSetSanitizerTest.java | 26 +++++++++++++++---- 3 files changed, 31 insertions(+), 11 deletions(-) rename client/src/main/java/io/split/client/utils/{FlagSetSanitizer.java => FlagSetsValidator.java} (85%) diff --git a/client/src/main/java/io/split/client/SplitClientConfig.java b/client/src/main/java/io/split/client/SplitClientConfig.java index 4632a1ca0..ad403dd97 100644 --- a/client/src/main/java/io/split/client/SplitClientConfig.java +++ b/client/src/main/java/io/split/client/SplitClientConfig.java @@ -16,7 +16,7 @@ import java.util.Properties; import java.util.concurrent.ThreadFactory; -import static io.split.client.utils.FlagSetSanitizer.sanitizeFlagSet; +import static io.split.client.utils.FlagSetsValidator.cleanup; /** * Configurations for the SplitClient. @@ -922,7 +922,7 @@ public Builder customStorageWrapper(CustomStorageWrapper customStorageWrapper) { * @return this builder */ public Builder flagSetsFilter(List flagSetsFilter) { - _flagSetsFilter = sanitizeFlagSet(flagSetsFilter); + _flagSetsFilter = cleanup(flagSetsFilter); return this; } diff --git a/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java b/client/src/main/java/io/split/client/utils/FlagSetsValidator.java similarity index 85% rename from client/src/main/java/io/split/client/utils/FlagSetSanitizer.java rename to client/src/main/java/io/split/client/utils/FlagSetsValidator.java index 8efdee7fc..a66bf634c 100644 --- a/client/src/main/java/io/split/client/utils/FlagSetSanitizer.java +++ b/client/src/main/java/io/split/client/utils/FlagSetsValidator.java @@ -9,16 +9,16 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -public final class FlagSetSanitizer { +public final class FlagSetsValidator { private static final String FLAG_SET_REGEX = "^[a-z0-9][_a-z0-9]{0,49}$"; - private static final Logger _log = LoggerFactory.getLogger(FlagSetSanitizer.class); + private static final Logger _log = LoggerFactory.getLogger(FlagSetsValidator.class); - private FlagSetSanitizer() { + private FlagSetsValidator() { throw new IllegalStateException("Utility class"); } - public static List sanitizeFlagSet(List flagSets) { + public static List cleanup(List flagSets) { if (flagSets == null || flagSets.isEmpty()) { _log.error("FlagSets must be a non-empty list."); return new ArrayList<>(); @@ -43,4 +43,8 @@ public static List sanitizeFlagSet(List flagSets) { } return sanitizedFlagSets.stream().sorted().collect(Collectors.toList()); } + + public static Boolean isValid(String value) { + return value != null && value.trim().matches(FLAG_SET_REGEX); + } } \ No newline at end of file diff --git a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java index 814f36a8d..43ffdd1fa 100644 --- a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java +++ b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java @@ -6,12 +6,15 @@ import java.util.ArrayList; import java.util.List; +import static io.split.client.utils.FlagSetsValidator.cleanup; +import static io.split.client.utils.FlagSetsValidator.isValid; + public class FlagSetSanitizerTest { @Test public void testEmptyFlagSets() { List flagSets = new ArrayList<>(); - List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + List cleanFlagSets = cleanup(flagSets); Assert.assertTrue(cleanFlagSets.isEmpty()); } @@ -20,7 +23,7 @@ public void testUpperFlagSets() { List flagSets = new ArrayList<>(); flagSets.add("Test1"); flagSets.add("TEST2"); - List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + List cleanFlagSets = cleanup(flagSets); Assert.assertEquals("test1", cleanFlagSets.get(0)); Assert.assertEquals("test2", cleanFlagSets.get(1)); } @@ -30,7 +33,7 @@ public void testTrimFlagSets() { List flagSets = new ArrayList<>(); flagSets.add(" test1"); flagSets.add(" test2 "); - List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + List cleanFlagSets = cleanup(flagSets); Assert.assertEquals("test1", cleanFlagSets.get(0)); Assert.assertEquals("test2", cleanFlagSets.get(1)); } @@ -40,7 +43,7 @@ public void testRegexFlagSets() { List flagSets = new ArrayList<>(); flagSets.add(" test1"); flagSets.add(" test-2 "); - List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + List cleanFlagSets = cleanup(flagSets); Assert.assertEquals(1, cleanFlagSets.size()); Assert.assertEquals("test1", cleanFlagSets.get(0)); } @@ -50,8 +53,21 @@ public void testDuplicateFlagSets() { List flagSets = new ArrayList<>(); flagSets.add(" test1"); flagSets.add(" test1 "); - List cleanFlagSets = FlagSetSanitizer.sanitizeFlagSet(flagSets); + List cleanFlagSets = cleanup(flagSets); Assert.assertEquals(1, cleanFlagSets.size()); Assert.assertEquals("test1", cleanFlagSets.get(0)); } + + @Test + public void testIsValid(){ + Assert.assertTrue(isValid(" test1 ")); + } + + @Test + public void testIsNotValid(){ + Assert.assertFalse(isValid(" test 1 ")); + Assert.assertFalse(isValid("Test1 ")); + Assert.assertFalse(isValid("")); + Assert.assertFalse(isValid(null)); + } } \ No newline at end of file From ca0c274b21997b370fb50142552b72306451e7e0 Mon Sep 17 00:00:00 2001 From: Nadia Mayor Date: Mon, 11 Sep 2023 18:05:12 -0300 Subject: [PATCH 6/7] [SDKS-7516] Update after PR suggestions --- .../io/split/client/SplitClientConfig.java | 12 +-- .../inputValidation/FlagSetsValidResult.java | 21 +++++ .../FlagSetsValidator.java | 20 ++--- .../client/utils/FlagSetSanitizerTest.java | 73 ------------------ .../client/utils/FlagSetsValidatorTest.java | 76 +++++++++++++++++++ 5 files changed, 113 insertions(+), 89 deletions(-) create mode 100644 client/src/main/java/io/split/inputValidation/FlagSetsValidResult.java rename client/src/main/java/io/split/{client/utils => inputValidation}/FlagSetsValidator.java (75%) delete mode 100644 client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java create mode 100644 client/src/test/java/io/split/client/utils/FlagSetsValidatorTest.java diff --git a/client/src/main/java/io/split/client/SplitClientConfig.java b/client/src/main/java/io/split/client/SplitClientConfig.java index ad403dd97..2e3d1ccad 100644 --- a/client/src/main/java/io/split/client/SplitClientConfig.java +++ b/client/src/main/java/io/split/client/SplitClientConfig.java @@ -10,13 +10,13 @@ import pluggable.CustomStorageWrapper; import java.io.IOException; -import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.io.InputStream; import java.util.Properties; import java.util.concurrent.ThreadFactory; -import static io.split.client.utils.FlagSetsValidator.cleanup; +import static io.split.inputValidation.FlagSetsValidator.cleanup; /** * Configurations for the SplitClient. @@ -88,7 +88,7 @@ public class SplitClientConfig { // To be set during startup public static String splitSdkVersion; private final long _lastSeenCacheSize; - private final List _flagSetsFilter; + private final HashSet _flagSetsFilter; public static Builder builder() { return new Builder(); @@ -144,7 +144,7 @@ private SplitClientConfig(String endpoint, int filterUniqueKeysRefreshRate, long lastSeenCacheSize, ThreadFactory threadFactory, - List flagSetsFilter) { + HashSet flagSetsFilter) { _endpoint = endpoint; _eventsEndpoint = eventsEndpoint; _featuresRefreshRate = pollForFeatureChangesEveryNSeconds; @@ -384,7 +384,7 @@ public long getLastSeenCacheSize() { public ThreadFactory getThreadFactory() { return _threadFactory; } - public List getSetsFilter() { + public HashSet getSetsFilter() { return _flagSetsFilter; } @@ -443,7 +443,7 @@ public static final class Builder { private StorageMode _storageMode = StorageMode.MEMORY; private final long _lastSeenCacheSize = 500000; private ThreadFactory _threadFactory; - private List _flagSetsFilter = Collections.emptyList(); + private HashSet _flagSetsFilter = new HashSet<>(); public Builder() { } diff --git a/client/src/main/java/io/split/inputValidation/FlagSetsValidResult.java b/client/src/main/java/io/split/inputValidation/FlagSetsValidResult.java new file mode 100644 index 000000000..a17cb7b38 --- /dev/null +++ b/client/src/main/java/io/split/inputValidation/FlagSetsValidResult.java @@ -0,0 +1,21 @@ +package io.split.inputValidation; + +import java.util.HashSet; + +public class FlagSetsValidResult { + private final Boolean _valid; + private final HashSet _flagSets; + + public FlagSetsValidResult(Boolean valid, HashSet flagSets) { + _valid = valid; + _flagSets = flagSets; + } + + public Boolean getValid() { + return _valid; + } + + public HashSet getFlagSets() { + return _flagSets; + } +} \ No newline at end of file diff --git a/client/src/main/java/io/split/client/utils/FlagSetsValidator.java b/client/src/main/java/io/split/inputValidation/FlagSetsValidator.java similarity index 75% rename from client/src/main/java/io/split/client/utils/FlagSetsValidator.java rename to client/src/main/java/io/split/inputValidation/FlagSetsValidator.java index a66bf634c..ed4f0586a 100644 --- a/client/src/main/java/io/split/client/utils/FlagSetsValidator.java +++ b/client/src/main/java/io/split/inputValidation/FlagSetsValidator.java @@ -1,13 +1,11 @@ -package io.split.client.utils; +package io.split.inputValidation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.regex.Pattern; -import java.util.stream.Collectors; public final class FlagSetsValidator { @@ -18,12 +16,12 @@ private FlagSetsValidator() { throw new IllegalStateException("Utility class"); } - public static List cleanup(List flagSets) { + public static HashSet cleanup(List flagSets) { if (flagSets == null || flagSets.isEmpty()) { _log.error("FlagSets must be a non-empty list."); - return new ArrayList<>(); + return new HashSet<>(); } - HashSet sanitizedFlagSets = new HashSet<>(); + HashSet cleanFlagSets = new HashSet<>(); for (String flagSet: flagSets) { if(flagSet != flagSet.toLowerCase()) { _log.warn(String.format("Flag Set name %s should be all lowercase - converting string to lowercase", flagSet)); @@ -39,12 +37,14 @@ public static List cleanup(List flagSets) { flagSet, FLAG_SET_REGEX, flagSet)); continue; } - sanitizedFlagSets.add(flagSet); + cleanFlagSets.add(flagSet); } - return sanitizedFlagSets.stream().sorted().collect(Collectors.toList()); + return cleanFlagSets; } - public static Boolean isValid(String value) { - return value != null && value.trim().matches(FLAG_SET_REGEX); + public static FlagSetsValidResult areValid(List flagSets) { + HashSet cleanFlagSets = cleanup(flagSets); + + return new FlagSetsValidResult(cleanFlagSets != null && cleanFlagSets.size() != 0, cleanFlagSets); } } \ No newline at end of file diff --git a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java b/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java deleted file mode 100644 index 43ffdd1fa..000000000 --- a/client/src/test/java/io/split/client/utils/FlagSetSanitizerTest.java +++ /dev/null @@ -1,73 +0,0 @@ -package io.split.client.utils; - -import org.junit.Assert; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.List; - -import static io.split.client.utils.FlagSetsValidator.cleanup; -import static io.split.client.utils.FlagSetsValidator.isValid; - -public class FlagSetSanitizerTest { - - @Test - public void testEmptyFlagSets() { - List flagSets = new ArrayList<>(); - List cleanFlagSets = cleanup(flagSets); - Assert.assertTrue(cleanFlagSets.isEmpty()); - } - - @Test - public void testUpperFlagSets() { - List flagSets = new ArrayList<>(); - flagSets.add("Test1"); - flagSets.add("TEST2"); - List cleanFlagSets = cleanup(flagSets); - Assert.assertEquals("test1", cleanFlagSets.get(0)); - Assert.assertEquals("test2", cleanFlagSets.get(1)); - } - - @Test - public void testTrimFlagSets() { - List flagSets = new ArrayList<>(); - flagSets.add(" test1"); - flagSets.add(" test2 "); - List cleanFlagSets = cleanup(flagSets); - Assert.assertEquals("test1", cleanFlagSets.get(0)); - Assert.assertEquals("test2", cleanFlagSets.get(1)); - } - - @Test - public void testRegexFlagSets() { - List flagSets = new ArrayList<>(); - flagSets.add(" test1"); - flagSets.add(" test-2 "); - List cleanFlagSets = cleanup(flagSets); - Assert.assertEquals(1, cleanFlagSets.size()); - Assert.assertEquals("test1", cleanFlagSets.get(0)); - } - - @Test - public void testDuplicateFlagSets() { - List flagSets = new ArrayList<>(); - flagSets.add(" test1"); - flagSets.add(" test1 "); - List cleanFlagSets = cleanup(flagSets); - Assert.assertEquals(1, cleanFlagSets.size()); - Assert.assertEquals("test1", cleanFlagSets.get(0)); - } - - @Test - public void testIsValid(){ - Assert.assertTrue(isValid(" test1 ")); - } - - @Test - public void testIsNotValid(){ - Assert.assertFalse(isValid(" test 1 ")); - Assert.assertFalse(isValid("Test1 ")); - Assert.assertFalse(isValid("")); - Assert.assertFalse(isValid(null)); - } -} \ No newline at end of file diff --git a/client/src/test/java/io/split/client/utils/FlagSetsValidatorTest.java b/client/src/test/java/io/split/client/utils/FlagSetsValidatorTest.java new file mode 100644 index 000000000..2872cf259 --- /dev/null +++ b/client/src/test/java/io/split/client/utils/FlagSetsValidatorTest.java @@ -0,0 +1,76 @@ +package io.split.client.utils; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; + +import static io.split.inputValidation.FlagSetsValidator.cleanup; +import static io.split.inputValidation.FlagSetsValidator.areValid; + +public class FlagSetsValidatorTest { + + @Test + public void testEmptyFlagSets() { + List flagSets = new ArrayList<>(); + HashSet cleanFlagSets = cleanup(flagSets); + Assert.assertTrue(cleanFlagSets.isEmpty()); + } + + @Test + public void testUpperFlagSets() { + List flagSets = new ArrayList<>(); + flagSets.add("Test1"); + flagSets.add("TEST2"); + HashSet cleanFlagSets = cleanup(flagSets); + Assert.assertTrue(cleanFlagSets.contains("test1")); + Assert.assertTrue(cleanFlagSets.contains("test2")); + } + + @Test + public void testTrimFlagSets() { + List flagSets = new ArrayList<>(); + flagSets.add(" test1"); + flagSets.add(" test2 "); + HashSet cleanFlagSets = cleanup(flagSets); + Assert.assertTrue(cleanFlagSets.contains("test1")); + Assert.assertTrue(cleanFlagSets.contains("test2")); + } + + @Test + public void testRegexFlagSets() { + List flagSets = new ArrayList<>(); + flagSets.add(" test1"); + flagSets.add(" test-2 "); + HashSet cleanFlagSets = cleanup(flagSets); + Assert.assertEquals(1, cleanFlagSets.size()); + Assert.assertTrue(cleanFlagSets.contains("test1")); + Assert.assertFalse(cleanFlagSets.contains("test-2")); + } + + @Test + public void testDuplicateFlagSets() { + List flagSets = new ArrayList<>(); + flagSets.add(" test1"); + flagSets.add(" test1 "); + HashSet cleanFlagSets = cleanup(flagSets); + Assert.assertEquals(1, cleanFlagSets.size()); + Assert.assertTrue(cleanFlagSets.contains("test1")); + } + + @Test + public void testIsValid(){ + Assert.assertTrue(areValid(Arrays.asList(" test1 ")).getValid()); + Assert.assertTrue(areValid(Arrays.asList("Test1 ")).getValid()); + } + + @Test + public void testIsNotValid(){ + Assert.assertFalse(areValid(Arrays.asList(" test 1 ")).getValid()); + Assert.assertFalse(areValid(Arrays.asList("")).getValid()); + Assert.assertFalse(areValid(null).getValid()); + } +} \ No newline at end of file From 5d1d0e6a2231420bc3b7fd8d3c1cf628832b77e6 Mon Sep 17 00:00:00 2001 From: Nadia Mayor Date: Mon, 11 Sep 2023 18:26:21 -0300 Subject: [PATCH 7/7] [SDKS-7516] Remove a log message --- .../main/java/io/split/inputValidation/FlagSetsValidator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/main/java/io/split/inputValidation/FlagSetsValidator.java b/client/src/main/java/io/split/inputValidation/FlagSetsValidator.java index ed4f0586a..01fc3354d 100644 --- a/client/src/main/java/io/split/inputValidation/FlagSetsValidator.java +++ b/client/src/main/java/io/split/inputValidation/FlagSetsValidator.java @@ -18,7 +18,6 @@ private FlagSetsValidator() { public static HashSet cleanup(List flagSets) { if (flagSets == null || flagSets.isEmpty()) { - _log.error("FlagSets must be a non-empty list."); return new HashSet<>(); } HashSet cleanFlagSets = new HashSet<>();