Sfoglia il codice sorgente

Merge pull request #22765 from overleaf/ar-convert-final-acceptance-tests-to-es-modules

[web] convert final acceptance tests to es modules

GitOrigin-RevId: d0d0cd3dfedbe494ce51dd6f8c180dff02429ad8
Andrew Rumble 1 anno fa
parent
commit
dc157392ae
90 ha cambiato i file con 225 aggiunte e 219 eliminazioni
  1. 2 2
      services/web/modules/history-v1/test/acceptance/src/HistoryTests.mjs
  2. 6 6
      services/web/modules/history-v1/test/acceptance/src/Init.mjs
  3. 2 2
      services/web/modules/history-v1/test/acceptance/src/LabelsTests.mjs
  4. 2 2
      services/web/modules/history-v1/test/acceptance/src/ProjectStructureTests.mjs
  5. 4 4
      services/web/modules/history-v1/test/acceptance/src/RestoringFilesTest.mjs
  6. 1 1
      services/web/modules/launchpad/test/acceptance/src/LaunchpadTests.mjs
  7. 4 4
      services/web/modules/server-ce-scripts/test/acceptance/src/Init.mjs
  8. 1 1
      services/web/modules/server-ce-scripts/test/acceptance/src/ServerCEScriptsTests.mjs
  9. 3 3
      services/web/test/acceptance/src/ActiveUsersMetricTests.mjs
  10. 1 1
      services/web/test/acceptance/src/AddSecondaryEmailTests.mjs
  11. 1 1
      services/web/test/acceptance/src/AdminEmailTests.mjs
  12. 1 1
      services/web/test/acceptance/src/AdminOnlyLoginTests.mjs
  13. 1 1
      services/web/test/acceptance/src/AdminPrivilegeAvailableTests.mjs
  14. 1 1
      services/web/test/acceptance/src/AuthenticationTests.mjs
  15. 2 2
      services/web/test/acceptance/src/AuthorizationTests.mjs
  16. 3 3
      services/web/test/acceptance/src/BackFillDeletedFilesTests.mjs
  17. 3 3
      services/web/test/acceptance/src/BackFillDocNameForDeletedDocsTests.mjs
  18. 2 2
      services/web/test/acceptance/src/BackFillDocRevTests.mjs
  19. 2 2
      services/web/test/acceptance/src/BackFillDummyDocMetaTests.mjs
  20. 1 1
      services/web/test/acceptance/src/BatchedUpdateTests.mjs
  21. 1 1
      services/web/test/acceptance/src/BetaProgramTests.mjs
  22. 2 2
      services/web/test/acceptance/src/CDNMigrationTests.mjs
  23. 1 1
      services/web/test/acceptance/src/CaptchaTests.mjs
  24. 3 3
      services/web/test/acceptance/src/ClearSessionsSetMustReconfirmTests.mjs
  25. 2 2
      services/web/test/acceptance/src/ConvertArchivedState.mjs
  26. 2 2
      services/web/test/acceptance/src/CookieMetricsTests.mjs
  27. 2 2
      services/web/test/acceptance/src/DeleteOrphanedDocsOnlineCheckTests.mjs
  28. 3 3
      services/web/test/acceptance/src/DeletionTests.mjs
  29. 1 1
      services/web/test/acceptance/src/DocUpdateTests.mjs
  30. 1 1
      services/web/test/acceptance/src/EditorHttpControllerTests.mjs
  31. 2 2
      services/web/test/acceptance/src/HaveIBeenPwnedApiTests.mjs
  32. 1 1
      services/web/test/acceptance/src/HealthCheckControllerTests.mjs
  33. 4 4
      services/web/test/acceptance/src/HistoryTests.mjs
  34. 6 6
      services/web/test/acceptance/src/Init.mjs
  35. 1 1
      services/web/test/acceptance/src/LearnTest.mjs
  36. 2 2
      services/web/test/acceptance/src/LinkedFilesTests.mjs
  37. 1 1
      services/web/test/acceptance/src/MongoHelper.mjs
  38. 1 1
      services/web/test/acceptance/src/PasswordResetTests.mjs
  39. 1 1
      services/web/test/acceptance/src/PasswordUpdateTests.mjs
  40. 2 2
      services/web/test/acceptance/src/PrimaryEmailCheckTests.mjs
  41. 1 1
      services/web/test/acceptance/src/ProjectCRUDTests.mjs
  42. 4 4
      services/web/test/acceptance/src/ProjectDuplicateNameTests.mjs
  43. 1 1
      services/web/test/acceptance/src/ProjectFeaturesTests.mjs
  44. 1 1
      services/web/test/acceptance/src/ProjectInviteTests.mjs
  45. 1 1
      services/web/test/acceptance/src/ProjectOwnershipTransferTests.mjs
  46. 3 3
      services/web/test/acceptance/src/ProjectStructureTests.mjs
  47. 2 2
      services/web/test/acceptance/src/RegenerateDuplicateReferralIdsTests.mjs
  48. 2 2
      services/web/test/acceptance/src/RegistrationTests.mjs
  49. 2 2
      services/web/test/acceptance/src/RemoveDeletedUsersFromTokenAccessRefsTests.mjs
  50. 1 1
      services/web/test/acceptance/src/SecurityHeadersTests.mjs
  51. 4 4
      services/web/test/acceptance/src/ServerCrashTests.mjs
  52. 1 1
      services/web/test/acceptance/src/SessionTests.mjs
  53. 1 1
      services/web/test/acceptance/src/SettingsTests.mjs
  54. 1 1
      services/web/test/acceptance/src/SharingTests.mjs
  55. 2 2
      services/web/test/acceptance/src/TagsTests.mjs
  56. 2 2
      services/web/test/acceptance/src/TokenAccessTests.mjs
  57. 1 1
      services/web/test/acceptance/src/TpdsUpdateTests.mjs
  58. 1 1
      services/web/test/acceptance/src/UnsupportedBrowserTests.mjs
  59. 1 1
      services/web/test/acceptance/src/UserHelperTests.mjs
  60. 2 2
      services/web/test/acceptance/src/UserMembershipAuthorizationTests.mjs
  61. 1 1
      services/web/test/acceptance/src/UserReconfirmTests.mjs
  62. 1 1
      services/web/test/acceptance/src/helpers/MongoHelper.mjs
  63. 6 4
      services/web/test/acceptance/src/helpers/Publisher.mjs
  64. 1 1
      services/web/test/acceptance/src/helpers/RecurlySubscription.mjs
  65. 11 8
      services/web/test/acceptance/src/helpers/SAMLHelper.mjs
  66. 3 3
      services/web/test/acceptance/src/helpers/SplitTestHelper.mjs
  67. 14 12
      services/web/test/acceptance/src/helpers/User.mjs
  68. 17 18
      services/web/test/acceptance/src/helpers/UserHelper.mjs
  69. 2 2
      services/web/test/acceptance/src/helpers/expectErrorResponse.mjs
  70. 5 5
      services/web/test/acceptance/src/helpers/groupSSO.mjs
  71. 4 4
      services/web/test/acceptance/src/helpers/metrics.mjs
  72. 4 4
      services/web/test/acceptance/src/mocks/AbstractMockApi.mjs
  73. 1 1
      services/web/test/acceptance/src/mocks/MockAnalyticsApi.mjs
  74. 1 1
      services/web/test/acceptance/src/mocks/MockChatApi.mjs
  75. 1 1
      services/web/test/acceptance/src/mocks/MockClsiApi.mjs
  76. 2 2
      services/web/test/acceptance/src/mocks/MockDocUpdaterApi.mjs
  77. 3 3
      services/web/test/acceptance/src/mocks/MockDocstoreApi.mjs
  78. 2 2
      services/web/test/acceptance/src/mocks/MockFilestoreApi.mjs
  79. 1 1
      services/web/test/acceptance/src/mocks/MockGitBridgeApi.mjs
  80. 2 2
      services/web/test/acceptance/src/mocks/MockGoogleOauthApi.mjs
  81. 1 1
      services/web/test/acceptance/src/mocks/MockHaveIBeenPwnedApi.mjs
  82. 1 1
      services/web/test/acceptance/src/mocks/MockHistoryBackupDeletionApi.mjs
  83. 1 1
      services/web/test/acceptance/src/mocks/MockNotificationsApi.mjs
  84. 7 7
      services/web/test/acceptance/src/mocks/MockProjectHistoryApi.mjs
  85. 1 1
      services/web/test/acceptance/src/mocks/MockReCaptchaApi.mjs
  86. 4 4
      services/web/test/acceptance/src/mocks/MockRecurlyApi.mjs
  87. 1 1
      services/web/test/acceptance/src/mocks/MockSpellingApi.mjs
  88. 1 1
      services/web/test/acceptance/src/mocks/MockThirdPartyDataStoreApi.mjs
  89. 4 4
      services/web/test/acceptance/src/mocks/MockV1Api.mjs
  90. 6 6
      services/web/test/acceptance/src/mocks/MockV1HistoryApi.mjs

+ 2 - 2
services/web/modules/history-v1/test/acceptance/src/HistoryTests.mjs

@@ -2,8 +2,8 @@ import { expect } from 'chai'
 
 import _ from 'lodash'
 import { db, ObjectId } from '../../../../../app/src/infrastructure/mongodb.js'
-import User from '../../../../../test/acceptance/src/helpers/User.js'
-import MockV1HistoryApiClass from '../../../../../test/acceptance/src/mocks/MockV1HistoryApi.js'
+import User from '../../../../../test/acceptance/src/helpers/User.mjs'
+import MockV1HistoryApiClass from '../../../../../test/acceptance/src/mocks/MockV1HistoryApi.mjs'
 
 let MockV1HistoryApi
 

+ 6 - 6
services/web/modules/history-v1/test/acceptance/src/Init.mjs

@@ -1,12 +1,12 @@
 import '../../../../../test/acceptance/src/helpers/InitApp.mjs'
-import MockDocstoreApi from '../../../../../test/acceptance/src/mocks/MockDocstoreApi.js'
-import MockDocUpdaterApi from '../../../../../test/acceptance/src/mocks/MockDocUpdaterApi.js'
-import MockFilestoreApi from '../../../../../test/acceptance/src/mocks/MockFilestoreApi.js'
+import MockDocstoreApi from '../../../../../test/acceptance/src/mocks/MockDocstoreApi.mjs'
+import MockDocUpdaterApi from '../../../../../test/acceptance/src/mocks/MockDocUpdaterApi.mjs'
+import MockFilestoreApi from '../../../../../test/acceptance/src/mocks/MockFilestoreApi.mjs'
 import MockNotificationsApi from '../../../../../test/acceptance/src/mocks/MockNotificationsApi.mjs'
-import MockProjectHistoryApi from '../../../../../test/acceptance/src/mocks/MockProjectHistoryApi.js'
+import MockProjectHistoryApi from '../../../../../test/acceptance/src/mocks/MockProjectHistoryApi.mjs'
 import MockSpellingApi from '../../../../../test/acceptance/src/mocks/MockSpellingApi.mjs'
-import MockV1Api from '../../../../../test/acceptance/src/mocks/MockV1Api.js'
-import MockV1HistoryApi from '../../../../../test/acceptance/src/mocks/MockV1HistoryApi.js'
+import MockV1Api from '../../../../../test/acceptance/src/mocks/MockV1Api.mjs'
+import MockV1HistoryApi from '../../../../../test/acceptance/src/mocks/MockV1HistoryApi.mjs'
 
 const mockOpts = {
   debug: ['1', 'true', 'TRUE'].includes(process.env.DEBUG_MOCKS),

+ 2 - 2
services/web/modules/history-v1/test/acceptance/src/LabelsTests.mjs

@@ -1,7 +1,7 @@
 import { expect } from 'chai'
 import mongodb from 'mongodb-legacy'
-import User from '../../../../../test/acceptance/src/helpers/User.js'
-import MockProjectHistoryApiClass from '../../../../../test/acceptance/src/mocks/MockProjectHistoryApi.js'
+import User from '../../../../../test/acceptance/src/helpers/User.mjs'
+import MockProjectHistoryApiClass from '../../../../../test/acceptance/src/mocks/MockProjectHistoryApi.mjs'
 
 const { ObjectId } = mongodb
 

+ 2 - 2
services/web/modules/history-v1/test/acceptance/src/ProjectStructureTests.mjs

@@ -6,8 +6,8 @@ import fs from 'node:fs'
 import Settings from '@overleaf/settings'
 import _ from 'lodash'
 import ProjectGetter from '../../../../../app/src/Features/Project/ProjectGetter.js'
-import User from '../../../../../test/acceptance/src/helpers/User.js'
-import MockDocUpdaterApiClass from '../../../../../test/acceptance/src/mocks/MockDocUpdaterApi.js'
+import User from '../../../../../test/acceptance/src/helpers/User.mjs'
+import MockDocUpdaterApiClass from '../../../../../test/acceptance/src/mocks/MockDocUpdaterApi.mjs'
 import Features from '../../../../../app/src/infrastructure/Features.js'
 
 const { ObjectId } = mongodb

+ 4 - 4
services/web/modules/history-v1/test/acceptance/src/RestoringFilesTest.mjs

@@ -4,10 +4,10 @@ import _ from 'lodash'
 import fs from 'node:fs'
 import { fileURLToPath } from 'node:url'
 import Path from 'node:path'
-import User from '../../../../../test/acceptance/src/helpers/User.js'
-import MockProjectHistoryApiClass from '../../../../../test/acceptance/src/mocks/MockProjectHistoryApi.js'
-import MockDocstoreApiClass from '../../../../../test/acceptance/src/mocks/MockDocstoreApi.js'
-import MockFilestoreApiClass from '../../../../../test/acceptance/src/mocks/MockFilestoreApi.js'
+import User from '../../../../../test/acceptance/src/helpers/User.mjs'
+import MockProjectHistoryApiClass from '../../../../../test/acceptance/src/mocks/MockProjectHistoryApi.mjs'
+import MockDocstoreApiClass from '../../../../../test/acceptance/src/mocks/MockDocstoreApi.mjs'
+import MockFilestoreApiClass from '../../../../../test/acceptance/src/mocks/MockFilestoreApi.mjs'
 
 let MockProjectHistoryApi, MockDocstoreApi, MockFilestoreApi
 

+ 1 - 1
services/web/modules/launchpad/test/acceptance/src/LaunchpadTests.mjs

@@ -1,6 +1,6 @@
 import { expect } from 'chai'
 import cheerio from 'cheerio'
-import UserHelper from '../../../../../test/acceptance/src/helpers/UserHelper.js'
+import UserHelper from '../../../../../test/acceptance/src/helpers/UserHelper.mjs'
 
 describe('Launchpad', function () {
   const adminEmail = 'admin@example.com'

+ 4 - 4
services/web/modules/server-ce-scripts/test/acceptance/src/Init.mjs

@@ -1,8 +1,8 @@
 import '../../../../../test/acceptance/src/helpers/InitApp.mjs'
-import MockProjectHistoryApi from '../../../../../test/acceptance/src/mocks/MockProjectHistoryApi.js'
-import MockDocstoreApi from '../../../../../test/acceptance/src/mocks/MockDocstoreApi.js'
-import MockDocUpdaterApi from '../../../../../test/acceptance/src/mocks/MockDocUpdaterApi.js'
-import MockV1Api from '../../../../admin-panel/test/acceptance/src/mocks/MockV1Api.js'
+import MockProjectHistoryApi from '../../../../../test/acceptance/src/mocks/MockProjectHistoryApi.mjs'
+import MockDocstoreApi from '../../../../../test/acceptance/src/mocks/MockDocstoreApi.mjs'
+import MockDocUpdaterApi from '../../../../../test/acceptance/src/mocks/MockDocUpdaterApi.mjs'
+import MockV1Api from '../../../../admin-panel/test/acceptance/src/mocks/MockV1Api.mjs'
 
 const mockOpts = {
   debug: ['1', 'true', 'TRUE'].includes(process.env.DEBUG_MOCKS),

+ 1 - 1
services/web/modules/server-ce-scripts/test/acceptance/src/ServerCEScriptsTests.mjs

@@ -3,7 +3,7 @@ import fs from 'node:fs'
 import Settings from '@overleaf/settings'
 import { expect } from 'chai'
 import { db } from '../../../../../app/src/infrastructure/mongodb.js'
-import UserHelper from '../../../../../test/acceptance/src/helpers/User.js'
+import UserHelper from '../../../../../test/acceptance/src/helpers/User.mjs'
 
 const { promises: User } = UserHelper
 

+ 3 - 3
services/web/test/acceptance/src/ActiveUsersMetricTests.mjs

@@ -1,8 +1,8 @@
-import { promisify } from 'util'
+import { promisify } from 'node:util'
 import { expect } from 'chai'
 import Features from '../../../app/src/infrastructure/Features.js'
-import MetricsHelper from './helpers/metrics.js'
-import UserHelper from './helpers/User.js'
+import MetricsHelper from './helpers/metrics.mjs'
+import UserHelper from './helpers/User.mjs'
 const sleep = promisify(setTimeout)
 
 const User = UserHelper.promises

+ 1 - 1
services/web/test/acceptance/src/AddSecondaryEmailTests.mjs

@@ -1,5 +1,5 @@
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 import logger from '@overleaf/logger'
 import sinon from 'sinon'
 import { db } from '../../../app/src/infrastructure/mongodb.js'

+ 1 - 1
services/web/test/acceptance/src/AdminEmailTests.mjs

@@ -1,7 +1,7 @@
 import OError from '@overleaf/o-error'
 import { expect } from 'chai'
 import async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 
 describe('AdminEmails', function () {
   beforeEach(function (done) {

+ 1 - 1
services/web/test/acceptance/src/AdminOnlyLoginTests.mjs

@@ -1,6 +1,6 @@
 import Settings from '@overleaf/settings'
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const User = UserHelper.promises
 

+ 1 - 1
services/web/test/acceptance/src/AdminPrivilegeAvailableTests.mjs

@@ -1,6 +1,6 @@
 import Settings from '@overleaf/settings'
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 import { getSafeAdminDomainRedirect } from '../../../app/src/Features/Helpers/UrlHelper.js'
 
 const User = UserHelper.promises

+ 1 - 1
services/web/test/acceptance/src/AuthenticationTests.mjs

@@ -1,7 +1,7 @@
 import { expect } from 'chai'
 import mongodb from 'mongodb-legacy'
 import Settings from '@overleaf/settings'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const ObjectId = mongodb.ObjectId
 

+ 2 - 2
services/web/test/acceptance/src/AuthorizationTests.mjs

@@ -1,10 +1,10 @@
 import { expect } from 'chai'
 import async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import request from './helpers/request.js'
 import settings from '@overleaf/settings'
 import Features from '../../../app/src/infrastructure/Features.js'
-import expectErrorResponse from './helpers/expectErrorResponse.js'
+import expectErrorResponse from './helpers/expectErrorResponse.mjs'
 
 function tryReadAccess(user, projectId, test, callback) {
   async.series(

+ 3 - 3
services/web/test/acceptance/src/BackFillDeletedFilesTests.mjs

@@ -1,9 +1,9 @@
-import { exec } from 'child_process'
-import { promisify } from 'util'
+import { exec } from 'node:child_process'
+import { promisify } from 'node:util'
 import { expect } from 'chai'
 import logger from '@overleaf/logger'
 import { db, ObjectId } from '../../../app/src/infrastructure/mongodb.js'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const User = UserHelper.promises
 

+ 3 - 3
services/web/test/acceptance/src/BackFillDocNameForDeletedDocsTests.mjs

@@ -1,9 +1,9 @@
-import { exec } from 'child_process'
-import { promisify } from 'util'
+import { exec } from 'node:child_process'
+import { promisify } from 'node:util'
 import { expect } from 'chai'
 import logger from '@overleaf/logger'
 import { db, ObjectId } from '../../../app/src/infrastructure/mongodb.js'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 import { renderObjectId } from '@overleaf/mongo-utils/batchedUpdate.js'
 
 const User = UserHelper.promises

+ 2 - 2
services/web/test/acceptance/src/BackFillDocRevTests.mjs

@@ -1,6 +1,6 @@
 import { db, ObjectId } from '../../../app/src/infrastructure/mongodb.js'
-import { promisify } from 'util'
-import { exec } from 'child_process'
+import { promisify } from 'node:util'
+import { exec } from 'node:child_process'
 import logger from '@overleaf/logger'
 import { expect } from 'chai'
 

+ 2 - 2
services/web/test/acceptance/src/BackFillDummyDocMetaTests.mjs

@@ -1,5 +1,5 @@
-import { exec } from 'child_process'
-import { promisify } from 'util'
+import { exec } from 'node:child_process'
+import { promisify } from 'node:util'
 import { expect } from 'chai'
 import logger from '@overleaf/logger'
 import { filterOutput } from './helpers/settings.mjs'

+ 1 - 1
services/web/test/acceptance/src/BatchedUpdateTests.mjs

@@ -1,4 +1,4 @@
-import { spawnSync } from 'child_process'
+import { spawnSync } from 'node:child_process'
 import { expect } from 'chai'
 import { db, ObjectId } from '../../../app/src/infrastructure/mongodb.js'
 

+ 1 - 1
services/web/test/acceptance/src/BetaProgramTests.mjs

@@ -1,5 +1,5 @@
 import { expect } from 'chai'
-import UserHelper from '../src/helpers/UserHelper.js'
+import UserHelper from '../src/helpers/UserHelper.mjs'
 
 describe('BetaProgram', function () {
   let email, userHelper

+ 2 - 2
services/web/test/acceptance/src/CDNMigrationTests.mjs

@@ -1,6 +1,6 @@
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
-import MetricsHelper from './helpers/metrics.js'
+import UserHelper from './helpers/User.mjs'
+import MetricsHelper from './helpers/metrics.mjs'
 
 const User = UserHelper.promises
 

+ 1 - 1
services/web/test/acceptance/src/CaptchaTests.mjs

@@ -1,7 +1,7 @@
 import { db } from '../../../app/src/infrastructure/mongodb.js'
 import { expect } from 'chai'
 import Settings from '@overleaf/settings'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 import MockHaveIBeenPwnedApiClass from './mocks/MockHaveIBeenPwnedApi.mjs'
 
 const User = UserHelper.promises

+ 3 - 3
services/web/test/acceptance/src/ClearSessionsSetMustReconfirmTests.mjs

@@ -1,10 +1,10 @@
 import { exec } from 'node:child_process'
-import { promisify } from 'util'
+import { promisify } from 'node:util'
 import { expect } from 'chai'
 import logger from '@overleaf/logger'
 import { ObjectId, db } from '../../../app/src/infrastructure/mongodb.js'
-import fs from 'fs/promises'
-import UserHelper from './helpers/User.js'
+import fs from 'node:fs/promises'
+import UserHelper from './helpers/User.mjs'
 import UserGetter from '../../../app/src/Features/User/UserGetter.js'
 
 const User = UserHelper.promises

+ 2 - 2
services/web/test/acceptance/src/ConvertArchivedState.mjs

@@ -1,7 +1,7 @@
 import { expect } from 'chai'
-import { exec } from 'child_process'
+import { exec } from 'node:child_process'
 import mongodb from 'mongodb-legacy'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const User = UserHelper.promises
 

+ 2 - 2
services/web/test/acceptance/src/CookieMetricsTests.mjs

@@ -1,7 +1,7 @@
 import Settings from '@overleaf/settings'
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
-import MetricsHelper from './helpers/metrics.js'
+import UserHelper from './helpers/User.mjs'
+import MetricsHelper from './helpers/metrics.mjs'
 import cookieSignature from 'cookie-signature'
 
 const User = UserHelper.promises

+ 2 - 2
services/web/test/acceptance/src/DeleteOrphanedDocsOnlineCheckTests.mjs

@@ -1,5 +1,5 @@
-import { exec } from 'child_process'
-import { promisify } from 'util'
+import { exec } from 'node:child_process'
+import { promisify } from 'node:util'
 import { expect } from 'chai'
 import logger from '@overleaf/logger'
 import { filterOutput } from './helpers/settings.mjs'

+ 3 - 3
services/web/test/acceptance/src/DeletionTests.mjs

@@ -1,4 +1,4 @@
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import Subscription from './helpers/Subscription.mjs'
 import request from './helpers/request.js'
 import async from 'async'
@@ -6,8 +6,8 @@ import { expect } from 'chai'
 import settings from '@overleaf/settings'
 import { db, ObjectId } from '../../../app/src/infrastructure/mongodb.js'
 import Features from '../../../app/src/infrastructure/Features.js'
-import MockDocstoreApiClass from './mocks/MockDocstoreApi.js'
-import MockFilestoreApiClass from './mocks/MockFilestoreApi.js'
+import MockDocstoreApiClass from './mocks/MockDocstoreApi.mjs'
+import MockFilestoreApiClass from './mocks/MockFilestoreApi.mjs'
 import MockChatApiClass from './mocks/MockChatApi.mjs'
 import MockGitBridgeApiClass from './mocks/MockGitBridgeApi.mjs'
 import MockHistoryBackupDeletionApiClass from './mocks/MockHistoryBackupDeletionApi.mjs'

+ 1 - 1
services/web/test/acceptance/src/DocUpdateTests.mjs

@@ -1,4 +1,4 @@
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import request from './helpers/request.js'
 import { expect } from 'chai'
 import settings from '@overleaf/settings'

+ 1 - 1
services/web/test/acceptance/src/EditorHttpControllerTests.mjs

@@ -1,4 +1,4 @@
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import { expect } from 'chai'
 
 describe('EditorHttpController', function () {

+ 2 - 2
services/web/test/acceptance/src/HaveIBeenPwnedApiTests.mjs

@@ -1,9 +1,9 @@
 import Settings from '@overleaf/settings'
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 import MockHaveIBeenPwnedApiClass from './mocks/MockHaveIBeenPwnedApi.mjs'
 import { db } from '../../../app/src/infrastructure/mongodb.js'
-import MetricsHelper from './helpers/metrics.js'
+import MetricsHelper from './helpers/metrics.mjs'
 
 const User = UserHelper.promises
 

+ 1 - 1
services/web/test/acceptance/src/HealthCheckControllerTests.mjs

@@ -1,6 +1,6 @@
 import { expect } from 'chai'
 import Settings from '@overleaf/settings'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const User = UserHelper.promises
 

+ 4 - 4
services/web/test/acceptance/src/HistoryTests.mjs

@@ -1,14 +1,14 @@
 import fs from 'node:fs'
 import Path from 'node:path'
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
-import MockV1HistoryApiClass from './mocks/MockV1HistoryApi.js'
+import UserHelper from './helpers/User.mjs'
+import MockV1HistoryApiClass from './mocks/MockV1HistoryApi.mjs'
 import ProjectGetter from '../../../app/src/Features/Project/ProjectGetter.js'
-import MockFilestoreApiClass from './mocks/MockFilestoreApi.js'
+import MockFilestoreApiClass from './mocks/MockFilestoreApi.mjs'
 import { fileURLToPath } from 'node:url'
 import sinon from 'sinon'
 import logger from '@overleaf/logger'
-import Metrics from './helpers/metrics.js'
+import Metrics from './helpers/metrics.mjs'
 import Features from '../../../app/src/infrastructure/Features.js'
 const User = UserHelper.promises
 

+ 6 - 6
services/web/test/acceptance/src/Init.mjs

@@ -4,15 +4,15 @@ import Features from '../../../app/src/infrastructure/Features.js'
 import MockAnalyticsApi from './mocks/MockAnalyticsApi.mjs'
 import MockChatApi from './mocks/MockChatApi.mjs'
 import MockClsiApi from './mocks/MockClsiApi.mjs'
-import MockDocstoreApi from './mocks/MockDocstoreApi.js'
-import MockDocUpdaterApi from './mocks/MockDocUpdaterApi.js'
-import MockFilestoreApi from './mocks/MockFilestoreApi.js'
+import MockDocstoreApi from './mocks/MockDocstoreApi.mjs'
+import MockDocUpdaterApi from './mocks/MockDocUpdaterApi.mjs'
+import MockFilestoreApi from './mocks/MockFilestoreApi.mjs'
 import MockGitBridgeApi from './mocks/MockGitBridgeApi.mjs'
 import MockNotificationsApi from './mocks/MockNotificationsApi.mjs'
-import MockProjectHistoryApi from './mocks/MockProjectHistoryApi.js'
+import MockProjectHistoryApi from './mocks/MockProjectHistoryApi.mjs'
 import MockSpellingApi from './mocks/MockSpellingApi.mjs'
-import MockV1Api from './mocks/MockV1Api.js'
-import MockV1HistoryApi from './mocks/MockV1HistoryApi.js'
+import MockV1Api from './mocks/MockV1Api.mjs'
+import MockV1HistoryApi from './mocks/MockV1HistoryApi.mjs'
 import MockHaveIBeenPwnedApi from './mocks/MockHaveIBeenPwnedApi.mjs'
 import MockThirdPartyDataStoreApi from './mocks/MockThirdPartyDataStoreApi.mjs'
 import MockHistoryBackupDeletionApi from './mocks/MockHistoryBackupDeletionApi.mjs'

+ 1 - 1
services/web/test/acceptance/src/LearnTest.mjs

@@ -1,6 +1,6 @@
 import { expect } from 'chai'
 import cheerio from 'cheerio'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const User = UserHelper.promises
 

+ 2 - 2
services/web/test/acceptance/src/LinkedFilesTests.mjs

@@ -1,9 +1,9 @@
 import { expect } from 'chai'
 import _ from 'lodash'
-import fs from 'fs'
+import fs from 'node:fs'
 import timekeeper from 'timekeeper'
 import Settings from '@overleaf/settings'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 import express from 'express'
 import { plainTextResponse } from '../../../app/src/infrastructure/Response.js'
 

+ 1 - 1
services/web/test/acceptance/src/MongoHelper.mjs

@@ -7,7 +7,7 @@ import {
   normalizeQuery,
   normalizeMultiQuery,
 } from '../../../app/src/Features/Helpers/Mongo.js'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const User = UserHelper.promises
 

+ 1 - 1
services/web/test/acceptance/src/PasswordResetTests.mjs

@@ -1,5 +1,5 @@
 import { expect } from 'chai'
-import UserHelper from './helpers/UserHelper.js'
+import UserHelper from './helpers/UserHelper.mjs'
 import { db } from '../../../app/src/infrastructure/mongodb.js'
 
 describe('PasswordReset', function () {

+ 1 - 1
services/web/test/acceptance/src/PasswordUpdateTests.mjs

@@ -1,6 +1,6 @@
 import { expect } from 'chai'
 import PasswordResetRouter from '../../../app/src/Features/PasswordReset/PasswordResetRouter.mjs'
-import UserHelper from './helpers/UserHelper.js'
+import UserHelper from './helpers/UserHelper.mjs'
 
 describe('PasswordUpdate', function () {
   let email, password, response, user, userHelper

+ 2 - 2
services/web/test/acceptance/src/PrimaryEmailCheckTests.mjs

@@ -1,8 +1,8 @@
-import UserHelper from './helpers/UserHelper.js'
+import UserHelper from './helpers/UserHelper.mjs'
 import Settings from '@overleaf/settings'
 import { expect } from 'chai'
 import Features from '../../../app/src/infrastructure/Features.js'
-import MockV1ApiClass from './mocks/MockV1Api.js'
+import MockV1ApiClass from './mocks/MockV1Api.mjs'
 import SubscriptionHelper from './helpers/Subscription.mjs'
 
 const Subscription = SubscriptionHelper.promises

+ 1 - 1
services/web/test/acceptance/src/ProjectCRUDTests.mjs

@@ -1,5 +1,5 @@
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 import { Project } from '../../../app/src/models/Project.js'
 import mongodb from 'mongodb-legacy'
 import cheerio from 'cheerio'

+ 4 - 4
services/web/test/acceptance/src/ProjectDuplicateNameTests.mjs

@@ -3,10 +3,10 @@ import sinon from 'sinon'
 import Path from 'node:path'
 import fs from 'node:fs'
 import _ from 'lodash'
-import User from './helpers/User.js'
-import UserHelper from './helpers/UserHelper.js'
-import MockDocstoreApiClass from './mocks/MockDocstoreApi.js'
-import MockFilestoreApiClass from './mocks/MockFilestoreApi.js'
+import User from './helpers/User.mjs'
+import UserHelper from './helpers/UserHelper.mjs'
+import MockDocstoreApiClass from './mocks/MockDocstoreApi.mjs'
+import MockFilestoreApiClass from './mocks/MockFilestoreApi.mjs'
 import { fileURLToPath } from 'node:url'
 
 let MockDocstoreApi, MockFilestoreApi

+ 1 - 1
services/web/test/acceptance/src/ProjectFeaturesTests.mjs

@@ -13,7 +13,7 @@
 import { expect } from 'chai'
 
 import async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import request from './helpers/request.js'
 import settings from '@overleaf/settings'
 

+ 1 - 1
services/web/test/acceptance/src/ProjectInviteTests.mjs

@@ -1,6 +1,6 @@
 import { expect } from 'chai'
 import Async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import settings from '@overleaf/settings'
 import CollaboratorsEmailHandler from '../../../app/src/Features/Collaborators/CollaboratorsEmailHandler.mjs'
 import CollaboratorsInviteHelper from '../../../app/src/Features/Collaborators/CollaboratorsInviteHelper.js'

+ 1 - 1
services/web/test/acceptance/src/ProjectOwnershipTransferTests.mjs

@@ -1,5 +1,5 @@
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const User = UserHelper.promises
 

+ 3 - 3
services/web/test/acceptance/src/ProjectStructureTests.mjs

@@ -4,9 +4,9 @@ import Path from 'node:path'
 import fs from 'node:fs'
 import { Project } from '../../../app/src/models/Project.js'
 import ProjectGetter from '../../../app/src/Features/Project/ProjectGetter.js'
-import UserHelper from './helpers/User.js'
-import MockDocStoreApiClass from './mocks/MockDocstoreApi.js'
-import MockDocUpdaterApiClass from './mocks/MockDocUpdaterApi.js'
+import UserHelper from './helpers/User.mjs'
+import MockDocStoreApiClass from './mocks/MockDocstoreApi.mjs'
+import MockDocUpdaterApiClass from './mocks/MockDocUpdaterApi.mjs'
 import { fileURLToPath } from 'node:url'
 
 const User = UserHelper.promises

+ 2 - 2
services/web/test/acceptance/src/RegenerateDuplicateReferralIdsTests.mjs

@@ -1,5 +1,5 @@
-import { exec } from 'child_process'
-import { promisify } from 'util'
+import { exec } from 'node:child_process'
+import { promisify } from 'node:util'
 import { expect } from 'chai'
 import logger from '@overleaf/logger'
 import { filterOutput } from './helpers/settings.mjs'

+ 2 - 2
services/web/test/acceptance/src/RegistrationTests.mjs

@@ -1,7 +1,7 @@
 import { expect } from 'chai'
 import async from 'async'
-import metrics from './helpers/metrics.js'
-import User from './helpers/User.js'
+import metrics from './helpers/metrics.mjs'
+import User from './helpers/User.mjs'
 import redis from './helpers/redis.mjs'
 import Features from '../../../app/src/infrastructure/Features.js'
 

+ 2 - 2
services/web/test/acceptance/src/RemoveDeletedUsersFromTokenAccessRefsTests.mjs

@@ -1,6 +1,6 @@
 import { db, ObjectId } from '../../../app/src/infrastructure/mongodb.js'
-import { promisify } from 'util'
-import { exec } from 'child_process'
+import { promisify } from 'node:util'
+import { exec } from 'node:child_process'
 import logger from '@overleaf/logger'
 import { expect } from 'chai'
 

+ 1 - 1
services/web/test/acceptance/src/SecurityHeadersTests.mjs

@@ -14,7 +14,7 @@
 import { assert } from 'chai'
 
 import async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import request from './helpers/request.js'
 import ProjectGetter from '../../../app/src/Features/Project/ProjectGetter.js'
 

+ 4 - 4
services/web/test/acceptance/src/ServerCrashTests.mjs

@@ -1,10 +1,10 @@
 import { expect } from 'chai'
-import fs from 'fs'
-import Path from 'path'
+import fs from 'node:fs'
+import Path from 'node:path'
 import fetch from 'node-fetch'
-import UserHelper from './helpers/UserHelper.js'
+import UserHelper from './helpers/UserHelper.mjs'
 import glob from 'glob'
-import { fileURLToPath } from 'url'
+import { fileURLToPath } from 'node:url'
 
 const BASE_URL = UserHelper.baseUrl()
 

+ 1 - 1
services/web/test/acceptance/src/SessionTests.mjs

@@ -1,6 +1,6 @@
 import { expect } from 'chai'
 import async from 'async'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 import redis from './helpers/redis.mjs'
 import UserSessionsRedis from '../../../app/src/Features/User/UserSessionsRedis.js'
 const rclient = UserSessionsRedis.client()

+ 1 - 1
services/web/test/acceptance/src/SettingsTests.mjs

@@ -11,7 +11,7 @@
 import { expect } from 'chai'
 
 import async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import Features from '../../../app/src/infrastructure/Features.js'
 
 describe('SettingsPage', function () {

+ 1 - 1
services/web/test/acceptance/src/SharingTests.mjs

@@ -1,5 +1,5 @@
 import { expect } from 'chai'
-import UserHelper from './helpers/User.js'
+import UserHelper from './helpers/User.mjs'
 
 const User = UserHelper.promises
 

+ 2 - 2
services/web/test/acceptance/src/TagsTests.mjs

@@ -1,9 +1,9 @@
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import async from 'async'
 import { expect } from 'chai'
 import _ from 'lodash'
 import request from './helpers/request.js'
-import expectErrorResponse from './helpers/expectErrorResponse.js'
+import expectErrorResponse from './helpers/expectErrorResponse.mjs'
 
 const _initUser = (user, callback) => {
   async.series([cb => user.login(cb), cb => user.getCsrfToken(cb)], callback)

+ 2 - 2
services/web/test/acceptance/src/TokenAccessTests.mjs

@@ -1,10 +1,10 @@
 import { expect } from 'chai'
 import async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import request from './helpers/request.js'
 import settings from '@overleaf/settings'
 import { db } from '../../../app/src/infrastructure/mongodb.js'
-import expectErrorResponse from './helpers/expectErrorResponse.js'
+import expectErrorResponse from './helpers/expectErrorResponse.mjs'
 import SplitTestHandler from '../../../app/src/Features/SplitTests/SplitTestHandler.js'
 import sinon from 'sinon'
 

+ 1 - 1
services/web/test/acceptance/src/TpdsUpdateTests.mjs

@@ -1,7 +1,7 @@
 import { expect } from 'chai'
 import ProjectGetter from '../../../app/src/Features/Project/ProjectGetter.js'
 import request from './helpers/request.js'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 
 describe('TpdsUpdateTests', function () {
   beforeEach(function (done) {

+ 1 - 1
services/web/test/acceptance/src/UnsupportedBrowserTests.mjs

@@ -1,5 +1,5 @@
 import { expect } from 'chai'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 
 const botUserAgents = new Map([
   [

+ 1 - 1
services/web/test/acceptance/src/UserHelperTests.mjs

@@ -1,5 +1,5 @@
 import AuthenticationManager from '../../../app/src/Features/Authentication/AuthenticationManager.js'
-import UserHelper from './helpers/UserHelper.js'
+import UserHelper from './helpers/UserHelper.mjs'
 import Features from '../../../app/src/infrastructure/Features.js'
 import { expect } from 'chai'
 

+ 2 - 2
services/web/test/acceptance/src/UserMembershipAuthorizationTests.mjs

@@ -1,9 +1,9 @@
 import { expect } from 'chai'
 import async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 import Institution from './helpers/Institution.mjs'
 import Subscription from './helpers/Subscription.mjs'
-import Publisher from './helpers/Publisher.js'
+import Publisher from './helpers/Publisher.mjs'
 
 describe('UserMembershipAuthorization', function () {
   beforeEach(function (done) {

+ 1 - 1
services/web/test/acceptance/src/UserReconfirmTests.mjs

@@ -14,7 +14,7 @@
 import { expect } from 'chai'
 
 import async from 'async'
-import User from './helpers/User.js'
+import User from './helpers/User.mjs'
 
 describe('User Must Reconfirm', function () {
   beforeEach(function (done) {

+ 1 - 1
services/web/test/acceptance/src/helpers/MongoHelper.mjs

@@ -1,4 +1,4 @@
-import { execFile } from 'child_process'
+import { execFile } from 'node:child_process'
 import {
   connectionPromise,
   cleanupTestDatabase,

+ 6 - 4
services/web/test/acceptance/src/helpers/Publisher.js → services/web/test/acceptance/src/helpers/Publisher.mjs

@@ -1,6 +1,8 @@
-const { ObjectId } = require('mongodb-legacy')
-const PublisherModel = require('../../../../app/src/models/Publisher').Publisher
-const { callbackifyClass } = require('@overleaf/promise-utils')
+import mongodb from 'mongodb-legacy'
+import { Publisher as PublisherModel } from '../../../../app/src/models/Publisher.js'
+import { callbackifyClass } from '@overleaf/promise-utils'
+
+const { ObjectId } = mongodb
 
 let count = parseInt(Math.random() * 999999)
 
@@ -35,4 +37,4 @@ class PromisifiedPublisher {
 const Publisher = callbackifyClass(PromisifiedPublisher)
 Publisher.promises = class extends PromisifiedPublisher {}
 
-module.exports = Publisher
+export default Publisher

+ 1 - 1
services/web/test/acceptance/src/helpers/RecurlySubscription.mjs

@@ -1,6 +1,6 @@
 import mongodb from 'mongodb-legacy'
 import Subscription from './Subscription.mjs'
-import MockRecurlyApiClass from '../mocks/MockRecurlyApi.js'
+import MockRecurlyApiClass from '../mocks/MockRecurlyApi.mjs'
 import RecurlyWrapper from '../../../../app/src/Features/Subscription/RecurlyWrapper.js'
 import { promisifyClass } from '@overleaf/promise-utils'
 

+ 11 - 8
services/web/test/acceptance/src/helpers/SAMLHelper.js → services/web/test/acceptance/src/helpers/SAMLHelper.mjs

@@ -1,10 +1,13 @@
-const fs = require('fs')
-const path = require('path')
-const SignedXml = require('xml-crypto').SignedXml
-const { SamlLog } = require('../../../../app/src/models/SamlLog')
-const { expect } = require('chai')
-const zlib = require('zlib')
-const xml2js = require('xml2js')
+import fs from 'node:fs'
+import path from 'node:path'
+import { SignedXml } from 'xml-crypto'
+import { SamlLog } from '../../../../app/src/models/SamlLog.js'
+import { expect } from 'chai'
+import zlib from 'node:zlib'
+import { fileURLToPath } from 'node:url'
+import xml2js from 'xml2js'
+
+const __dirname = fileURLToPath(new URL('.', import.meta.url))
 
 const samlDataDefaults = {
   firstName: 'first-name',
@@ -246,4 +249,4 @@ const SAMLHelper = {
   getRequestId,
 }
 
-module.exports = SAMLHelper
+export default SAMLHelper

+ 3 - 3
services/web/test/acceptance/src/helpers/SplitTestHelper.js → services/web/test/acceptance/src/helpers/SplitTestHelper.mjs

@@ -1,5 +1,5 @@
-const { assert } = require('chai')
-const { CacheFlow } = require('cache-flow')
+import { assert } from 'chai'
+import { CacheFlow } from 'cache-flow'
 
 const sendStaffRequest = async function (
   staffUser,
@@ -52,7 +52,7 @@ const expectResponse = async function (
   }
 }
 
-module.exports = {
+export default {
   sendStaffRequest,
   createTest,
   updateTestConfig,

+ 14 - 12
services/web/test/acceptance/src/helpers/User.js → services/web/test/acceptance/src/helpers/User.mjs

@@ -1,14 +1,16 @@
-const OError = require('@overleaf/o-error')
-const request = require('./request')
-const settings = require('@overleaf/settings')
-const { db, ObjectId } = require('../../../../app/src/infrastructure/mongodb')
-const UserModel = require('../../../../app/src/models/User').User
-const UserUpdater = require('../../../../app/src/Features/User/UserUpdater')
-const AuthenticationManager = require('../../../../app/src/Features/Authentication/AuthenticationManager')
-const { promisifyClass } = require('@overleaf/promise-utils')
-const fs = require('fs')
-const Path = require('path')
-const { Cookie } = require('tough-cookie')
+import OError from '@overleaf/o-error'
+import request from './request.js'
+import settings from '@overleaf/settings'
+import { db, ObjectId } from '../../../../app/src/infrastructure/mongodb.js'
+import { User as UserModel } from '../../../../app/src/models/User.js'
+import UserUpdater from '../../../../app/src/Features/User/UserUpdater.js'
+import AuthenticationManager from '../../../../app/src/Features/Authentication/AuthenticationManager.js'
+import { promisifyClass } from '@overleaf/promise-utils'
+import fs from 'node:fs'
+import Path from 'node:path'
+import { fileURLToPath } from 'node:url'
+import { Cookie } from 'tough-cookie'
+const __dirname = fileURLToPath(new URL('.', import.meta.url))
 const COOKIE_DOMAIN = settings.cookieDomain
 // The cookie domain has a leading '.' but the cookie jar stores it without.
 const DEFAULT_COOKIE_URL = `https://${COOKIE_DOMAIN.replace(/^\./, '')}/`
@@ -1296,4 +1298,4 @@ User.promises.prototype.doRequest = async function (method, params) {
   })
 }
 
-module.exports = User
+export default User

+ 17 - 18
services/web/test/acceptance/src/helpers/UserHelper.js → services/web/test/acceptance/src/helpers/UserHelper.mjs

@@ -1,23 +1,22 @@
-const { CookieJar } = require('tough-cookie')
-const AuthenticationManager = require('../../../../app/src/Features/Authentication/AuthenticationManager')
-const Settings = require('@overleaf/settings')
-const InstitutionsAPI = require('../../../../app/src/Features/Institutions/InstitutionsAPI')
-const UserCreator = require('../../../../app/src/Features/User/UserCreator')
-const UserGetter = require('../../../../app/src/Features/User/UserGetter')
-const UserUpdater = require('../../../../app/src/Features/User/UserUpdater')
-const moment = require('moment')
-const fetch = require('node-fetch')
-const { db } = require('../../../../app/src/infrastructure/mongodb')
-const { ObjectId } = require('mongodb-legacy')
-const {
-  UserAuditLogEntry,
-} = require('../../../../app/src/models/UserAuditLogEntry')
+import { CookieJar } from 'tough-cookie'
+import AuthenticationManager from '../../../../app/src/Features/Authentication/AuthenticationManager.js'
+import Settings from '@overleaf/settings'
+import InstitutionsAPI from '../../../../app/src/Features/Institutions/InstitutionsAPI.js'
+import UserCreator from '../../../../app/src/Features/User/UserCreator.js'
+import UserGetter from '../../../../app/src/Features/User/UserGetter.js'
+import UserUpdater from '../../../../app/src/Features/User/UserUpdater.js'
+import moment from 'moment'
+import fetch from 'node-fetch'
+import { db } from '../../../../app/src/infrastructure/mongodb.js'
+import mongodb from 'mongodb-legacy'
+
+import { UserAuditLogEntry } from '../../../../app/src/models/UserAuditLogEntry.js'
 
 // Import the rate limiter so we can clear it between tests
 
-const {
-  RateLimiter,
-} = require('../../../../app/src/infrastructure/RateLimiter')
+import { RateLimiter } from '../../../../app/src/infrastructure/RateLimiter.js'
+
+const { ObjectId } = mongodb
 
 const rateLimiters = {
   resendConfirmation: new RateLimiter('resend-confirmation'),
@@ -557,4 +556,4 @@ class UserHelper {
   }
 }
 
-module.exports = UserHelper
+export default UserHelper

+ 2 - 2
services/web/test/acceptance/src/helpers/expectErrorResponse.js → services/web/test/acceptance/src/helpers/expectErrorResponse.mjs

@@ -1,6 +1,6 @@
-const { expect } = require('chai')
+import { expect } from 'chai'
 
-module.exports = {
+export default {
   requireLogin: {
     json(response, body) {
       expect(response.statusCode).to.equal(401)

+ 5 - 5
services/web/test/acceptance/src/helpers/groupSSO.mjs

@@ -1,10 +1,10 @@
-import fs from 'fs'
-import Path from 'path'
-import UserModule from './User.js'
+import fs from 'node:fs'
+import Path from 'node:path'
+import UserModule from './User.mjs'
 import SubscriptionHelper from './Subscription.mjs'
 import { SSOConfig } from '../../../../app/src/models/SSOConfig.js'
-import UserHelper from './UserHelper.js'
-import SAMLHelper from './SAMLHelper.js'
+import UserHelper from './UserHelper.mjs'
+import SAMLHelper from './SAMLHelper.mjs'
 import Settings from '@overleaf/settings'
 import { getProviderId } from '../../../../app/src/Features/Subscription/GroupUtils.js'
 import UserGetter from '../../../../app/src/Features/User/UserGetter.js'

+ 4 - 4
services/web/test/acceptance/src/helpers/metrics.js → services/web/test/acceptance/src/helpers/metrics.mjs

@@ -1,6 +1,6 @@
-const { callbackify } = require('util')
-const request = require('./request')
-const metrics = require('@overleaf/metrics')
+import { callbackify } from 'node:util'
+import request from './request.js'
+import metrics from '@overleaf/metrics'
 
 async function getMetric(matcher) {
   const { body } = await request.promises.request('/metrics')
@@ -16,7 +16,7 @@ function resetMetrics() {
   metrics.register.resetMetrics()
 }
 
-module.exports = {
+export default {
   getMetric: callbackify(getMetric),
   resetMetrics,
   promises: {

+ 4 - 4
services/web/test/acceptance/src/mocks/AbstractMockApi.js → services/web/test/acceptance/src/mocks/AbstractMockApi.mjs

@@ -1,6 +1,6 @@
-const OError = require('@overleaf/o-error')
-const express = require('express')
-const bodyParser = require('body-parser')
+import OError from '@overleaf/o-error'
+import express from 'express'
+import bodyParser from 'body-parser'
 
 /**
  * Abstract class for running a mock API via Express. Handles setting up of
@@ -190,4 +190,4 @@ class AbstractMockApi {
   }
 }
 
-module.exports = AbstractMockApi
+export default AbstractMockApi

+ 1 - 1
services/web/test/acceptance/src/mocks/MockAnalyticsApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockAnalyticsApi extends AbstractMockApi {
   reset() {

+ 1 - 1
services/web/test/acceptance/src/mocks/MockChatApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockChatApi extends AbstractMockApi {
   reset() {

+ 1 - 1
services/web/test/acceptance/src/mocks/MockClsiApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 import { plainTextResponse } from '../../../../app/src/infrastructure/Response.js'
 
 class MockClsiApi extends AbstractMockApi {

+ 2 - 2
services/web/test/acceptance/src/mocks/MockDocUpdaterApi.js → services/web/test/acceptance/src/mocks/MockDocUpdaterApi.mjs

@@ -1,4 +1,4 @@
-const AbstractMockApi = require('./AbstractMockApi')
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockDocUpdaterApi extends AbstractMockApi {
   reset() {
@@ -56,7 +56,7 @@ class MockDocUpdaterApi extends AbstractMockApi {
   }
 }
 
-module.exports = MockDocUpdaterApi
+export default MockDocUpdaterApi
 
 // type hint for the inherited `instance` method
 /**

+ 3 - 3
services/web/test/acceptance/src/mocks/MockDocstoreApi.js → services/web/test/acceptance/src/mocks/MockDocstoreApi.mjs

@@ -1,5 +1,5 @@
-const { db, ObjectId } = require('../../../../app/src/infrastructure/mongodb')
-const AbstractMockApi = require('./AbstractMockApi')
+import { db, ObjectId } from '../../../../app/src/infrastructure/mongodb.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockDocstoreApi extends AbstractMockApi {
   reset() {
@@ -97,7 +97,7 @@ class MockDocstoreApi extends AbstractMockApi {
   }
 }
 
-module.exports = MockDocstoreApi
+export default MockDocstoreApi
 
 // type hint for the inherited `instance` method
 /**

+ 2 - 2
services/web/test/acceptance/src/mocks/MockFilestoreApi.js → services/web/test/acceptance/src/mocks/MockFilestoreApi.mjs

@@ -1,4 +1,4 @@
-const AbstractMockApi = require('./AbstractMockApi')
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockFilestoreApi extends AbstractMockApi {
   reset() {
@@ -70,7 +70,7 @@ class MockFilestoreApi extends AbstractMockApi {
   }
 }
 
-module.exports = MockFilestoreApi
+export default MockFilestoreApi
 
 // type hint for the inherited `instance` method
 /**

+ 1 - 1
services/web/test/acceptance/src/mocks/MockGitBridgeApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockGitBridgeApi extends AbstractMockApi {
   reset() {

+ 2 - 2
services/web/test/acceptance/src/mocks/MockGoogleOauthApi.js → services/web/test/acceptance/src/mocks/MockGoogleOauthApi.mjs

@@ -1,4 +1,4 @@
-const AbstractMockApi = require('./AbstractMockApi')
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockGoogleOauthApi extends AbstractMockApi {
   reset() {
@@ -35,7 +35,7 @@ class MockGoogleOauthApi extends AbstractMockApi {
   }
 }
 
-module.exports = MockGoogleOauthApi
+export default MockGoogleOauthApi
 
 // type hint for the inherited `instance` method
 /**

+ 1 - 1
services/web/test/acceptance/src/mocks/MockHaveIBeenPwnedApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 import { plainTextResponse } from '../../../../app/src/infrastructure/Response.js'
 
 class MockHaveIBeenPwnedApi extends AbstractMockApi {

+ 1 - 1
services/web/test/acceptance/src/mocks/MockHistoryBackupDeletionApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockHistoryBackupDeletionApi extends AbstractMockApi {
   reset() {

+ 1 - 1
services/web/test/acceptance/src/mocks/MockNotificationsApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 // Currently there is nothing implemented here as we have no acceptance tests
 // for the notifications API. This does however stop errors appearing in the

+ 7 - 7
services/web/test/acceptance/src/mocks/MockProjectHistoryApi.js → services/web/test/acceptance/src/mocks/MockProjectHistoryApi.mjs

@@ -1,9 +1,9 @@
-const AbstractMockApi = require('./AbstractMockApi')
-const _ = require('lodash')
-const { ObjectId } = require('mongodb-legacy')
-const {
-  plainTextResponse,
-} = require('../../../../app/src/infrastructure/Response')
+import AbstractMockApi from './AbstractMockApi.mjs'
+import _ from 'lodash'
+import mongodb from 'mongodb-legacy'
+import { plainTextResponse } from '../../../../app/src/infrastructure/Response.js'
+
+const { ObjectId } = mongodb
 
 class MockProjectHistoryApi extends AbstractMockApi {
   reset() {
@@ -148,7 +148,7 @@ class MockProjectHistoryApi extends AbstractMockApi {
   }
 }
 
-module.exports = MockProjectHistoryApi
+export default MockProjectHistoryApi
 
 // type hint for the inherited `instance` method
 /**

+ 1 - 1
services/web/test/acceptance/src/mocks/MockReCaptchaApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockReCaptchaApi extends AbstractMockApi {
   applyRoutes() {

+ 4 - 4
services/web/test/acceptance/src/mocks/MockRecurlyApi.js → services/web/test/acceptance/src/mocks/MockRecurlyApi.mjs

@@ -1,6 +1,6 @@
-const AbstractMockApi = require('./AbstractMockApi')
-const SubscriptionController = require('../../../../app/src/Features/Subscription/SubscriptionController')
-const { xmlResponse } = require('../../../../app/src/infrastructure/Response')
+import AbstractMockApi from './AbstractMockApi.mjs'
+import SubscriptionController from '../../../../app/src/Features/Subscription/SubscriptionController.js'
+import { xmlResponse } from '../../../../app/src/infrastructure/Response.js'
 
 class MockRecurlyApi extends AbstractMockApi {
   reset() {
@@ -132,7 +132,7 @@ class MockRecurlyApi extends AbstractMockApi {
   }
 }
 
-module.exports = MockRecurlyApi
+export default MockRecurlyApi
 
 // type hint for the inherited `instance` method
 /**

+ 1 - 1
services/web/test/acceptance/src/mocks/MockSpellingApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockSpellingApi extends AbstractMockApi {
   reset() {

+ 1 - 1
services/web/test/acceptance/src/mocks/MockThirdPartyDataStoreApi.mjs

@@ -1,4 +1,4 @@
-import AbstractMockApi from './AbstractMockApi.js'
+import AbstractMockApi from './AbstractMockApi.mjs'
 
 class MockThirdPartyDataStoreApi extends AbstractMockApi {
   reset() {}

+ 4 - 4
services/web/test/acceptance/src/mocks/MockV1Api.js → services/web/test/acceptance/src/mocks/MockV1Api.mjs

@@ -1,6 +1,6 @@
-const AbstractMockApi = require('./AbstractMockApi')
-const moment = require('moment')
-const sinon = require('sinon')
+import AbstractMockApi from './AbstractMockApi.mjs'
+import moment from 'moment'
+import sinon from 'sinon'
 
 class MockV1Api extends AbstractMockApi {
   reset() {
@@ -462,7 +462,7 @@ class MockV1Api extends AbstractMockApi {
   }
 }
 
-module.exports = MockV1Api
+export default MockV1Api
 
 // type hint for the inherited `instance` method
 /**

+ 6 - 6
services/web/test/acceptance/src/mocks/MockV1HistoryApi.js → services/web/test/acceptance/src/mocks/MockV1HistoryApi.mjs

@@ -1,10 +1,10 @@
-const AbstractMockApi = require('./AbstractMockApi')
-const { EventEmitter } = require('events')
-const {
+import AbstractMockApi from './AbstractMockApi.mjs'
+import { EventEmitter } from 'node:events'
+import {
   zipAttachment,
   prepareZipAttachment,
-} = require('../../../../app/src/infrastructure/Response')
-const Joi = require('joi')
+} from '../../../../app/src/infrastructure/Response.js'
+import Joi from 'joi'
 
 class MockV1HistoryApi extends AbstractMockApi {
   reset() {
@@ -120,7 +120,7 @@ class MockV1HistoryApi extends AbstractMockApi {
   }
 }
 
-module.exports = MockV1HistoryApi
+export default MockV1HistoryApi
 
 // type hint for the inherited `instance` method
 /**