From 012ff8ad70ad5ba98c0d475925bfdf59ceaad29d Mon Sep 17 00:00:00 2001 From: roo hutton Date: Wed, 26 Mar 2025 08:08:10 +0000 Subject: [PATCH] Merge pull request #24125 from overleaf/rh-current-version-fix Fix version check for undefined split tests GitOrigin-RevId: bbbd44a27ca41c5ffac02cb34ac0049a14cd13e4 --- .../web/app/src/Features/SplitTests/SplitTestHandler.js | 8 ++++++++ .../web/test/unit/src/SplitTests/SplitTestHandlerTests.js | 7 +++++++ 2 files changed, 15 insertions(+) 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