From 0fda65f1ed25ca4eb9af091cf60d0a307a1647be Mon Sep 17 00:00:00 2001 From: Robert Ing Date: Mon, 7 Jul 2025 09:29:07 -0400 Subject: [PATCH 1/2] refactor: Add try/catch --- src/BrazeKit-dev.js | 20 +++++++++++++------- test/tests.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/BrazeKit-dev.js b/src/BrazeKit-dev.js index fd97f77..711f5fd 100644 --- a/src/BrazeKit-dev.js +++ b/src/BrazeKit-dev.js @@ -992,13 +992,19 @@ var constructor = function () { } function decodeSubscriptionGroupMappings(subscriptionGroupSetting) { - var subscriptionGroupIds = {}; - var decodedSetting = subscriptionGroupSetting.replace(/"/g, '"'); - var parsedSetting = JSON.parse(decodedSetting); - for (let subscriptionGroupMap of parsedSetting) { - var key = subscriptionGroupMap.map; - var value = subscriptionGroupMap.value; - subscriptionGroupIds[key] = value; + var subscriptionGroupIds = {}; + try { + var decodedSetting = subscriptionGroupSetting.replace(/"/g, '"'); + var parsedSetting = JSON.parse(decodedSetting); + for (let subscriptionGroupMap of parsedSetting) { + var key = subscriptionGroupMap.map; + var value = subscriptionGroupMap.value; + subscriptionGroupIds[key] = value; + } + } catch (e) { + console.error( + 'Unable to configure custom Braze subscription group mappings.' + ); } return subscriptionGroupIds; } diff --git a/test/tests.js b/test/tests.js index 861d1c1..12fb6d2 100644 --- a/test/tests.js +++ b/test/tests.js @@ -1206,6 +1206,35 @@ describe('Braze Forwarder', function() { mParticle.forwarder.msg.should.equal(expectedMessage) }); + it.only('should handle malformed JSON in decodeSubscriptionGroupMappings gracefully', function() { + // Mock console.error to capture the error message + var originalConsoleError = console.error; + var errorMessages = []; + console.error = function(message) { + console.log('console.error', message); + errorMessages.push(message); + }; + + // Test with malformed JSON (truly invalid JSON that will cause parse error) + var malformedSubscriptionGroupMapping = 'invalid json string that will cause parse error'; + + // This should not throw an error and should return an empty object + var result = mParticle.forwarder.decodeSubscriptionGroupMappings(malformedSubscriptionGroupMapping); + + // Verify it returns an empty object + result.should.deepEqual({}); + + // Verify error was logged + errorMessages.length.should.equal(1); + + errorMessages[0].should.equal( + 'Unable to configure custom Braze subscription group mappings.' + ); + + // Restore console.error + console.error = originalConsoleError; + }); + it('should not set default values if a string is not passed as the attribute', function() { mParticle.forwarder.setUserAttribute('first_name', 'John'); mParticle.forwarder.setUserAttribute('last_name', 'Doe'); From 151303631e7824409852a600fffaddb52dbfe4dc Mon Sep 17 00:00:00 2001 From: Robert Ing Date: Mon, 7 Jul 2025 09:30:02 -0400 Subject: [PATCH 2/2] remove it.only --- test/tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tests.js b/test/tests.js index 12fb6d2..3eb165c 100644 --- a/test/tests.js +++ b/test/tests.js @@ -1206,7 +1206,7 @@ describe('Braze Forwarder', function() { mParticle.forwarder.msg.should.equal(expectedMessage) }); - it.only('should handle malformed JSON in decodeSubscriptionGroupMappings gracefully', function() { + it('should handle malformed JSON in decodeSubscriptionGroupMappings gracefully', function() { // Mock console.error to capture the error message var originalConsoleError = console.error; var errorMessages = [];