From f45747fccea3a0c8b19d72eb1b00592aa5833d6b Mon Sep 17 00:00:00 2001 From: liran2000 Date: Sat, 20 Jan 2024 20:48:28 +0200 Subject: [PATCH 1/2] Adopt configcat v9 Signed-off-by: liran2000 --- providers/configcat/pom.xml | 4 +- .../configcat/ContextTransformer.java | 2 +- .../configcat/ConfigCatProviderTest.java | 2 +- .../src/test/resources/features.json | 221 ++++++++++++++---- 4 files changed, 179 insertions(+), 50 deletions(-) diff --git a/providers/configcat/pom.xml b/providers/configcat/pom.xml index 14fafdc38..fe937b672 100644 --- a/providers/configcat/pom.xml +++ b/providers/configcat/pom.xml @@ -10,7 +10,7 @@ dev.openfeature.contrib.providers configcat - 0.0.2 + 0.1.0 configcat configcat provider for Java @@ -20,7 +20,7 @@ com.configcat configcat-java-client - 8.4.0 + 9.0.0 diff --git a/providers/configcat/src/main/java/dev/openfeature/contrib/providers/configcat/ContextTransformer.java b/providers/configcat/src/main/java/dev/openfeature/contrib/providers/configcat/ContextTransformer.java index 51b39d6b5..75ab0db41 100644 --- a/providers/configcat/src/main/java/dev/openfeature/contrib/providers/configcat/ContextTransformer.java +++ b/providers/configcat/src/main/java/dev/openfeature/contrib/providers/configcat/ContextTransformer.java @@ -16,7 +16,7 @@ public class ContextTransformer { protected static User transform(EvaluationContext ctx) { User.Builder userBuilder = User.newBuilder(); - Map customMap = new HashMap<>(); + Map customMap = new HashMap<>(); ctx.asObjectMap().forEach((k, v) -> { switch (k) { case CONTEXT_COUNTRY: diff --git a/providers/configcat/src/test/java/dev/openfeature/contrib/providers/configcat/ConfigCatProviderTest.java b/providers/configcat/src/test/java/dev/openfeature/contrib/providers/configcat/ConfigCatProviderTest.java index a31dbb5a7..ec94eba9f 100644 --- a/providers/configcat/src/test/java/dev/openfeature/contrib/providers/configcat/ConfigCatProviderTest.java +++ b/providers/configcat/src/test/java/dev/openfeature/contrib/providers/configcat/ConfigCatProviderTest.java @@ -223,7 +223,7 @@ void contextTransformTest() { evaluationContext.add("Email", email); evaluationContext.add(customPropertyKey, customPropertyValue); - HashMap customMap = new HashMap<>(); + HashMap customMap = new HashMap<>(); customMap.put(customPropertyKey, customPropertyValue); User expectedUser = User.newBuilder().email(email).country(country).custom(customMap).build(userId); User transformedUser = ContextTransformer.transform(evaluationContext); diff --git a/providers/configcat/src/test/resources/features.json b/providers/configcat/src/test/resources/features.json index 09093c148..514d695c3 100644 --- a/providers/configcat/src/test/resources/features.json +++ b/providers/configcat/src/test/resources/features.json @@ -1,88 +1,217 @@ { + "p": { + "s": "80xCU/SlDz1lCiWFaxIBjyJeJecWjq46T4eu6GtozkM=" + }, "f": { "enabledFeature": { - "v": true + "t": 0, + "v": { + "b": true + } }, "intSetting": { - "v": 5 + "t": 2, + "v": { + "i": 5 + } }, "doubleSetting": { - "v": 3.14 + "t": 3, + "v": { + "d": 3.14 + } }, "stringSetting": { - "v": "test" + "t": 1, + "v": { + "s": "test" + } }, "userIdMatching": { - "v": false, + "t": 0, "r": [ { - "o": 0, - "a": "Identifier", - "t": 2, - "c": "@matching.com", - "v": true + "c": [ + { + "u": { + "a": "Identifier", + "c": 2, + "l": [ + "@matching.com" + ] + } + } + ], + "p": [ + { + "p": 100, + "v": { + "b": true + }, + "i": "bcfb84a7" + } + ] } - ] + ], + "v": { + "b": false + }, + "i": "430bded3" }, "emailMatching": { - "v": false, + "t": 0, "r": [ { - "o": 0, - "a": "Email", - "t": 2, - "c": "@matching.com", - "v": true + "c": [ + { + "u": { + "a": "Email", + "c": 2, + "l": [ + "@matching.com" + ] + } + } + ], + "p": [ + { + "p": 100, + "v": { + "b": true + }, + "i": "bcfb84a7" + } + ] } - ] + ], + "v": { + "b": false + }, + "i": "430bded3" }, "countryMatching": { - "v": false, + "t": 0, "r": [ { - "o": 0, - "a": "Country", - "t": 2, - "c": "country1", - "v": true + "c": [ + { + "u": { + "a": "Country", + "c": 2, + "l": [ + "country1" + ] + } + } + ], + "p": [ + { + "p": 100, + "v": { + "b": true + }, + "i": "bcfb84a7" + } + ] } - ] + ], + "v": { + "b": false + }, + "i": "430bded3" }, "userIdMatchingInt": { - "v": 111, + "t": 2, "r": [ { - "o": 0, - "a": "Identifier", - "t": 2, - "c": "@matching.com", - "v": 123 + "c": [ + { + "u": { + "a": "Identifier", + "c": 2, + "l": [ + "@matching.com" + ] + } + } + ], + "p": [ + { + "p": 100, + "v": { + "i": 123 + }, + "i": "bcfb84a7" + } + ] } - ] + ], + "v": { + "i": 111 + }, + "i": "430bded3" }, "userIdMatchingDouble": { - "v": 0.1, + "t": 3, "r": [ { - "o": 0, - "a": "Identifier", - "t": 2, - "c": "@matching.com", - "v": 1.23 + "c": [ + { + "u": { + "a": "Identifier", + "c": 2, + "l": [ + "@matching.com" + ] + } + } + ], + "p": [ + { + "p": 100, + "v": { + "d": 1.23 + }, + "i": "bcfb84a7" + } + ] } - ] + ], + "v": { + "d": 0.1 + }, + "i": "430bded3" }, "userIdMatchingStr": { - "v": "fallback", + "t": 1, "r": [ { - "o": 0, - "a": "Identifier", - "t": 2, - "c": "@matching.com", - "v": "expected" + "c": [ + { + "u": { + "a": "Identifier", + "c": 2, + "l": [ + "@matching.com" + ] + } + } + ], + "p": [ + { + "p": 100, + "v": { + "s": "expected" + }, + "i": "bcfb84a7" + } + ] } - ] + ], + "v": { + "s": "fallback" + }, + "i": "430bded3" } } } \ No newline at end of file From 7d2112d7f8f5f7161f5888a846024c98b51919b3 Mon Sep 17 00:00:00 2001 From: liran2000 Date: Mon, 22 Jan 2024 14:02:56 +0200 Subject: [PATCH 2/2] update test features config file Signed-off-by: liran2000 --- .../configcat/ConfigCatProviderTest.java | 8 +- .../src/test/resources/features.json | 90 ++++++++----------- 2 files changed, 41 insertions(+), 57 deletions(-) diff --git a/providers/configcat/src/test/java/dev/openfeature/contrib/providers/configcat/ConfigCatProviderTest.java b/providers/configcat/src/test/java/dev/openfeature/contrib/providers/configcat/ConfigCatProviderTest.java index ec94eba9f..91ac4adfe 100644 --- a/providers/configcat/src/test/java/dev/openfeature/contrib/providers/configcat/ConfigCatProviderTest.java +++ b/providers/configcat/src/test/java/dev/openfeature/contrib/providers/configcat/ConfigCatProviderTest.java @@ -12,6 +12,7 @@ import dev.openfeature.sdk.exceptions.GeneralError; import dev.openfeature.sdk.exceptions.ProviderNotReadyError; import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -26,6 +27,7 @@ * ConfigCatProvider test, based on local config file evaluation. * Configuration file test by ConfigCat tests. */ +@Slf4j class ConfigCatProviderTest { public static final String FLAG_NAME = "enabledFeature"; @@ -43,7 +45,7 @@ class ConfigCatProviderTest { @BeforeAll static void setUp() { - String sdkKey = "test"; + String sdkKey = "configcat-sdk-1/TEST_KEY-0123456789012/1234567890123456789012"; ConfigCatProviderConfig configCatProviderConfig = ConfigCatProviderConfig.builder().sdkKey(sdkKey) .options(options -> options.flagOverrides( @@ -182,7 +184,7 @@ void getStringEvaluationByUser() { @SneakyThrows @Test void shouldThrowIfNotInitialized() { - ConfigCatProviderConfig configCatProviderConfig = ConfigCatProviderConfig.builder().sdkKey("test").build(); + ConfigCatProviderConfig configCatProviderConfig = ConfigCatProviderConfig.builder().sdkKey("configcat-sdk-1/TEST_KEY-0123456789012/1234567890123456789012").build(); ConfigCatProvider tempConfigCatProvider = new ConfigCatProvider(configCatProviderConfig); assertThrows(ProviderNotReadyError.class, ()-> tempConfigCatProvider.getBooleanEvaluation("fail_not_initialized", false, new ImmutableContext())); @@ -205,7 +207,7 @@ void eventsTest() { configCatProvider.emitProviderReady(ProviderEventDetails.builder().build()); configCatProvider.emitProviderError(ProviderEventDetails.builder().build()); configCatProvider.emitProviderConfigurationChanged(ProviderEventDetails.builder().build()); - assertDoesNotThrow(() -> {configCatProvider.getState();}); + assertDoesNotThrow(() -> log.debug("provider state: {}", configCatProvider.getState())); } @SneakyThrows diff --git a/providers/configcat/src/test/resources/features.json b/providers/configcat/src/test/resources/features.json index 514d695c3..842f41c4b 100644 --- a/providers/configcat/src/test/resources/features.json +++ b/providers/configcat/src/test/resources/features.json @@ -42,15 +42,12 @@ } } ], - "p": [ - { - "p": 100, - "v": { - "b": true - }, - "i": "bcfb84a7" - } - ] + "s": { + "v": { + "b": true + }, + "i": "bcfb84a7" + } } ], "v": { @@ -73,15 +70,12 @@ } } ], - "p": [ - { - "p": 100, - "v": { - "b": true - }, - "i": "bcfb84a7" - } - ] + "s": { + "v": { + "b": true + }, + "i": "bcfb84a7" + } } ], "v": { @@ -104,15 +98,12 @@ } } ], - "p": [ - { - "p": 100, - "v": { - "b": true - }, - "i": "bcfb84a7" - } - ] + "s": { + "v": { + "b": true + }, + "i": "bcfb84a7" + } } ], "v": { @@ -135,15 +126,12 @@ } } ], - "p": [ - { - "p": 100, - "v": { - "i": 123 - }, - "i": "bcfb84a7" - } - ] + "s": { + "v": { + "i": 123 + }, + "i": "bcfb84a7" + } } ], "v": { @@ -166,15 +154,12 @@ } } ], - "p": [ - { - "p": 100, - "v": { - "d": 1.23 - }, - "i": "bcfb84a7" - } - ] + "s": { + "v": { + "d": 1.23 + }, + "i": "bcfb84a7" + } } ], "v": { @@ -197,15 +182,12 @@ } } ], - "p": [ - { - "p": 100, - "v": { - "s": "expected" - }, - "i": "bcfb84a7" - } - ] + "s": { + "v": { + "s": "expected" + }, + "i": "bcfb84a7" + } } ], "v": {