Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions src/BrazeKit-dev.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
29 changes: 29 additions & 0 deletions test/tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -1206,6 +1206,35 @@ describe('Braze Forwarder', function() {
mParticle.forwarder.msg.should.equal(expectedMessage)
});

it('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');
Expand Down