diff --git a/services/web/app/src/Features/Analytics/AnalyticsManager.js b/services/web/app/src/Features/Analytics/AnalyticsManager.js index 22c068b115..7d8cce9f12 100644 --- a/services/web/app/src/Features/Analytics/AnalyticsManager.js +++ b/services/web/app/src/Features/Analytics/AnalyticsManager.js @@ -243,7 +243,7 @@ function _checkPropertyValue(propertyValue) { } function _isAttributeValid(attribute) { - return attribute && /^[a-zA-Z0-9-_.:;,/]+$/.test(attribute) + return !attribute || /^[a-zA-Z0-9-_.:;,/]+$/.test(attribute) } function _isSegmentationValid(segmentation) { diff --git a/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js b/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js index 796c00516a..72d3ff7544 100644 --- a/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js +++ b/services/web/test/unit/src/Analytics/AnalyticsManagerTests.js @@ -209,6 +209,35 @@ describe('AnalyticsManager', function () { } ) }) + + it('empty field in event segmentation', async function () { + const timings = null + await this.AnalyticsManager.recordEventForUser( + this.fakeUserId, + 'an_event', + { compileTime: timings?.compileE2E } + ) + sinon.assert.calledWithMatch(this.analyticsEventsQueue.add, 'event', { + analyticsId: this.analyticsId, + event: 'an_event', + segmentation: { compileTime: undefined }, + isLoggedIn: true, + }) + }) + + it('boolean field in event segmentation', async function () { + await this.AnalyticsManager.recordEventForUser( + this.fakeUserId, + 'an_event', + { isAutoCompile: false } + ) + sinon.assert.calledWithMatch(this.analyticsEventsQueue.add, 'event', { + analyticsId: this.analyticsId, + event: 'an_event', + segmentation: { isAutoCompile: false }, + isLoggedIn: true, + }) + }) }) describe('AnalyticsIdMiddleware', function () {