From 4208200f57e2bfb59cd4291388aa7f87d5ef3748 Mon Sep 17 00:00:00 2001 From: Jaissica Date: Thu, 18 Sep 2025 14:56:51 -0400 Subject: [PATCH 1/3] fix: updated parseSettingsString in initialization module --- src/initialization.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/initialization.js b/src/initialization.js index b4df68b..74528a0 100644 --- a/src/initialization.js +++ b/src/initialization.js @@ -92,7 +92,15 @@ function initializeGoogleDFP(common, settings, isInitialized) { } function parseSettingsString(settingsString) { - return JSON.parse(settingsString.replace(/"/g, '"')); + if (!settingsString) { + return []; + } + try { + return JSON.parse(settingsString.replace(/"/g, '"')); + } catch (error) { + console.error('Settings string contains invalid JSON'); + } + return []; } module.exports = initialization; From 0eae4586853b1018b50aa17d63bd2180b2e22744 Mon Sep 17 00:00:00 2001 From: Jaissica Date: Thu, 18 Sep 2025 17:50:44 -0400 Subject: [PATCH 2/3] test: updated tests for parseSettingsString --- test/tests.js | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/test/tests.js b/test/tests.js index 677ecae..1104db6 100644 --- a/test/tests.js +++ b/test/tests.js @@ -1265,4 +1265,96 @@ describe('DoubleClick', function () { done(); }); }); + + describe('Parse Settings String', function () { + it('should treat falsy settings as empty mappings', function (done) { + mParticle.forwarder.init( + { + advertiserId: '123456', + eventMapping: null, + customVariables: null, + customParams: null, + }, + reportService.cb, + true + ); + + window.dataLayer = []; + + const result = mParticle.forwarder.process({ + EventDataType: MessageTypes.PageEvent, + EventCategory: mParticle.EventType.Unknown, + EventName: 'Test Event', + CustomFlags: { 'DoubleClick.Counter': 'standard' }, + }); + + result.should.equal( + 'Error logging event or event type not supported on forwarder DoubleclickDFP' + ); + window.dataLayer.length.should.equal(0); + done(); + }); + + it('should parse arrays with "', function (done) { + mParticle.forwarder.init( + { + advertiserId: '123456', + eventMapping: + '[{"jsmap":"-1978027768","map":"x","maptype":"EventClass.Id","value":"g;a"}]', + customVariables: '[]', + customParams: '[]', + }, + reportService.cb, + true + ); + + window.dataLayer = []; + + mParticle.forwarder.process({ + EventDataType: MessageTypes.PageEvent, + EventCategory: mParticle.EventType.Unknown, + EventName: 'Test Event', + CustomFlags: { 'DoubleClick.Counter': 'standard' }, + }); + + window.dataLayer[0][0].should.equal('event'); + window.dataLayer[0][1].should.equal('conversion'); + window.dataLayer[0][2].should.have.property( + 'send_to', + 'DC-123456/g/a+standard' + ); + done(); + }); + + it('should fall back to empty mappings when settings string is invalid', function (done) { + mParticle.forwarder.init( + { + advertiserId: '123456', + eventMapping: + '[{"jsmap":"-1978027768","map":"x","maptype":"EventClass.Id","value":"g;a"}]', + customVariables: 'invalid]', + customParams: '[invalid', + }, + reportService.cb, + true + ); + + window.dataLayer = []; + + mParticle.forwarder.process({ + EventDataType: MessageTypes.PageEvent, + EventCategory: mParticle.EventType.Unknown, + EventName: 'Test Event', + EventAttributes: { 'Total Amount': 123, color: 'blue', product_id: 'p1' }, + CustomFlags: { 'DoubleClick.Counter': 'standard' }, + }); + + window.dataLayer[0][0].should.equal('event'); + window.dataLayer[0][1].should.equal('conversion'); + window.dataLayer[0][2].should.not.have.property('u1'); + window.dataLayer[0][2].should.not.have.property('u2'); + window.dataLayer[0][2].should.not.have.property('dc_custom_params'); + done(); + }); + }); }); From 580c4ca0ede48a4c8456eeb09d5b0f4eed8895d5 Mon Sep 17 00:00:00 2001 From: Jaissica Date: Thu, 25 Sep 2025 16:58:52 -0400 Subject: [PATCH 3/3] chore: remove duplicate test --- test/tests.js | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/test/tests.js b/test/tests.js index 1104db6..5ceb5ed 100644 --- a/test/tests.js +++ b/test/tests.js @@ -1325,36 +1325,5 @@ describe('DoubleClick', function () { ); done(); }); - - it('should fall back to empty mappings when settings string is invalid', function (done) { - mParticle.forwarder.init( - { - advertiserId: '123456', - eventMapping: - '[{"jsmap":"-1978027768","map":"x","maptype":"EventClass.Id","value":"g;a"}]', - customVariables: 'invalid]', - customParams: '[invalid', - }, - reportService.cb, - true - ); - - window.dataLayer = []; - - mParticle.forwarder.process({ - EventDataType: MessageTypes.PageEvent, - EventCategory: mParticle.EventType.Unknown, - EventName: 'Test Event', - EventAttributes: { 'Total Amount': 123, color: 'blue', product_id: 'p1' }, - CustomFlags: { 'DoubleClick.Counter': 'standard' }, - }); - - window.dataLayer[0][0].should.equal('event'); - window.dataLayer[0][1].should.equal('conversion'); - window.dataLayer[0][2].should.not.have.property('u1'); - window.dataLayer[0][2].should.not.have.property('u2'); - window.dataLayer[0][2].should.not.have.property('dc_custom_params'); - done(); - }); }); });