diff --git a/OptimizelySDK.Tests/OptimizelyUserContextTest.cs b/OptimizelySDK.Tests/OptimizelyUserContextTest.cs index 21ae10db..49b3a903 100644 --- a/OptimizelySDK.Tests/OptimizelyUserContextTest.cs +++ b/OptimizelySDK.Tests/OptimizelyUserContextTest.cs @@ -405,6 +405,23 @@ public void DecideInvalidFlagKey() Assert.IsTrue(TestData.CompareObjects(decision, decisionExpected)); } + [Test] + public void DecideNullFlagKey() + { + var user = Optimizely.CreateUserContext(UserID); + user.SetAttribute("browser_type", "chrome"); + + var decisionExpected = OptimizelyDecision.NewErrorDecision( + null, + user, + DecisionMessage.Reason(DecisionMessage.FLAG_KEY_INVALID, "null"), + ErrorHandlerMock.Object, + LoggerMock.Object); + var decision = user.Decide(null); + + Assert.IsTrue(TestData.CompareObjects(decision, decisionExpected)); + } + [Test] public void DecideWhenConfigIsNull() { diff --git a/OptimizelySDK/Optimizely.cs b/OptimizelySDK/Optimizely.cs index 9040ea17..4e0a0bce 100644 --- a/OptimizelySDK/Optimizely.cs +++ b/OptimizelySDK/Optimizely.cs @@ -871,6 +871,13 @@ OptimizelyDecideOption[] options ErrorHandler, Logger); } + if (key == null) + { + return OptimizelyDecision.NewErrorDecision(key, user, + DecisionMessage.Reason(DecisionMessage.FLAG_KEY_INVALID, "null"), + ErrorHandler, Logger); + } + var allOptions = GetAllOptions(options). Where(opt => opt != OptimizelyDecideOption.ENABLED_FLAGS_ONLY). ToArray();