From 8f9d382d899e4e5706681d38c6de6e4729b12d63 Mon Sep 17 00:00:00 2001 From: Andrew Rumble Date: Tue, 17 Dec 2024 10:23:09 +0000 Subject: [PATCH] Merge pull request #22188 from overleaf/ar-convert-modules-group-settings-to-es-modules Convert modules/group-settings to es modules GitOrigin-RevId: 3f1768fb91148722c0f0c181ab9b5a5a9174deca --- .../{PlansHelper.js => PlansHelper.mjs} | 10 ++--- .../web/test/acceptance/src/DeletionTests.mjs | 2 +- .../acceptance/src/PrimaryEmailCheckTests.mjs | 2 +- .../src/UserMembershipAuthorizationTests.mjs | 2 +- .../src/helpers/DeletedSubscription.mjs | 2 +- ...ubscription.js => RecurlySubscription.mjs} | 16 ++++---- .../{Subscription.js => Subscription.mjs} | 22 +++++----- .../src/helpers/{groupSSO.js => groupSSO.mjs} | 41 ++++++++++--------- 8 files changed, 49 insertions(+), 48 deletions(-) rename services/web/app/src/Features/Subscription/{PlansHelper.js => PlansHelper.mjs} (69%) rename services/web/test/acceptance/src/helpers/{RecurlySubscription.js => RecurlySubscription.mjs} (76%) rename services/web/test/acceptance/src/helpers/{Subscription.js => Subscription.mjs} (85%) rename services/web/test/acceptance/src/helpers/{groupSSO.js => groupSSO.mjs} (84%) diff --git a/services/web/app/src/Features/Subscription/PlansHelper.js b/services/web/app/src/Features/Subscription/PlansHelper.mjs similarity index 69% rename from services/web/app/src/Features/Subscription/PlansHelper.js rename to services/web/app/src/Features/Subscription/PlansHelper.mjs index e4ea7108fc..aa23a8d592 100644 --- a/services/web/app/src/Features/Subscription/PlansHelper.js +++ b/services/web/app/src/Features/Subscription/PlansHelper.mjs @@ -1,7 +1,7 @@ -const FeaturesHelper = require('./FeaturesHelper') -const PlanLocator = require('./PlansLocator') +import FeaturesHelper from './FeaturesHelper.js' +import PlanLocator from './PlansLocator.js' -function isProfessionalPlan(planCode) { +export function isProfessionalPlan(planCode) { const plan = PlanLocator.findLocalPlanInSettings(planCode) // only identify "modern" professional group plans as eligible, and do not include legacy plans return Boolean( @@ -10,12 +10,12 @@ function isProfessionalPlan(planCode) { ) } -function isProfessionalGroupPlan(subscription) { +export function isProfessionalGroupPlan(subscription) { const isProfessional = isProfessionalPlan(subscription.planCode) return subscription.groupPlan && isProfessional } -module.exports = { +export default { isProfessionalPlan, isProfessionalGroupPlan, } diff --git a/services/web/test/acceptance/src/DeletionTests.mjs b/services/web/test/acceptance/src/DeletionTests.mjs index 43be97b194..3058e76173 100644 --- a/services/web/test/acceptance/src/DeletionTests.mjs +++ b/services/web/test/acceptance/src/DeletionTests.mjs @@ -1,5 +1,5 @@ import User from './helpers/User.js' -import Subscription from './helpers/Subscription.js' +import Subscription from './helpers/Subscription.mjs' import request from './helpers/request.js' import async from 'async' import { expect } from 'chai' diff --git a/services/web/test/acceptance/src/PrimaryEmailCheckTests.mjs b/services/web/test/acceptance/src/PrimaryEmailCheckTests.mjs index 6e58ceffe2..92d097950f 100644 --- a/services/web/test/acceptance/src/PrimaryEmailCheckTests.mjs +++ b/services/web/test/acceptance/src/PrimaryEmailCheckTests.mjs @@ -3,7 +3,7 @@ import Settings from '@overleaf/settings' import { expect } from 'chai' import Features from '../../../app/src/infrastructure/Features.js' import MockV1ApiClass from './mocks/MockV1Api.js' -import SubscriptionHelper from './helpers/Subscription.js' +import SubscriptionHelper from './helpers/Subscription.mjs' const Subscription = SubscriptionHelper.promises diff --git a/services/web/test/acceptance/src/UserMembershipAuthorizationTests.mjs b/services/web/test/acceptance/src/UserMembershipAuthorizationTests.mjs index 3622b570e6..906d154e42 100644 --- a/services/web/test/acceptance/src/UserMembershipAuthorizationTests.mjs +++ b/services/web/test/acceptance/src/UserMembershipAuthorizationTests.mjs @@ -2,7 +2,7 @@ import { expect } from 'chai' import async from 'async' import User from './helpers/User.js' import Institution from './helpers/Institution.mjs' -import Subscription from './helpers/Subscription.js' +import Subscription from './helpers/Subscription.mjs' import Publisher from './helpers/Publisher.js' describe('UserMembershipAuthorization', function () { diff --git a/services/web/test/acceptance/src/helpers/DeletedSubscription.mjs b/services/web/test/acceptance/src/helpers/DeletedSubscription.mjs index 58fe5e1e49..2d1c8f1f35 100644 --- a/services/web/test/acceptance/src/helpers/DeletedSubscription.mjs +++ b/services/web/test/acceptance/src/helpers/DeletedSubscription.mjs @@ -1,5 +1,5 @@ import { expect } from 'chai' -import MockSubscription from './Subscription.js' +import MockSubscription from './Subscription.mjs' import SubscriptionUpdater from '../../../../app/src/Features/Subscription/SubscriptionUpdater.js' import { Subscription as SubscriptionModel } from '../../../../app/src/models/Subscription.js' import { DeletedSubscription as DeletedSubscriptionModel } from '../../../../app/src/models/DeletedSubscription.js' diff --git a/services/web/test/acceptance/src/helpers/RecurlySubscription.js b/services/web/test/acceptance/src/helpers/RecurlySubscription.mjs similarity index 76% rename from services/web/test/acceptance/src/helpers/RecurlySubscription.js rename to services/web/test/acceptance/src/helpers/RecurlySubscription.mjs index c7878ffc0f..1e337d7f32 100644 --- a/services/web/test/acceptance/src/helpers/RecurlySubscription.js +++ b/services/web/test/acceptance/src/helpers/RecurlySubscription.mjs @@ -1,9 +1,10 @@ -const { ObjectId } = require('mongodb-legacy') -const Subscription = require('./Subscription') -const MockRecurlyApiClass = require('../mocks/MockRecurlyApi') -const RecurlyWrapper = require('../../../../app/src/Features/Subscription/RecurlyWrapper') -const { promisifyClass } = require('@overleaf/promise-utils') +import mongodb from 'mongodb-legacy' +import Subscription from './Subscription.mjs' +import MockRecurlyApiClass from '../mocks/MockRecurlyApi.js' +import RecurlyWrapper from '../../../../app/src/Features/Subscription/RecurlyWrapper.js' +import { promisifyClass } from '@overleaf/promise-utils' +const { ObjectId } = mongodb let MockRecurlyApi before(function () { @@ -57,7 +58,8 @@ class RecurlySubscription { } } -module.exports = RecurlySubscription -module.exports.promises = promisifyClass(RecurlySubscription, { +export default RecurlySubscription + +export const promises = promisifyClass(RecurlySubscription, { without: ['buildCallbackXml'], }) diff --git a/services/web/test/acceptance/src/helpers/Subscription.js b/services/web/test/acceptance/src/helpers/Subscription.mjs similarity index 85% rename from services/web/test/acceptance/src/helpers/Subscription.js rename to services/web/test/acceptance/src/helpers/Subscription.mjs index 602ae1feec..2459ffca45 100644 --- a/services/web/test/acceptance/src/helpers/Subscription.js +++ b/services/web/test/acceptance/src/helpers/Subscription.mjs @@ -1,14 +1,12 @@ -const { db, ObjectId } = require('../../../../app/src/infrastructure/mongodb') -const { expect } = require('chai') -const { callbackifyClass } = require('@overleaf/promise-utils') -const SubscriptionUpdater = require('../../../../app/src/Features/Subscription/SubscriptionUpdater') -const PermissionsManager = require('../../../../app/src/Features/Authorization/PermissionsManager') -const SSOConfigManager = require('../../../../modules/group-settings/app/src/sso/SSOConfigManager') -const SubscriptionModel = - require('../../../../app/src/models/Subscription').Subscription -const DeletedSubscriptionModel = - require('../../../../app/src/models/DeletedSubscription').DeletedSubscription -const Modules = require('../../../../app/src/infrastructure/Modules') +import { db, ObjectId } from '../../../../app/src/infrastructure/mongodb.js' +import { expect } from 'chai' +import { callbackifyClass } from '@overleaf/promise-utils' +import SubscriptionUpdater from '../../../../app/src/Features/Subscription/SubscriptionUpdater.js' +import PermissionsManager from '../../../../app/src/Features/Authorization/PermissionsManager.js' +import SSOConfigManager from '../../../../modules/group-settings/app/src/sso/SSOConfigManager.mjs' +import { Subscription as SubscriptionModel } from '../../../../app/src/models/Subscription.js' +import { DeletedSubscription as DeletedSubscriptionModel } from '../../../../app/src/models/DeletedSubscription.js' +import Modules from '../../../../app/src/infrastructure/Modules.js' class PromisifiedSubscription { constructor(options = {}) { @@ -178,4 +176,4 @@ const Subscription = callbackifyClass(PromisifiedSubscription, { }) Subscription.promises = class extends PromisifiedSubscription {} -module.exports = Subscription +export default Subscription diff --git a/services/web/test/acceptance/src/helpers/groupSSO.js b/services/web/test/acceptance/src/helpers/groupSSO.mjs similarity index 84% rename from services/web/test/acceptance/src/helpers/groupSSO.js rename to services/web/test/acceptance/src/helpers/groupSSO.mjs index a355d7ec7e..5f2de9cfd4 100644 --- a/services/web/test/acceptance/src/helpers/groupSSO.js +++ b/services/web/test/acceptance/src/helpers/groupSSO.mjs @@ -1,18 +1,19 @@ -const fs = require('fs') -const Path = require('path') -const User = require('./User').promises -const Subscription = require('./Subscription').promises -const { SSOConfig } = require('../../../../app/src/models/SSOConfig') -const UserHelper = require('./UserHelper') -const SAMLHelper = require('./SAMLHelper') -const Settings = require('@overleaf/settings') -const { - getProviderId, -} = require('../../../../app/src/Features/Subscription/GroupUtils') -const UserGetter = require('../../../../app/src/Features/User/UserGetter') -const { - Subscription: SubscriptionModel, -} = require('../../../../app/src/models/Subscription') +import fs from 'fs' +import Path from 'path' +import UserModule from './User.js' +import SubscriptionHelper from './Subscription.mjs' +import { SSOConfig } from '../../../../app/src/models/SSOConfig.js' +import UserHelper from './UserHelper.js' +import SAMLHelper from './SAMLHelper.js' +import Settings from '@overleaf/settings' +import { getProviderId } from '../../../../app/src/Features/Subscription/GroupUtils.js' +import UserGetter from '../../../../app/src/Features/User/UserGetter.js' +import { fileURLToPath } from 'node:url' +import { Subscription as SubscriptionModel } from '../../../../app/src/models/Subscription.js' + +const { promises: User } = UserModule +const { promises: Subscription } = SubscriptionHelper +const __dirname = fileURLToPath(new URL('.', import.meta.url)) const SAML_TEST_CERT = fs .readFileSync(Path.resolve(__dirname, '../../files/saml-cert.crt'), 'utf8') @@ -26,14 +27,14 @@ function getEnrollmentUrl(groupId) { const userIdAttribute = 'nameID' -const baseSsoConfig = { +export const baseSsoConfig = { entryPoint: 'http://example-sso.com/saml', certificates: [SAML_TEST_CERT], signatureAlgorithm: 'sha256', userIdAttribute, } // the database also sets enabled and validated, but we cannot set that in the POST request for /manage/groups/:ID/settings/sso -async function createGroupSSO() { +export async function createGroupSSO() { const nonSSOMemberHelper = await UserHelper.createUser() const nonSSOMember = nonSSOMemberHelper.user @@ -91,7 +92,7 @@ async function createGroupSSO() { } } -async function linkGroupMember( +export async function linkGroupMember( userEmail, userPassword, groupId, @@ -165,7 +166,7 @@ async function linkGroupMember( return userHelper } -async function setConfigAndEnableSSO( +export async function setConfigAndEnableSSO( subscriptionHelper, adminEmailPassword, config @@ -211,7 +212,7 @@ async function setConfigAndEnableSSO( } } -module.exports = { +export default { createGroupSSO, linkGroupMember, baseSsoConfig,