From 16660904301eef545a925d310172ef7c314851ba Mon Sep 17 00:00:00 2001 From: Sohail Hussain Date: Wed, 2 Sep 2020 12:42:06 -0700 Subject: [PATCH 1/2] error handler not raise exception while using optimizelyfactory --- OptimizelySDK.Tests/OptimizelyFactoryTest.cs | 13 +++++++++++++ OptimizelySDK.Tests/OptimizelySDK.Tests.csproj | 1 + OptimizelySDK.Tests/Utils/TestData.cs | 7 +++++++ OptimizelySDK.Tests/emptydatafile.json | 15 +++++++++++++++ OptimizelySDK/OptimizelyFactory.cs | 6 +++--- 5 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 OptimizelySDK.Tests/emptydatafile.json diff --git a/OptimizelySDK.Tests/OptimizelyFactoryTest.cs b/OptimizelySDK.Tests/OptimizelyFactoryTest.cs index 4d669755..c4edd793 100644 --- a/OptimizelySDK.Tests/OptimizelyFactoryTest.cs +++ b/OptimizelySDK.Tests/OptimizelyFactoryTest.cs @@ -193,6 +193,19 @@ 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..65c56ab4 100644 --- a/OptimizelySDK.Tests/Utils/TestData.cs +++ b/OptimizelySDK.Tests/Utils/TestData.cs @@ -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(); From 4d85b771e7b4a9e2797744e04e15ae4688ed7c1e Mon Sep 17 00:00:00 2001 From: Sohail Hussain Date: Wed, 2 Sep 2020 12:46:01 -0700 Subject: [PATCH 2/2] nit fix --- OptimizelySDK.Tests/OptimizelyFactoryTest.cs | 2 -- OptimizelySDK.Tests/Utils/TestData.cs | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/OptimizelySDK.Tests/OptimizelyFactoryTest.cs b/OptimizelySDK.Tests/OptimizelyFactoryTest.cs index c4edd793..1ae01b44 100644 --- a/OptimizelySDK.Tests/OptimizelyFactoryTest.cs +++ b/OptimizelySDK.Tests/OptimizelyFactoryTest.cs @@ -206,6 +206,4 @@ public void TestGetFeatureVariableJSONEmptyDatafileTest() optimizely.Dispose(); } } - - } diff --git a/OptimizelySDK.Tests/Utils/TestData.cs b/OptimizelySDK.Tests/Utils/TestData.cs index 65c56ab4..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.