diff --git a/packages/analytics-plugin-aws-pinpoint/src/pinpoint/helpers/prepare-data.js b/packages/analytics-plugin-aws-pinpoint/src/pinpoint/helpers/prepare-data.js index c4aa3c51..819fdf8e 100644 --- a/packages/analytics-plugin-aws-pinpoint/src/pinpoint/helpers/prepare-data.js +++ b/packages/analytics-plugin-aws-pinpoint/src/pinpoint/helpers/prepare-data.js @@ -56,10 +56,10 @@ function sanitizeAttribute(value) { // If null or undefined if (value == null) return if (Array.isArray(value)) { - return value.filter(notEmpty).map((val) => val.toString()) + return value.filter(notEmpty).map((val) => val.toString().substring(0, 200)) } // @TODO guard against null here - return isNullOrUndef(value) ? value : value.toString() + return isNullOrUndef(value) ? value : value.toString().substring(0, 200) } /** diff --git a/packages/analytics-plugin-aws-pinpoint/tests/pinpoint/helpers/prepare-data.test.js b/packages/analytics-plugin-aws-pinpoint/tests/pinpoint/helpers/prepare-data.test.js index efab633f..cca3dbeb 100644 --- a/packages/analytics-plugin-aws-pinpoint/tests/pinpoint/helpers/prepare-data.test.js +++ b/packages/analytics-plugin-aws-pinpoint/tests/pinpoint/helpers/prepare-data.test.js @@ -20,6 +20,16 @@ test('should sanitize attributes', async (t) => { }) }) +test('should limit attribute length', async (t) => { + const sanitized = await prepareData.prepareAttributes({ + foo: '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890___', + }) + + t.deepEqual(sanitized, { + foo: '12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890', + }) +}) + test('should remove undefined or null attributes', async (t) => { const sanitized = await prepareData.prepareAttributes({ foo: undefined,