diff --git a/packages/optimizely-sdk/lib/core/optimizely_config/index.tests.js b/packages/optimizely-sdk/lib/core/optimizely_config/index.tests.js index e8509bf1a..e38798156 100644 --- a/packages/optimizely-sdk/lib/core/optimizely_config/index.tests.js +++ b/packages/optimizely-sdk/lib/core/optimizely_config/index.tests.js @@ -1,5 +1,5 @@ /** - * Copyright 2019-2020, Optimizely + * Copyright 2019-2021, Optimizely * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -137,5 +137,13 @@ describe('lib/core/optimizely_config', function() { it('should return correct config revision', function() { assert.equal(optimizelyConfigObject.revision, datafile.revision); }); + + it('should return correct config sdkKey ', function() { + assert.equal(optimizelyConfigObject.sdkKey, datafile.sdkKey); + }); + + it('should return correct config environmentKey ', function() { + assert.equal(optimizelyConfigObject.environmentKey, datafile.environmentKey); + }); }); }); diff --git a/packages/optimizely-sdk/lib/core/optimizely_config/index.ts b/packages/optimizely-sdk/lib/core/optimizely_config/index.ts index a375fd345..788339d3a 100644 --- a/packages/optimizely-sdk/lib/core/optimizely_config/index.ts +++ b/packages/optimizely-sdk/lib/core/optimizely_config/index.ts @@ -37,6 +37,8 @@ export class OptimizelyConfig { public experimentsMap: OptimizelyExperimentsMap; public featuresMap: OptimizelyFeaturesMap; public revision: string; + public sdkKey?: string; + public environmentKey?: string; private datafile: string; constructor(configObj: ProjectConfig, datafile: string) { @@ -44,6 +46,11 @@ export class OptimizelyConfig { this.featuresMap = OptimizelyConfig.getFeaturesMap(configObj, this.experimentsMap); this.revision = configObj.revision; this.datafile = datafile; + + if (configObj.sdkKey && configObj.environmentKey) { + this.sdkKey = configObj.sdkKey; + this.environmentKey = configObj.environmentKey; + } } /** diff --git a/packages/optimizely-sdk/lib/core/project_config/index.tests.js b/packages/optimizely-sdk/lib/core/project_config/index.tests.js index 8209359f2..deae463cf 100644 --- a/packages/optimizely-sdk/lib/core/project_config/index.tests.js +++ b/packages/optimizely-sdk/lib/core/project_config/index.tests.js @@ -1,5 +1,5 @@ /** - * Copyright 2016-2020, Optimizely + * Copyright 2016-2021, Optimizely * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ import sinon from 'sinon'; -import { assert, expect, config } from 'chai'; +import { assert } from 'chai'; import { forEach, cloneDeep } from 'lodash'; import { getLogger } from '@optimizely/js-sdk-logging'; import { sprintf } from '@optimizely/js-sdk-utils'; diff --git a/packages/optimizely-sdk/lib/core/project_config/index.ts b/packages/optimizely-sdk/lib/core/project_config/index.ts index 64b5ca8f6..a5c093b94 100644 --- a/packages/optimizely-sdk/lib/core/project_config/index.ts +++ b/packages/optimizely-sdk/lib/core/project_config/index.ts @@ -58,6 +58,8 @@ interface VariableUsageMap { export interface ProjectConfig { revision: string; projectId: string; + sdkKey?: string; + environmentKey?: string; sendFlagDecisions?: boolean; experimentKeyMap: { [key: string]: Experiment }; featureKeyMap: { @@ -116,6 +118,12 @@ function createMutationSafeDatafileCopy(datafile: any): ProjectConfig { }); return rolloutCopy; }); + + if (datafile.environmentKey && datafile.sdkKey) { + datafileCopy.environmentKey = datafile.environmentKey; + datafileCopy.sdkKey = datafile.sdkKey; + } + return datafileCopy; } diff --git a/packages/optimizely-sdk/lib/shared_types.ts b/packages/optimizely-sdk/lib/shared_types.ts index 347f43c64..f91cac9ab 100644 --- a/packages/optimizely-sdk/lib/shared_types.ts +++ b/packages/optimizely-sdk/lib/shared_types.ts @@ -304,6 +304,8 @@ export interface OptimizelyConfig { experimentsMap: OptimizelyExperimentsMap; featuresMap: OptimizelyFeaturesMap; revision: string; + sdkKey?: string; + environmentKey?: string; getDatafile(): string; } diff --git a/packages/optimizely-sdk/lib/tests/test_data.js b/packages/optimizely-sdk/lib/tests/test_data.js index e36c6cbc0..39fa7bd4c 100644 --- a/packages/optimizely-sdk/lib/tests/test_data.js +++ b/packages/optimizely-sdk/lib/tests/test_data.js @@ -418,6 +418,8 @@ var decideConfig = { ], anonymizeIP: true, botFiltering: true, + sdkKey: 'ValidProjectConfigV4', + environmentKey: 'production', projectId: '10431130345', variables: [], featureFlags: [ @@ -1143,6 +1145,8 @@ var configWithFeatures = { ], anonymizeIP: true, botFiltering: true, + sdkKey: 'ValidProjectConfigV4', + environmentKey: 'development', audiences: [ { id: '594017',