Add tests
This commit is contained in:
parent
8008d2ced1
commit
7bb69d7ffd
|
@ -386,7 +386,7 @@ export async function getAllRoles(appId?: string): Promise<RoleDoc[]> {
|
||||||
async function shouldIncludePowerRole(db: Database) {
|
async function shouldIncludePowerRole(db: Database) {
|
||||||
const app = await db.tryGet<App>(DocumentType.APP_METADATA)
|
const app = await db.tryGet<App>(DocumentType.APP_METADATA)
|
||||||
const creationVersion = app?.creationVersion
|
const creationVersion = app?.creationVersion
|
||||||
if (!creationVersion) {
|
if (!creationVersion || !semver.valid(creationVersion)) {
|
||||||
// Old apps don't have creationVersion, so we should include it for backward compatibility
|
// Old apps don't have creationVersion, so we should include it for backward compatibility
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { structures, TestConfiguration } from "../../../../tests"
|
import { structures, TestConfiguration } from "../../../../tests"
|
||||||
import { context, db, permissions, roles } from "@budibase/backend-core"
|
import { context, db, permissions, roles } from "@budibase/backend-core"
|
||||||
import { Database } from "@budibase/types"
|
import { App, Database } from "@budibase/types"
|
||||||
|
|
||||||
jest.mock("@budibase/backend-core", () => {
|
jest.mock("@budibase/backend-core", () => {
|
||||||
const core = jest.requireActual("@budibase/backend-core")
|
const core = jest.requireActual("@budibase/backend-core")
|
||||||
|
@ -30,6 +30,14 @@ async function addAppMetadata() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function updateAppMetadata(update: Partial<Omit<App, "_id" | "_rev">>) {
|
||||||
|
const app = await appDb.get("app_metadata")
|
||||||
|
await appDb.put({
|
||||||
|
...app,
|
||||||
|
...update,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
describe("/api/global/roles", () => {
|
describe("/api/global/roles", () => {
|
||||||
const config = new TestConfiguration()
|
const config = new TestConfiguration()
|
||||||
|
|
||||||
|
@ -69,6 +77,53 @@ describe("/api/global/roles", () => {
|
||||||
expect(res.body[appId].roles.length).toEqual(5)
|
expect(res.body[appId].roles.length).toEqual(5)
|
||||||
expect(res.body[appId].roles.map((r: any) => r._id)).toContain(ROLE_NAME)
|
expect(res.body[appId].roles.map((r: any) => r._id)).toContain(ROLE_NAME)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it.each(["3.0.0", "3.0.1", "3.1.0"])(
|
||||||
|
"exclude POWER roles after v3 (%s)",
|
||||||
|
async creationVersion => {
|
||||||
|
await updateAppMetadata({ creationVersion })
|
||||||
|
const res = await config.api.roles.get()
|
||||||
|
expect(res.body).toBeDefined()
|
||||||
|
expect(res.body[appId].roles.map((r: any) => r._id)).toEqual([
|
||||||
|
ROLE_NAME,
|
||||||
|
roles.BUILTIN_ROLE_IDS.ADMIN,
|
||||||
|
roles.BUILTIN_ROLE_IDS.BASIC,
|
||||||
|
roles.BUILTIN_ROLE_IDS.PUBLIC,
|
||||||
|
])
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
it.each(["2.9.0", "1.0.0"])(
|
||||||
|
"include POWER roles before v3 (%s)",
|
||||||
|
async creationVersion => {
|
||||||
|
await updateAppMetadata({ creationVersion })
|
||||||
|
const res = await config.api.roles.get()
|
||||||
|
expect(res.body).toBeDefined()
|
||||||
|
expect(res.body[appId].roles.map((r: any) => r._id)).toEqual([
|
||||||
|
ROLE_NAME,
|
||||||
|
roles.BUILTIN_ROLE_IDS.ADMIN,
|
||||||
|
roles.BUILTIN_ROLE_IDS.POWER,
|
||||||
|
roles.BUILTIN_ROLE_IDS.BASIC,
|
||||||
|
roles.BUILTIN_ROLE_IDS.PUBLIC,
|
||||||
|
])
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
it.each(["invalid", ""])(
|
||||||
|
"include POWER roles when the version is corrupted (%s)",
|
||||||
|
async creationVersion => {
|
||||||
|
await updateAppMetadata({ creationVersion })
|
||||||
|
const res = await config.api.roles.get()
|
||||||
|
|
||||||
|
expect(res.body[appId].roles.map((r: any) => r._id)).toEqual([
|
||||||
|
ROLE_NAME,
|
||||||
|
roles.BUILTIN_ROLE_IDS.ADMIN,
|
||||||
|
roles.BUILTIN_ROLE_IDS.POWER,
|
||||||
|
roles.BUILTIN_ROLE_IDS.BASIC,
|
||||||
|
roles.BUILTIN_ROLE_IDS.PUBLIC,
|
||||||
|
])
|
||||||
|
}
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("GET api/global/roles/:appId", () => {
|
describe("GET api/global/roles/:appId", () => {
|
||||||
|
|
Loading…
Reference in New Issue