1
0
Fork 0
mirror of synced 2024-07-07 15:25:52 +12:00

Some builder test cases, check the service type switch works as expected.

This commit is contained in:
mike12345567 2023-07-28 16:50:44 +01:00
parent 3798caf86d
commit 3a211b8865
3 changed files with 43 additions and 4 deletions

View file

@ -85,11 +85,11 @@ function getPackageJsonFields(): {
}
function isWorker() {
return environment.SERVICE_NAME === ServiceType.WORKER
return environment.SERVICE_TYPE === ServiceType.WORKER
}
function isApps() {
return environment.SERVICE_NAME === ServiceType.APPS
return environment.SERVICE_TYPE === ServiceType.APPS
}
const environment = {

View file

@ -13,7 +13,7 @@ export default async (ctx: UserCtx, next: any) => {
if (!builderFn) {
throw new Error("Service name unknown - middleware inactive.")
}
if (!ctx.internal && !isBuilder(ctx.user, appId)) {
if (!ctx.internal && !builderFn(ctx.user, appId)) {
ctx.throw(403, "Builder user only endpoint.")
}
return next()

View file

@ -2,8 +2,10 @@ import adminOnly from "../adminOnly"
import builderOnly from "../builderOnly"
import builderOrAdmin from "../builderOrAdmin"
import { structures } from "../../../tests"
import { ContextUser } from "@budibase/types"
import { ContextUser, ServiceType } from "@budibase/types"
import { doInAppContext } from "../../context"
import env from "../../environment"
env._set("SERVICE_TYPE", ServiceType.APPS)
const appId = "app_aaa"
const basicUser = structures.users.user()
@ -139,3 +141,40 @@ describe("builderOrAdmin middleware", () => {
threw(ctx.throw)
})
})
describe("check service difference", () => {
it("should not allow without app ID in apps", () => {
env._set("SERVICE_TYPE", ServiceType.APPS)
const appId = "app_a"
const ctx = buildUserCtx({
...basicUser,
builder: {
apps: [appId]
}
})
const next = jest.fn()
doInAppContext(appId, () => {
builderOnly(ctx, next)
})
passed(ctx.throw, next)
doInAppContext("app_b", () => {
builderOnly(ctx, next)
})
threw(ctx.throw)
})
it("should allow without app ID in worker", () => {
env._set("SERVICE_TYPE", ServiceType.WORKER)
const ctx = buildUserCtx({
...basicUser,
builder: {
apps: ["app_a"]
}
})
const next = jest.fn()
doInAppContext("app_b", () => {
builderOnly(ctx, next)
})
passed(ctx.throw, next)
})
})