1
0
Fork 0
mirror of synced 2024-07-01 20:41:03 +12:00
budibase/packages/server/src/api/routes/tests/role.spec.js

113 lines
3.1 KiB
JavaScript
Raw Normal View History

const {
2020-05-22 01:31:23 +12:00
createApplication,
supertest,
defaultHeaders,
2020-05-22 01:31:23 +12:00
} = require("./couchTestUtils")
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
2020-05-22 01:31:23 +12:00
const {
BUILTIN_PERMISSION_IDS,
} = require("../../../utilities/security/permissions")
const roleBody = {
name: "NewRole",
inherits: BUILTIN_ROLE_IDS.BASIC,
permissionId: BUILTIN_PERMISSION_IDS.READ_ONLY,
}
2020-05-22 01:31:23 +12:00
describe("/roles", () => {
2020-05-22 01:31:23 +12:00
let server
let request
let appId
2020-05-22 01:31:23 +12:00
beforeAll(async () => {
;({ request, server } = await supertest())
})
2020-05-22 01:31:23 +12:00
2020-10-29 11:37:58 +13:00
afterAll(() => {
server.close()
2020-05-22 01:31:23 +12:00
})
beforeEach(async () => {
let app = await createApplication(request)
appId = app.instance._id
2020-05-22 01:31:23 +12:00
})
describe("create", () => {
it("returns a success message when role is successfully created", async () => {
2020-05-22 01:31:23 +12:00
const res = await request
.post(`/api/roles`)
.send(roleBody)
.set(defaultHeaders(appId))
.expect("Content-Type", /json/)
2020-05-22 01:31:23 +12:00
.expect(200)
expect(res.res.statusMessage).toEqual(
"Role 'NewRole' created successfully."
)
2020-05-22 01:31:23 +12:00
expect(res.body._id).toBeDefined()
expect(res.body._rev).toBeDefined()
})
})
2020-05-22 01:31:23 +12:00
describe("fetch", () => {
it("should list custom roles, plus 2 default roles", async () => {
2020-05-22 01:31:23 +12:00
const createRes = await request
.post(`/api/roles`)
.send(roleBody)
.set(defaultHeaders(appId))
.expect("Content-Type", /json/)
2020-05-22 01:31:23 +12:00
.expect(200)
const customRole = createRes.body
2020-05-22 01:31:23 +12:00
const res = await request
.get(`/api/roles`)
.set(defaultHeaders(appId))
.expect("Content-Type", /json/)
2020-05-22 01:31:23 +12:00
.expect(200)
expect(res.body.length).toBe(5)
2020-05-22 01:31:23 +12:00
const adminRole = res.body.find(r => r._id === BUILTIN_ROLE_IDS.ADMIN)
expect(adminRole).toBeDefined()
expect(adminRole.inherits).toEqual(BUILTIN_ROLE_IDS.POWER)
expect(adminRole.permissionId).toEqual(BUILTIN_PERMISSION_IDS.ADMIN)
2020-05-22 01:31:23 +12:00
const powerUserRole = res.body.find(r => r._id === BUILTIN_ROLE_IDS.POWER)
expect(powerUserRole).toBeDefined()
expect(powerUserRole.inherits).toEqual(BUILTIN_ROLE_IDS.BASIC)
expect(powerUserRole.permissionId).toEqual(BUILTIN_PERMISSION_IDS.POWER)
2020-05-22 01:31:23 +12:00
const customRoleFetched = res.body.find(r => r._id === customRole._id)
expect(customRoleFetched).toBeDefined()
expect(customRoleFetched.inherits).toEqual(BUILTIN_ROLE_IDS.BASIC)
expect(customRoleFetched.permissionId).toEqual(
BUILTIN_PERMISSION_IDS.READ_ONLY
)
2020-05-22 01:31:23 +12:00
})
})
2020-05-22 01:31:23 +12:00
describe("destroy", () => {
it("should delete custom roles", async () => {
2020-05-22 01:31:23 +12:00
const createRes = await request
.post(`/api/roles`)
.send({ name: "user", permissionId: BUILTIN_PERMISSION_IDS.READ_ONLY })
.set(defaultHeaders(appId))
.expect("Content-Type", /json/)
2020-05-22 01:31:23 +12:00
.expect(200)
const customRole = createRes.body
2020-05-22 01:31:23 +12:00
await request
.delete(`/api/roles/${customRole._id}/${customRole._rev}`)
.set(defaultHeaders(appId))
2020-05-22 01:31:23 +12:00
.expect(200)
await request
.get(`/api/roles/${customRole._id}`)
.set(defaultHeaders(appId))
.expect(404)
2020-05-22 01:31:23 +12:00
})
})
})