diff --git a/services/web/app/src/Features/SplitTests/SplitTestHandler.js b/services/web/app/src/Features/SplitTests/SplitTestHandler.js index 491c236a3c..5dcf00967b 100644 --- a/services/web/app/src/Features/SplitTests/SplitTestHandler.js +++ b/services/web/app/src/Features/SplitTests/SplitTestHandler.js @@ -150,6 +150,14 @@ async function hasUserBeenAssignedToVariant( const splitTest = await _getSplitTest(splitTestName) const currentVersion = SplitTestUtils.getCurrentVersion(splitTest) + if ( + !userId || + !SessionManager.isUserLoggedIn(session) || + !currentVersion?.active + ) { + return false + } + // Check the query string for an override, ignoring an invalid value const queryVariant = query[splitTestName] if (queryVariant === variant) { diff --git a/services/web/test/unit/src/SplitTests/SplitTestHandlerTests.js b/services/web/test/unit/src/SplitTests/SplitTestHandlerTests.js index 7fa6fd4003..a682f0c954 100644 --- a/services/web/test/unit/src/SplitTests/SplitTestHandlerTests.js +++ b/services/web/test/unit/src/SplitTests/SplitTestHandlerTests.js @@ -55,12 +55,17 @@ describe('SplitTestHandler', function () { } this.SplitTestSessionHandler = { collectSessionStats: sinon.stub(), + getCachedVariant: sinon.stub(), + setVariantInCache: sinon.stub(), } this.SplitTestUserGetter = { promises: { getUser: sinon.stub().resolves(null), }, } + this.SessionManager = { + isUserLoggedIn: sinon.stub().returns(false), + } this.SplitTestHandler = SandboxedModule.require(MODULE_PATH, { requires: { @@ -72,6 +77,7 @@ describe('SplitTestHandler', function () { './LocalsHelper': this.LocalsHelper, './SplitTestSessionHandler': this.SplitTestSessionHandler, './SplitTestUserGetter': this.SplitTestUserGetter, + '../Authentication/SessionManager': this.SessionManager, '@overleaf/settings': this.Settings, }, }) @@ -105,6 +111,7 @@ describe('SplitTestHandler', function () { }, } this.SplitTestUserGetter.promises.getUser.resolves(this.user) + this.SessionManager.isUserLoggedIn.returns(true) this.assignments = await this.SplitTestHandler.promises.getActiveAssignmentsForUser( this.user._id