From 1efc7e0321465da1c503c9c1093ce8152ee26c51 Mon Sep 17 00:00:00 2001 From: Matheus Barbosa Silva <36537004+matheusbsilva137@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:25:56 -0300 Subject: [PATCH] chore!: Update private apps cap on Community Edition (#33399) * chore!: update private apps cap on CE --------- Co-authored-by: Tasso --- .../tabs/AppStatus/AppStatus.tsx | 2 +- .../views/marketplace/AppsList/AppRow.tsx | 1 + .../AppInstallModal/AppInstallModal.tsx | 2 +- .../views/marketplace/hooks/useAppMenu.tsx | 2 +- .../tests/e2e/apps/apps-contextualbar.spec.ts | 2 + apps/meteor/tests/e2e/apps/apps-modal.spec.ts | 2 + .../e2e/apps/private-apps-upload.spec.ts | 70 ++++++++++++++++++ .../tests/e2e/channel-management.spec.ts | 2 + apps/meteor/tests/e2e/e2e-encryption.spec.ts | 4 +- .../e2e/fixtures/files/test-app_0.0.1.zip | Bin 0 -> 19886 bytes apps/meteor/tests/e2e/page-objects/index.ts | 1 + .../tests/e2e/page-objects/marketplace.ts | 45 +++++++++++ .../meteor/tests/e2e/video-conference.spec.ts | 2 + .../tests/end-to-end/apps/apps-uninstall.ts | 3 +- .../tests/end-to-end/apps/installation.ts | 27 ++++++- .../end-to-end/apps/send-messages-as-user.ts | 3 +- .../tests/end-to-end/apps/send-messages.ts | 3 +- .../apps/slash-command-test-simple.ts | 3 +- .../apps/slash-command-test-with-arguments.ts | 3 +- .../end-to-end/apps/video-conferences.ts | 3 +- .../__tests__/DefaultRestrictions.spec.ts | 4 +- .../license/src/getLicenseLimit.spec.ts | 2 +- ee/packages/license/src/license.spec.ts | 2 +- .../src/validation/validateDefaultLimits.ts | 2 +- 24 files changed, 172 insertions(+), 18 deletions(-) create mode 100644 apps/meteor/tests/e2e/apps/private-apps-upload.spec.ts create mode 100644 apps/meteor/tests/e2e/fixtures/files/test-app_0.0.1.zip create mode 100644 apps/meteor/tests/e2e/page-objects/marketplace.ts diff --git a/apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppStatus/AppStatus.tsx b/apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppStatus/AppStatus.tsx index db46d87c18d8..643dfbd0215b 100644 --- a/apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppStatus/AppStatus.tsx +++ b/apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppStatus/AppStatus.tsx @@ -151,7 +151,7 @@ const AppStatus = ({ app, showStatus = true, isAppDetailsPage, installed, ...pro {statuses?.map((status, index) => ( - + {handleAppRequestsNumber(status)} {t(`${status.label}` as TranslationKey)} diff --git a/apps/meteor/client/views/marketplace/AppsList/AppRow.tsx b/apps/meteor/client/views/marketplace/AppsList/AppRow.tsx index 33e54edd90bb..338828e3f47d 100644 --- a/apps/meteor/client/views/marketplace/AppsList/AppRow.tsx +++ b/apps/meteor/client/views/marketplace/AppsList/AppRow.tsx @@ -50,6 +50,7 @@ const AppRow = ({ className, ...props }: App & { className?: string }): ReactEle return (
- {getTitle()} + {getTitle()} diff --git a/apps/meteor/client/views/marketplace/hooks/useAppMenu.tsx b/apps/meteor/client/views/marketplace/hooks/useAppMenu.tsx index bd2071fe2d82..7b06d2214be9 100644 --- a/apps/meteor/client/views/marketplace/hooks/useAppMenu.tsx +++ b/apps/meteor/client/views/marketplace/hooks/useAppMenu.tsx @@ -340,7 +340,7 @@ export const useAppMenu = (app: App, isAppDetailsPage: boolean) => { const doesItReachedTheLimit = !app.migrated && !appCountQuery?.data?.hasUnlimitedApps && - !!appCountQuery?.data?.enabled && + appCountQuery?.data?.enabled !== undefined && appCountQuery?.data?.enabled >= appCountQuery?.data?.limit; const installedAppOptions = [ diff --git a/apps/meteor/tests/e2e/apps/apps-contextualbar.spec.ts b/apps/meteor/tests/e2e/apps/apps-contextualbar.spec.ts index 4753d5167083..7ee6f8696afd 100644 --- a/apps/meteor/tests/e2e/apps/apps-contextualbar.spec.ts +++ b/apps/meteor/tests/e2e/apps/apps-contextualbar.spec.ts @@ -1,5 +1,6 @@ import type { Page } from '@playwright/test'; +import { IS_EE } from '../config/constants'; import { Users } from '../fixtures/userStates'; import { HomeChannel } from '../page-objects'; import { expect, test } from '../utils/test'; @@ -7,6 +8,7 @@ import { expect, test } from '../utils/test'; test.use({ storageState: Users.user1.state }); test.describe.serial('Apps > ContextualBar', () => { + test.skip(!IS_EE, 'Premium Only'); let poHomeChannel: HomeChannel; let page: Page; diff --git a/apps/meteor/tests/e2e/apps/apps-modal.spec.ts b/apps/meteor/tests/e2e/apps/apps-modal.spec.ts index a74a439183d1..638096a66ad8 100644 --- a/apps/meteor/tests/e2e/apps/apps-modal.spec.ts +++ b/apps/meteor/tests/e2e/apps/apps-modal.spec.ts @@ -1,5 +1,6 @@ import type { Page } from '@playwright/test'; +import { IS_EE } from '../config/constants'; import { Users } from '../fixtures/userStates'; import { HomeChannel } from '../page-objects'; import { Modal } from '../page-objects/modal'; @@ -8,6 +9,7 @@ import { expect, test } from '../utils/test'; test.use({ storageState: Users.user1.state }); test.describe.serial('Apps > Modal', () => { + test.skip(!IS_EE, 'Premium Only'); let poHomeChannel: HomeChannel; let poModal: Modal; diff --git a/apps/meteor/tests/e2e/apps/private-apps-upload.spec.ts b/apps/meteor/tests/e2e/apps/private-apps-upload.spec.ts new file mode 100644 index 000000000000..05540dfc011f --- /dev/null +++ b/apps/meteor/tests/e2e/apps/private-apps-upload.spec.ts @@ -0,0 +1,70 @@ +import { IS_EE } from '../config/constants'; +import { Users } from '../fixtures/userStates'; +import { Marketplace } from '../page-objects'; +import { expect, test } from '../utils/test'; + +test.use({ storageState: Users.admin.state }); + +test.describe.serial('Private apps upload', () => { + let poMarketplace: Marketplace; + + test.beforeEach(async ({ page }) => { + poMarketplace = new Marketplace(page); + + await page.goto('/marketplace/private'); + }); + + test.describe('Premium', () => { + test.skip(!IS_EE, 'Premium Only'); + + test('expect to allow admin to upload a private app in EE, which should be enabled by default', async ({ page }) => { + const fileChooserPromise = page.waitForEvent('filechooser'); + + await poMarketplace.btnUploadPrivateApp.click(); + await expect(poMarketplace.btnInstallPrivateApp).toBeDisabled(); + + await poMarketplace.btnUploadPrivateAppFile.click(); + const fileChooser = await fileChooserPromise; + await fileChooser.setFiles('./tests/e2e/fixtures/files/test-app_0.0.1.zip'); + + await expect(poMarketplace.btnInstallPrivateApp).toBeEnabled(); + await poMarketplace.btnInstallPrivateApp.click(); + await page.getByRole('button', { name: 'Agree' }).click(); + await expect(poMarketplace.appStatusTag).toHaveText('Enabled'); + }); + }); + + test.describe('Community Edition', () => { + test.skip(IS_EE, 'CE Only'); + + test('expect to allow admin to upload a private app in CE, but it should be disabled by default', async ({ page }) => { + const fileChooserPromise = page.waitForEvent('filechooser'); + + await poMarketplace.btnUploadPrivateApp.click(); + await expect(poMarketplace.btnConfirmAppUploadModal).toBeEnabled(); + await poMarketplace.btnConfirmAppUploadModal.click(); + + await expect(poMarketplace.btnInstallPrivateApp).toBeDisabled(); + await poMarketplace.btnUploadPrivateAppFile.click(); + const fileChooser = await fileChooserPromise; + await fileChooser.setFiles('./tests/e2e/fixtures/files/test-app_0.0.1.zip'); + + await expect(poMarketplace.btnInstallPrivateApp).toBeEnabled(); + await poMarketplace.btnInstallPrivateApp.click(); + + await expect(poMarketplace.confirmAppUploadModalTitle).toHaveText('Private apps limit reached'); + await expect(poMarketplace.btnConfirmAppUploadModal).toBeEnabled(); + await poMarketplace.btnConfirmAppUploadModal.click(); + + await page.getByRole('button', { name: 'Agree' }).click(); + await expect(poMarketplace.appStatusTag).toHaveText('Disabled'); + }); + + test('expect not to allow enabling a recently installed private app in CE', async () => { + await poMarketplace.lastAppRow.click(); + await expect(poMarketplace.appStatusTag).toHaveText('Disabled'); + await poMarketplace.appMenu.click(); + await expect(poMarketplace.btnEnableApp).toBeDisabled(); + }); + }); +}); diff --git a/apps/meteor/tests/e2e/channel-management.spec.ts b/apps/meteor/tests/e2e/channel-management.spec.ts index 15a0ef13eff2..84f74067db0e 100644 --- a/apps/meteor/tests/e2e/channel-management.spec.ts +++ b/apps/meteor/tests/e2e/channel-management.spec.ts @@ -1,6 +1,7 @@ import { faker } from '@faker-js/faker'; import type { Page } from '@playwright/test'; +import { IS_EE } from './config/constants'; import { Users } from './fixtures/userStates'; import { HomeChannel } from './page-objects'; import { createTargetChannel } from './utils'; @@ -46,6 +47,7 @@ test.describe.serial('channel-management', () => { }); test('should be able to navigate on call popup with keyboard', async ({ page }) => { + test.skip(!IS_EE, 'Premium Only'); await poHomeChannel.sidenav.openChat(targetChannel); await poHomeChannel.roomHeaderFavoriteBtn.focus(); diff --git a/apps/meteor/tests/e2e/e2e-encryption.spec.ts b/apps/meteor/tests/e2e/e2e-encryption.spec.ts index ad98df1aaa53..1135bc707491 100644 --- a/apps/meteor/tests/e2e/e2e-encryption.spec.ts +++ b/apps/meteor/tests/e2e/e2e-encryption.spec.ts @@ -1,7 +1,7 @@ import { faker } from '@faker-js/faker'; import type { Page } from '@playwright/test'; -import { BASE_API_URL } from './config/constants'; +import { BASE_API_URL, IS_EE } from './config/constants'; import { createAuxContext } from './fixtures/createAuxContext'; import injectInitialData from './fixtures/inject-initial-data'; import { Users, storeState, restoreState } from './fixtures/userStates'; @@ -641,6 +641,7 @@ test.describe.serial('e2e-encryption', () => { }); test('expect slash commands to be enabled in an e2ee room', async ({ page }) => { + test.skip(!IS_EE, 'Premium Only'); const channelName = faker.string.uuid(); await poHomeChannel.sidenav.createEncryptedChannel(channelName); @@ -668,6 +669,7 @@ test.describe.serial('e2e-encryption', () => { }); test.describe('un-encrypted messages not allowed in e2ee rooms', () => { + test.skip(!IS_EE, 'Premium Only'); let poHomeChannel: HomeChannel; test.beforeEach(async ({ page }) => { diff --git a/apps/meteor/tests/e2e/fixtures/files/test-app_0.0.1.zip b/apps/meteor/tests/e2e/fixtures/files/test-app_0.0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..820f6645ceed9b867243824f7510a7343de7bbc7 GIT binary patch literal 19886 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 { + test.skip(!IS_EE, 'Premium Only'); let poHomeChannel: HomeChannel; let targetChannel: string; let targetReadOnlyChannel: string; diff --git a/apps/meteor/tests/end-to-end/apps/apps-uninstall.ts b/apps/meteor/tests/end-to-end/apps/apps-uninstall.ts index e51bbb31bd96..c8831cc105c5 100644 --- a/apps/meteor/tests/end-to-end/apps/apps-uninstall.ts +++ b/apps/meteor/tests/end-to-end/apps/apps-uninstall.ts @@ -5,8 +5,9 @@ import { after, before, describe, it } from 'mocha'; import { getCredentials, request, credentials } from '../../data/api-data'; import { apps } from '../../data/apps/apps-data'; import { installTestApp, cleanupApps } from '../../data/apps/helper'; +import { IS_EE } from '../../e2e/config/constants'; -describe('Apps - Uninstall', () => { +(IS_EE ? describe : describe.skip)('Apps - Uninstall', () => { let app: App; before((done) => getCredentials(done)); diff --git a/apps/meteor/tests/end-to-end/apps/installation.ts b/apps/meteor/tests/end-to-end/apps/installation.ts index e3484eb81543..fc1ea2a0d7f3 100644 --- a/apps/meteor/tests/end-to-end/apps/installation.ts +++ b/apps/meteor/tests/end-to-end/apps/installation.ts @@ -6,6 +6,7 @@ import { APP_URL, apps } from '../../data/apps/apps-data'; import { cleanupApps } from '../../data/apps/helper'; import { updatePermission } from '../../data/permissions.helper'; import { getUserByUsername } from '../../data/users.helper'; +import { IS_EE } from '../../e2e/config/constants'; const APP_USERNAME = 'appsrocketchattester.bot'; @@ -34,7 +35,7 @@ describe('Apps - Installation', () => { .end(done); }); }); - it('should install the app successfully from a URL', (done) => { + (IS_EE ? it : it.skip)('should succesfully install an app from a URL in EE, which should be auto-enabled', (done) => { void updatePermission('manage-apps', ['admin']).then(() => { void request .post(apps()) @@ -54,6 +55,26 @@ describe('Apps - Installation', () => { .end(done); }); }); + (!IS_EE ? it : it.skip)('should succesfully install an app from a URL in CE, which should not be enabled', (done) => { + void updatePermission('manage-apps', ['admin']).then(() => { + void request + .post(apps()) + .set(credentials) + .send({ + url: APP_URL, + }) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.a.property('success', true); + expect(res.body).to.have.a.property('app'); + expect(res.body.app).to.have.a.property('id'); + expect(res.body.app).to.have.a.property('version'); + expect(res.body.app).to.have.a.property('status').and.to.be.equal('initialized'); + }) + .end(done); + }); + }); it('should have created the app user successfully', (done) => { void getUserByUsername(APP_USERNAME) .then((user) => { @@ -61,7 +82,7 @@ describe('Apps - Installation', () => { }) .then(done); }); - describe('Slash commands registration', () => { + (IS_EE ? describe : describe.skip)('Slash commands registration', () => { it('should have created the "test-simple" slash command successfully', (done) => { void request .get(api('commands.get')) @@ -91,7 +112,7 @@ describe('Apps - Installation', () => { .end(done); }); }); - describe('Video Conf Provider registration', () => { + (IS_EE ? describe : describe.skip)('Video Conf Provider registration', () => { it('should have created two video conf provider successfully', (done) => { void request .get(api('video-conference.providers')) diff --git a/apps/meteor/tests/end-to-end/apps/send-messages-as-user.ts b/apps/meteor/tests/end-to-end/apps/send-messages-as-user.ts index 401a011cecea..f04482afc747 100644 --- a/apps/meteor/tests/end-to-end/apps/send-messages-as-user.ts +++ b/apps/meteor/tests/end-to-end/apps/send-messages-as-user.ts @@ -11,8 +11,9 @@ import { createRoom, deleteRoom } from '../../data/rooms.helper'; import { adminUsername, password } from '../../data/user'; import type { TestUser } from '../../data/users.helper'; import { createUser, deleteUser, login } from '../../data/users.helper'; +import { IS_EE } from '../../e2e/config/constants'; -describe('Apps - Send Messages As User', () => { +(IS_EE ? describe : describe.skip)('Apps - Send Messages As User', () => { let app: App; before((done) => getCredentials(done)); diff --git a/apps/meteor/tests/end-to-end/apps/send-messages.ts b/apps/meteor/tests/end-to-end/apps/send-messages.ts index 9cfb9f2688d1..7e6db4cc4b58 100644 --- a/apps/meteor/tests/end-to-end/apps/send-messages.ts +++ b/apps/meteor/tests/end-to-end/apps/send-messages.ts @@ -7,8 +7,9 @@ import { apps } from '../../data/apps/apps-data'; import { cleanupApps, installTestApp } from '../../data/apps/helper'; import { getMessageById } from '../../data/chat.helper'; import { createRoom, deleteRoom } from '../../data/rooms.helper'; +import { IS_EE } from '../../e2e/config/constants'; -describe('Apps - Send Messages As APP User', () => { +(IS_EE ? describe : describe.skip)('Apps - Send Messages As APP User', () => { let app: App; before((done) => getCredentials(done)); diff --git a/apps/meteor/tests/end-to-end/apps/slash-command-test-simple.ts b/apps/meteor/tests/end-to-end/apps/slash-command-test-simple.ts index c74bcffaa4a2..56031faf4486 100644 --- a/apps/meteor/tests/end-to-end/apps/slash-command-test-simple.ts +++ b/apps/meteor/tests/end-to-end/apps/slash-command-test-simple.ts @@ -4,8 +4,9 @@ import { after, before, describe, it } from 'mocha'; import { getCredentials, request, credentials, api } from '../../data/api-data'; import { cleanupApps, installTestApp } from '../../data/apps/helper'; +import { IS_EE } from '../../e2e/config/constants'; -describe('Apps - Slash Command "test-simple"', () => { +(IS_EE ? describe : describe.skip)('Apps - Slash Command "test-simple"', () => { before((done) => getCredentials(done)); before(async () => { await cleanupApps(); diff --git a/apps/meteor/tests/end-to-end/apps/slash-command-test-with-arguments.ts b/apps/meteor/tests/end-to-end/apps/slash-command-test-with-arguments.ts index 4701ed3c4c85..e462536f23dd 100644 --- a/apps/meteor/tests/end-to-end/apps/slash-command-test-with-arguments.ts +++ b/apps/meteor/tests/end-to-end/apps/slash-command-test-with-arguments.ts @@ -4,8 +4,9 @@ import { after, before, describe, it } from 'mocha'; import { getCredentials, request, credentials, api } from '../../data/api-data'; import { cleanupApps, installTestApp } from '../../data/apps/helper'; +import { IS_EE } from '../../e2e/config/constants'; -describe('Apps - Slash Command "test-with-arguments"', () => { +(IS_EE ? describe : describe.skip)('Apps - Slash Command "test-with-arguments"', () => { before((done) => getCredentials(done)); before(async () => { await cleanupApps(); diff --git a/apps/meteor/tests/end-to-end/apps/video-conferences.ts b/apps/meteor/tests/end-to-end/apps/video-conferences.ts index 65727168c47f..80813603d3be 100644 --- a/apps/meteor/tests/end-to-end/apps/video-conferences.ts +++ b/apps/meteor/tests/end-to-end/apps/video-conferences.ts @@ -7,6 +7,7 @@ import { cleanupApps, installTestApp } from '../../data/apps/helper'; import { updateSetting } from '../../data/permissions.helper'; import { createRoom, deleteRoom } from '../../data/rooms.helper'; import { adminUsername } from '../../data/user'; +import { IS_EE } from '../../e2e/config/constants'; describe('Apps - Video Conferences', () => { before((done) => getCredentials(done)); @@ -65,7 +66,7 @@ describe('Apps - Video Conferences', () => { }); }); - describe('[With Test App]', () => { + (IS_EE ? describe : describe.skip)('[With Test App]', () => { before(async () => { await cleanupApps(); await installTestApp(); diff --git a/ee/packages/license/__tests__/DefaultRestrictions.spec.ts b/ee/packages/license/__tests__/DefaultRestrictions.spec.ts index e085aa165605..ea1f975823f1 100644 --- a/ee/packages/license/__tests__/DefaultRestrictions.spec.ts +++ b/ee/packages/license/__tests__/DefaultRestrictions.spec.ts @@ -19,9 +19,9 @@ describe('Community Restrictions', () => { it('should respect the default if there is no license applied', async () => { const license = new LicenseImp(); - license.setLicenseLimitCounter('privateApps', () => 1); + license.setLicenseLimitCounter('privateApps', () => 0); - await expect(await license.shouldPreventAction('privateApps')).toBe(false); + await expect(await license.shouldPreventAction('privateApps')).toBe(true); license.setLicenseLimitCounter('privateApps', () => 10); diff --git a/ee/packages/license/src/getLicenseLimit.spec.ts b/ee/packages/license/src/getLicenseLimit.spec.ts index 0a95519d6083..84e9590861e8 100644 --- a/ee/packages/license/src/getLicenseLimit.spec.ts +++ b/ee/packages/license/src/getLicenseLimit.spec.ts @@ -7,7 +7,7 @@ describe('Marketplace Restrictions', () => { const LicenseManager = new LicenseImp(); expect(getAppsConfig.call(LicenseManager)).toEqual({ - maxPrivateApps: 3, + maxPrivateApps: 0, maxMarketplaceApps: 5, }); }); diff --git a/ee/packages/license/src/license.spec.ts b/ee/packages/license/src/license.spec.ts index 406dfd696e2e..229b7e709780 100644 --- a/ee/packages/license/src/license.spec.ts +++ b/ee/packages/license/src/license.spec.ts @@ -291,7 +291,7 @@ describe('License.getInfo', () => { }) ).limits, ).toMatchObject({ - privateApps: { max: 3 }, + privateApps: { max: 0 }, marketplaceApps: { max: 5 }, }); }); diff --git a/ee/packages/license/src/validation/validateDefaultLimits.ts b/ee/packages/license/src/validation/validateDefaultLimits.ts index 4f48d4e7ebe4..cc39635fa988 100644 --- a/ee/packages/license/src/validation/validateDefaultLimits.ts +++ b/ee/packages/license/src/validation/validateDefaultLimits.ts @@ -11,7 +11,7 @@ export const defaultLimits: { privateApps: [ { behavior: 'prevent_action', - max: 3, + max: 0, }, ], marketplaceApps: [