From e40e8627b2a552412c38790fb74b0939a3e90399 Mon Sep 17 00:00:00 2001 From: Raju Ahmed Date: Fri, 14 Nov 2025 09:10:10 +0600 Subject: [PATCH 1/2] [FSSDK-12075] fix odp logging --- lib/message/error_message.ts | 2 +- lib/optimizely/index.spec.ts | 46 ++++++++++++++++++++++++++++++++++++ lib/optimizely/index.ts | 5 ++-- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/lib/message/error_message.ts b/lib/message/error_message.ts index ab84e38ed..61f876f4a 100644 --- a/lib/message/error_message.ts +++ b/lib/message/error_message.ts @@ -39,7 +39,7 @@ export const NO_VARIATION_FOR_EXPERIMENT_KEY = 'No variation key %s defined in d export const ODP_CONFIG_NOT_AVAILABLE = 'ODP config is not available.'; export const ODP_EVENT_FAILED = 'ODP event send failed.'; export const ODP_EVENTS_SHOULD_HAVE_ATLEAST_ONE_KEY_VALUE = 'ODP events should have at least one key-value pair in identifiers.'; -export const ODP_EVENT_FAILED_ODP_MANAGER_MISSING = 'ODP Event failed to send. (ODP Manager not available).'; +export const ODP_MANAGER_MISSING = 'ODP Manager is missing. %s failed.'; export const ODP_NOT_INTEGRATED = 'ODP is not integrated'; export const UNDEFINED_ATTRIBUTE = 'Provided attribute: %s has an undefined value.'; export const UNRECOGNIZED_ATTRIBUTE = diff --git a/lib/optimizely/index.spec.ts b/lib/optimizely/index.spec.ts index 4548ffbb7..8273a5357 100644 --- a/lib/optimizely/index.spec.ts +++ b/lib/optimizely/index.spec.ts @@ -31,6 +31,7 @@ import { newErrorDecision } from '../optimizely_decision'; import { ImpressionEvent } from '../event_processor/event_builder/user_event'; import { OptimizelyDecideOption } from '../shared_types'; import { NOTIFICATION_TYPES, DECISION_NOTIFICATION_TYPES } from '../notification_center/type'; +import { ODP_MANAGER_MISSING } from '../message/error_message'; const holdoutData = [ @@ -905,4 +906,49 @@ describe('Optimizely', () => { expect(optimizely.isRunning()).toBe(true); }); + + it('should log error when sendOdpEvent is called without odpManager', () => { + const projectConfigManager = getMockProjectConfigManager({ + initConfig: createProjectConfig(testData.getTestProjectConfig()), + }); + + const mockLogger = getMockLogger(); + const optimizely = new Optimizely({ + clientEngine: 'node-sdk', + projectConfigManager, + jsonSchemaValidator, + logger: mockLogger, + eventProcessor, + disposable: true, + cmabService: {} as any + // odpManager is not provided + }); + + optimizely.sendOdpEvent('test_action', 'test_type'); + + expect(mockLogger.error).toHaveBeenCalledWith(ODP_MANAGER_MISSING, 'sendOdpEvent'); + }); + + it('should log error when fetchQualifiedSegments is called without odpManager', async () => { + const projectConfigManager = getMockProjectConfigManager({ + initConfig: createProjectConfig(testData.getTestProjectConfig()), + }); + + const mockLogger = getMockLogger(); + const optimizely = new Optimizely({ + clientEngine: 'node-sdk', + projectConfigManager, + jsonSchemaValidator, + logger: mockLogger, + eventProcessor, + disposable: true, + cmabService: {} as any + // odpManager is not provided + }); + + const result = await optimizely.fetchQualifiedSegments('test_user'); + + expect(result).toBeNull(); + expect(mockLogger.error).toHaveBeenCalledWith(ODP_MANAGER_MISSING, 'fetchQualifiedSegments'); + }); }); diff --git a/lib/optimizely/index.ts b/lib/optimizely/index.ts index b8707a006..2381e8a80 100644 --- a/lib/optimizely/index.ts +++ b/lib/optimizely/index.ts @@ -69,7 +69,7 @@ import { INVALID_INPUT_FORMAT, NO_EVENT_PROCESSOR, ODP_EVENT_FAILED, - ODP_EVENT_FAILED_ODP_MANAGER_MISSING, + ODP_MANAGER_MISSING, UNABLE_TO_GET_VUID_VUID_MANAGER_NOT_AVAILABLE, UNRECOGNIZED_DECIDE_OPTION, NO_PROJECT_CONFIG_FAILURE, @@ -1750,7 +1750,7 @@ export default class Optimizely extends BaseService implements Client { data?: Map ): void { if (!this.odpManager) { - this.logger?.error(ODP_EVENT_FAILED_ODP_MANAGER_MISSING); + this.logger?.error(ODP_MANAGER_MISSING, 'sendOdpEvent'); return; } @@ -1780,6 +1780,7 @@ export default class Optimizely extends BaseService implements Client { options?: Array ): Promise { if (!this.odpManager) { + this.logger?.error(ODP_MANAGER_MISSING, 'fetchQualifiedSegments'); return null; } From b35297ab27faa00f7a6ab2dc0a3eb6dd3a24e7c9 Mon Sep 17 00:00:00 2001 From: Raju Ahmed Date: Fri, 14 Nov 2025 09:12:35 +0600 Subject: [PATCH 2/2] up --- lib/optimizely/index.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/optimizely/index.spec.ts b/lib/optimizely/index.spec.ts index 8273a5357..4ed119fba 100644 --- a/lib/optimizely/index.spec.ts +++ b/lib/optimizely/index.spec.ts @@ -31,7 +31,7 @@ import { newErrorDecision } from '../optimizely_decision'; import { ImpressionEvent } from '../event_processor/event_builder/user_event'; import { OptimizelyDecideOption } from '../shared_types'; import { NOTIFICATION_TYPES, DECISION_NOTIFICATION_TYPES } from '../notification_center/type'; -import { ODP_MANAGER_MISSING } from '../message/error_message'; +import { ODP_MANAGER_MISSING } from 'error_message'; const holdoutData = [