From 632045b014db7c6748055b859465a64e3c3b776b Mon Sep 17 00:00:00 2001 From: Ivor Popovic Date: Thu, 26 May 2016 13:56:41 +1000 Subject: [PATCH] Evaluate interpreted attributes when they are set as custom attributes. --- .../com/launchdarkly/client/Variation.java | 4 +++- .../launchdarkly/client/FeatureRepTest.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/launchdarkly/client/Variation.java b/src/main/java/com/launchdarkly/client/Variation.java index 51a12c718..6df783dde 100644 --- a/src/main/java/com/launchdarkly/client/Variation.java +++ b/src/main/java/com/launchdarkly/client/Variation.java @@ -179,7 +179,9 @@ else if (attribute.equals("anonymous")) { uValue = user.getAnonymous(); } } - else { // Custom attribute + + // Always check custom attributes in case interpreted keys were used here + if (uValue == null) { // Custom attribute JsonElement custom = user.getCustom(attribute); if (custom != null) { diff --git a/src/test/java/com/launchdarkly/client/FeatureRepTest.java b/src/test/java/com/launchdarkly/client/FeatureRepTest.java index 94b55ff9b..bbe64ad86 100644 --- a/src/test/java/com/launchdarkly/client/FeatureRepTest.java +++ b/src/test/java/com/launchdarkly/client/FeatureRepTest.java @@ -28,6 +28,8 @@ public class FeatureRepTest { private final Variation.TargetRule targetAnonymousOn = new Variation.TargetRule("anonymous", Collections.singletonList(new JsonPrimitive(true))); + private final Variation.TargetRule targetEmailOn = new Variation.TargetRule("email", Collections.singletonList(new JsonPrimitive("test@test.com"))); + private final Variation trueVariation = new Variation.Builder<>(true, 80) .target(targetUserOn) .target(targetGroupOn) @@ -43,6 +45,17 @@ public class FeatureRepTest { .target(targetLikesDogsOff) .build(); + private final Variation emailOnlyVariation = new Variation.Builder<>(true, 0) + .target(targetEmailOn) + .build(); + + private final FeatureRep emailRuleFlag = new FeatureRep.Builder("Email rule flag", "email.rule.flag") + .on(true) + .salt("feefifofum") + .variation(emailOnlyVariation) + .build(); + + private final FeatureRep simpleFlag = new FeatureRep.Builder("Sample flag", "sample.flag") .on(true) .salt("feefifofum") @@ -201,4 +214,15 @@ public void testFlagWithAnonymousOn() { assertEquals(true, b); } + @Test + public void testInterpretedAttributeEvaluatesInCustom() { + LDUser customEmailSetUser = new LDUser.Builder("randomOtherUser@test.com").custom("email", "test@test.com").build(); + Boolean b = emailRuleFlag.evaluate(customEmailSetUser); + assertEquals(true, b); + + LDUser interpretedEmailSetUser = new LDUser.Builder("randomOtherUser@test.com").email("test@test.com").build(); + Boolean b2 = emailRuleFlag.evaluate(interpretedEmailSetUser); + assertEquals(true, b2); + } + }