From dce38908c90864ee7c6d1baaf047e1ba11a87373 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 1 Aug 2023 10:56:47 +0100 Subject: [PATCH] PR comments (backend). --- packages/backend-core/src/users/users.ts | 21 ------------------- .../server/src/api/controllers/application.ts | 1 - packages/server/src/db/utils.ts | 2 +- packages/server/src/environment.ts | 3 +++ .../src/sdk/documents/applications.ts | 10 +++++++-- .../src/api/controllers/global/users.ts | 1 - .../routes/global/tests/appBuilder.spec.ts | 2 +- .../src/api/routes/global/tests/auth.spec.ts | 2 +- .../src/api/routes/global/tests/scim.spec.ts | 1 - packages/worker/src/environment.ts | 6 +++++- packages/worker/src/index.ts | 2 -- .../worker/src/tests/TestConfiguration.ts | 6 +++--- packages/worker/src/tests/api/users.ts | 2 +- packages/worker/src/tests/mocks/index.ts | 2 +- 14 files changed, 24 insertions(+), 37 deletions(-) diff --git a/packages/backend-core/src/users/users.ts b/packages/backend-core/src/users/users.ts index 2f869a69d2..a7e1389920 100644 --- a/packages/backend-core/src/users/users.ts +++ b/packages/backend-core/src/users/users.ts @@ -71,27 +71,6 @@ export const bulkUpdateGlobalUsers = async (users: User[]) => { return (await db.bulkDocs(users)) as BulkDocsResponse } -export const grantAppBuilderAccess = async (userId: string, appId: string) => { - const prodAppId = getProdAppID(appId) - const db = getGlobalDB() - const user = (await db.get(userId)) as User - if (!user.builder) { - user.builder = {} - } - if (!user.builder.apps) { - user.builder.apps = [] - } - if (!user.builder.apps.includes(prodAppId)) { - user.builder.apps.push(prodAppId) - } - try { - await db.put(user) - await userCache.invalidateUser(userId) - } catch (err: any) { - throw new Error(`Unable to grant user access: ${err.message}`) - } -} - export async function getById(id: string, opts?: GetOpts): Promise { const db = context.getGlobalDB() let user = await db.get(id) diff --git a/packages/server/src/api/controllers/application.ts b/packages/server/src/api/controllers/application.ts index 6013dc100d..e875a545ca 100644 --- a/packages/server/src/api/controllers/application.ts +++ b/packages/server/src/api/controllers/application.ts @@ -56,7 +56,6 @@ import { import { BASE_LAYOUT_PROP_IDS } from "../../constants/layouts" import sdk from "../../sdk" import { builderSocket } from "../../websockets" -import { grantAppBuilderAccess } from "@budibase/backend-core/src/users" // utility function, need to do away with this async function getLayouts() { diff --git a/packages/server/src/db/utils.ts b/packages/server/src/db/utils.ts index b17fe9a4df..dda14a9187 100644 --- a/packages/server/src/db/utils.ts +++ b/packages/server/src/db/utils.ts @@ -3,7 +3,7 @@ import { db as dbCore } from "@budibase/backend-core" type Optional = string | null -export enum AppStatus { +export const enum AppStatus { DEV = "development", ALL = "all", DEPLOYED = "published", diff --git a/packages/server/src/environment.ts b/packages/server/src/environment.ts index 64b342d577..2d3b717efd 100644 --- a/packages/server/src/environment.ts +++ b/packages/server/src/environment.ts @@ -1,3 +1,6 @@ +import { env as coreEnv } from "@budibase/backend-core" +import { ServiceType } from "@budibase/types" +coreEnv._set("SERVICE_TYPE", ServiceType.APPS) import { join } from "path" function isTest() { diff --git a/packages/shared-core/src/sdk/documents/applications.ts b/packages/shared-core/src/sdk/documents/applications.ts index 05129f6e75..788e990697 100644 --- a/packages/shared-core/src/sdk/documents/applications.ts +++ b/packages/shared-core/src/sdk/documents/applications.ts @@ -4,7 +4,10 @@ const APP_PREFIX = prefixed(DocumentType.APP) const APP_DEV_PREFIX = prefixed(DocumentType.APP_DEV) export function getDevAppID(appId: string) { - if (!appId || appId.startsWith(APP_DEV_PREFIX)) { + if (!appId) { + throw new Error("No app ID provided") + } + if (appId.startsWith(APP_DEV_PREFIX)) { return appId } // split to take off the app_ element, then join it together incase any other app_ exist @@ -18,7 +21,10 @@ export function getDevAppID(appId: string) { * Convert a development app ID to a deployed app ID. */ export function getProdAppID(appId: string) { - if (!appId || !appId.startsWith(APP_DEV_PREFIX)) { + if (!appId) { + throw new Error("No app ID provided") + } + if (!appId.startsWith(APP_DEV_PREFIX)) { return appId } // split to take off the app_dev element, then join it together incase any other app_ exist diff --git a/packages/worker/src/api/controllers/global/users.ts b/packages/worker/src/api/controllers/global/users.ts index 621426abf3..a8207ea89e 100644 --- a/packages/worker/src/api/controllers/global/users.ts +++ b/packages/worker/src/api/controllers/global/users.ts @@ -30,7 +30,6 @@ import { tenancy, platform, ErrorCode, - db as dbCore, } from "@budibase/backend-core" import { checkAnyUserExists } from "../../../utilities/users" import { isEmailConfigured } from "../../../utilities/email" diff --git a/packages/worker/src/api/routes/global/tests/appBuilder.spec.ts b/packages/worker/src/api/routes/global/tests/appBuilder.spec.ts index 2a0c75b365..f98ebbe15c 100644 --- a/packages/worker/src/api/routes/global/tests/appBuilder.spec.ts +++ b/packages/worker/src/api/routes/global/tests/appBuilder.spec.ts @@ -54,7 +54,7 @@ describe("/api/global/users/:userId/app/builder", () => { await config.api.users.grantBuilderToApp(user._id!, MOCK_APP_ID) let updated = await getUser(user._id!) expect(updated.builder?.apps![0]).toBe(MOCK_APP_ID) - await config.api.users.revokeBuilderToApp(user._id!, MOCK_APP_ID) + await config.api.users.revokeBuilderFromApp(user._id!, MOCK_APP_ID) updated = await getUser(user._id!) expect(updated.builder?.apps!.length).toBe(0) }) diff --git a/packages/worker/src/api/routes/global/tests/auth.spec.ts b/packages/worker/src/api/routes/global/tests/auth.spec.ts index c3db126e8b..d42f6dff49 100644 --- a/packages/worker/src/api/routes/global/tests/auth.spec.ts +++ b/packages/worker/src/api/routes/global/tests/auth.spec.ts @@ -206,7 +206,7 @@ describe("/api/global/auth", () => { const newPassword = "newpassword" const res = await config.api.auth.updatePassword(code!, newPassword) - user = (await config.getUser(user.email)) as User + user = await config.getUser(user.email) delete user.password expect(res.body).toEqual({ message: "password reset successfully." }) diff --git a/packages/worker/src/api/routes/global/tests/scim.spec.ts b/packages/worker/src/api/routes/global/tests/scim.spec.ts index 63257f9317..2eda482ed2 100644 --- a/packages/worker/src/api/routes/global/tests/scim.spec.ts +++ b/packages/worker/src/api/routes/global/tests/scim.spec.ts @@ -9,7 +9,6 @@ import { } from "@budibase/types" import { TestConfiguration } from "../../../../tests" import { events } from "@budibase/backend-core" -import * as pro from "@budibase/pro" mocks.licenses.useScimIntegration() diff --git a/packages/worker/src/environment.ts b/packages/worker/src/environment.ts index 678ffe7f14..6ef6dab03c 100644 --- a/packages/worker/src/environment.ts +++ b/packages/worker/src/environment.ts @@ -1,4 +1,8 @@ -const { join } = require("path") +import { env as coreEnv } from "@budibase/backend-core" +import { ServiceType } from "@budibase/types" +import { join } from "path" + +coreEnv._set("SERVICE_TYPE", ServiceType.WORKER) function isDev() { return process.env.NODE_ENV !== "production" diff --git a/packages/worker/src/index.ts b/packages/worker/src/index.ts index fe81c5858b..30596d1d76 100644 --- a/packages/worker/src/index.ts +++ b/packages/worker/src/index.ts @@ -10,7 +10,6 @@ import Application from "koa" import { bootstrap } from "global-agent" import * as db from "./db" import { sdk as proSdk } from "@budibase/pro" -import { ServiceType } from "@budibase/types" import { auth, logging, @@ -20,7 +19,6 @@ import { env as coreEnv, timers, } from "@budibase/backend-core" -coreEnv._set("SERVICE_TYPE", ServiceType.WORKER) db.init() import Koa from "koa" import koaBody from "koa-body" diff --git a/packages/worker/src/tests/TestConfiguration.ts b/packages/worker/src/tests/TestConfiguration.ts index 8fd6c46284..7e9792c9e3 100644 --- a/packages/worker/src/tests/TestConfiguration.ts +++ b/packages/worker/src/tests/TestConfiguration.ts @@ -251,9 +251,9 @@ class TestConfiguration { }) } - async getUser(email: string): Promise { - return context.doInTenant(this.getTenantId(), () => { - return users.getGlobalUserByEmail(email) + async getUser(email: string): Promise { + return context.doInTenant(this.getTenantId(), async () => { + return (await users.getGlobalUserByEmail(email)) as User }) } diff --git a/packages/worker/src/tests/api/users.ts b/packages/worker/src/tests/api/users.ts index d9f6595f1d..e96209eca6 100644 --- a/packages/worker/src/tests/api/users.ts +++ b/packages/worker/src/tests/api/users.ts @@ -153,7 +153,7 @@ export class UserAPI extends TestAPI { .expect(statusCode) } - revokeBuilderToApp = (userId: string, appId: string) => { + revokeBuilderFromApp = (userId: string, appId: string) => { return this.request .delete(`/api/global/users/${userId}/app/${appId}/builder`) .set(this.config.defaultHeaders()) diff --git a/packages/worker/src/tests/mocks/index.ts b/packages/worker/src/tests/mocks/index.ts index 2e3cc0b2c9..917e5f9ffc 100644 --- a/packages/worker/src/tests/mocks/index.ts +++ b/packages/worker/src/tests/mocks/index.ts @@ -2,7 +2,7 @@ import * as email from "./email" import { mocks } from "@budibase/backend-core/tests" import * as _pro from "@budibase/pro" -const pro = jest.mocked(_pro, { shallow: true }) +const pro = jest.mocked(_pro, { shallow: false }) export default { email,