diff --git a/OptimizelySDK.Tests/OptimizelyFactoryTest.cs b/OptimizelySDK.Tests/OptimizelyFactoryTest.cs index 4d669755..1ae01b44 100644 --- a/OptimizelySDK.Tests/OptimizelyFactoryTest.cs +++ b/OptimizelySDK.Tests/OptimizelyFactoryTest.cs @@ -193,6 +193,17 @@ public void TestEventProcessorWithBatchEventProcessorObj() Assert.AreEqual(actualEventProcessorProps, expectedEventProcessorProps); optimizely.Dispose(); } - } + [Test] + public void TestGetFeatureVariableJSONEmptyDatafileTest() + { + var httpClientMock = new Mock(); + var task = TestHttpProjectConfigManagerUtil.MockSendAsync(httpClientMock, TestData.EmptyDatafile, TimeSpan.Zero, System.Net.HttpStatusCode.OK); + TestHttpProjectConfigManagerUtil.SetClientFieldValue(httpClientMock.Object); + + var optimizely = OptimizelyFactory.NewDefaultInstance("sdk-key"); + Assert.Null(optimizely.GetFeatureVariableJSON("no-feature-variable", "no-variable-key", "userId")); + optimizely.Dispose(); + } + } } diff --git a/OptimizelySDK.Tests/OptimizelySDK.Tests.csproj b/OptimizelySDK.Tests/OptimizelySDK.Tests.csproj index eb22549c..90bff004 100644 --- a/OptimizelySDK.Tests/OptimizelySDK.Tests.csproj +++ b/OptimizelySDK.Tests/OptimizelySDK.Tests.csproj @@ -120,6 +120,7 @@ + diff --git a/OptimizelySDK.Tests/Utils/TestData.cs b/OptimizelySDK.Tests/Utils/TestData.cs index 32688d8b..1d173659 100644 --- a/OptimizelySDK.Tests/Utils/TestData.cs +++ b/OptimizelySDK.Tests/Utils/TestData.cs @@ -1,5 +1,5 @@ /* - * Copyright 2017-2019, Optimizely + * Copyright 2017-2020, Optimizely * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ public class TestData private static string unsupportedVersionDatafile = null; private static string typedAudienceDatafile = null; private static string emptyRolloutDatafile = null; + private static string emptyDatafile = null; public static string Datafile { @@ -59,6 +60,12 @@ public static string EmptyRolloutDatafile { } } + public static string EmptyDatafile { + get { + return emptyDatafile ?? (emptyDatafile = LoadJsonData("emptydatafile.json")); + } + } + public static string TypedAudienceDatafile { get diff --git a/OptimizelySDK.Tests/emptydatafile.json b/OptimizelySDK.Tests/emptydatafile.json new file mode 100644 index 00000000..7cadd201 --- /dev/null +++ b/OptimizelySDK.Tests/emptydatafile.json @@ -0,0 +1,15 @@ +{ + "version": "4", + "rollouts": [], + "anonymizeIP": true, + "projectId": "10431130345", + "variables": [], + "featureFlags": [], + "experiments": [], + "audiences": [], + "groups": [], + "attributes": [], + "accountId": "10367498574", + "events": [], + "revision": "241" +} diff --git a/OptimizelySDK/OptimizelyFactory.cs b/OptimizelySDK/OptimizelyFactory.cs index f6c10e02..95d74960 100644 --- a/OptimizelySDK/OptimizelyFactory.cs +++ b/OptimizelySDK/OptimizelyFactory.cs @@ -72,7 +72,7 @@ public static Optimizely NewDefaultInstance() if (httpProjectConfigElement == null) return null; - var errorHandler = new DefaultErrorHandler(); + var errorHandler = new DefaultErrorHandler(logger, false); var eventDispatcher = new DefaultEventDispatcher(logger); var builder = new HttpProjectConfigManager.Builder(); var notificationCenter = new NotificationCenter(); @@ -119,7 +119,7 @@ public static Optimizely NewDefaultInstance(string sdkKey) public static Optimizely NewDefaultInstance(string sdkKey, string fallback, string datafileAuthToken) { var logger = OptimizelyLogger ?? new DefaultLogger(); - var errorHandler = new DefaultErrorHandler(); + var errorHandler = new DefaultErrorHandler(logger, false); var eventDispatcher = new DefaultEventDispatcher(logger); var builder = new HttpProjectConfigManager.Builder(); var notificationCenter = new NotificationCenter(); @@ -151,7 +151,7 @@ public static Optimizely NewDefaultInstance(string sdkKey, string fallback, stri public static Optimizely NewDefaultInstance(string sdkKey, string fallback) { var logger = OptimizelyLogger ?? new DefaultLogger(); - var errorHandler = new DefaultErrorHandler(); + var errorHandler = new DefaultErrorHandler(logger, false); var eventDispatcher = new DefaultEventDispatcher(logger); var builder = new HttpProjectConfigManager.Builder(); var notificationCenter = new NotificationCenter();