diff --git a/services/web/app/src/Features/Analytics/AnalyticsManager.js b/services/web/app/src/Features/Analytics/AnalyticsManager.js index 776a15db6f..cc3a6741f4 100644 --- a/services/web/app/src/Features/Analytics/AnalyticsManager.js +++ b/services/web/app/src/Features/Analytics/AnalyticsManager.js @@ -275,25 +275,16 @@ function _isAttributeValueValid(attributeValue) { return _isAttributeValid(attributeValue) || attributeValue instanceof Date } -function _isSegmentationValueValid(attributeValue) { - // spaces and %-escaped values are allowed for segmentation values - return !attributeValue || /^[a-zA-Z0-9-_.:;,/ %]+$/.test(attributeValue) -} - function _isSegmentationValid(segmentation) { - if (!segmentation) { - return true + if (segmentation) { + for (const key of Object.keys(segmentation)) { + if (!_isAttributeValid(key)) { + return false + } + } } - const hasAnyInvalidKey = [...Object.keys(segmentation)].some( - key => !_isAttributeValid(key) - ) - - const hasAnyInvalidValue = [...Object.values(segmentation)].some( - value => !_isSegmentationValueValid(value) - ) - - return !hasAnyInvalidKey && !hasAnyInvalidValue + return true } function getIdsFromSession(session) { diff --git a/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js b/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js index 0eb9468e1a..c21486dad2 100644 --- a/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js +++ b/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js @@ -112,7 +112,7 @@ describe('AnalyticsManager', function () { this.fakeUserId, '789ghi', 'fr', - { key: '' } + { '': 'foo' } ) sinon.assert.called(this.logger.info) sinon.assert.notCalled(this.analyticsEditingSessionQueue.add) @@ -131,7 +131,7 @@ describe('AnalyticsManager', function () { await this.AnalyticsManager.recordEventForUser( this.fakeUserId, 'an_event', - { not_a: 'Valid Segmentation!' } + { 'not_a!': 'Valid Segmentation' } ) sinon.assert.called(this.logger.info) sinon.assert.notCalled(this.analyticsEventsQueue.add)