2020-12-09 00:43:37 +13:00
|
|
|
const {
|
2020-05-22 01:31:23 +12:00
|
|
|
createApplication,
|
|
|
|
supertest,
|
2020-12-09 00:43:37 +13:00
|
|
|
defaultHeaders,
|
2020-05-22 01:31:23 +12:00
|
|
|
} = require("./couchTestUtils")
|
2020-12-09 00:43:37 +13:00
|
|
|
const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles")
|
2020-05-22 01:31:23 +12:00
|
|
|
const {
|
2020-12-09 00:43:37 +13:00
|
|
|
BUILTIN_PERMISSION_IDS,
|
|
|
|
} = require("../../../utilities/security/permissions")
|
2020-11-14 04:35:20 +13:00
|
|
|
|
2020-12-09 00:43:37 +13:00
|
|
|
const roleBody = {
|
|
|
|
name: "NewRole",
|
|
|
|
inherits: BUILTIN_ROLE_IDS.BASIC,
|
|
|
|
permissionId: BUILTIN_PERMISSION_IDS.READ_ONLY,
|
|
|
|
}
|
2020-05-22 01:31:23 +12:00
|
|
|
|
2020-12-03 02:20:56 +13:00
|
|
|
describe("/roles", () => {
|
2020-05-22 01:31:23 +12:00
|
|
|
let server
|
|
|
|
let request
|
2020-10-29 23:28:27 +13:00
|
|
|
let appId
|
2020-05-22 01:31:23 +12:00
|
|
|
|
|
|
|
beforeAll(async () => {
|
2020-12-09 00:43:37 +13:00
|
|
|
;({ 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 () => {
|
2020-10-29 09:35:06 +13:00
|
|
|
let app = await createApplication(request)
|
2020-10-29 23:28:27 +13:00
|
|
|
appId = app.instance._id
|
2020-05-22 01:31:23 +12:00
|
|
|
})
|
|
|
|
|
|
|
|
describe("create", () => {
|
2020-12-03 02:20:56 +13:00
|
|
|
it("returns a success message when role is successfully created", async () => {
|
2020-05-22 01:31:23 +12:00
|
|
|
const res = await request
|
2020-12-03 02:20:56 +13:00
|
|
|
.post(`/api/roles`)
|
|
|
|
.send(roleBody)
|
2020-10-29 23:28:27 +13:00
|
|
|
.set(defaultHeaders(appId))
|
2020-12-09 00:43:37 +13:00
|
|
|
.expect("Content-Type", /json/)
|
2020-05-22 01:31:23 +12:00
|
|
|
.expect(200)
|
|
|
|
|
2020-12-09 00:43:37 +13:00
|
|
|
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-12-09 00:43:37 +13:00
|
|
|
})
|
2020-05-22 01:31:23 +12:00
|
|
|
|
|
|
|
describe("fetch", () => {
|
2020-12-03 02:20:56 +13:00
|
|
|
it("should list custom roles, plus 2 default roles", async () => {
|
2020-05-22 01:31:23 +12:00
|
|
|
const createRes = await request
|
2020-12-03 02:20:56 +13:00
|
|
|
.post(`/api/roles`)
|
|
|
|
.send(roleBody)
|
2020-10-29 23:28:27 +13:00
|
|
|
.set(defaultHeaders(appId))
|
2020-12-09 00:43:37 +13:00
|
|
|
.expect("Content-Type", /json/)
|
2020-05-22 01:31:23 +12:00
|
|
|
.expect(200)
|
|
|
|
|
2020-12-03 02:20:56 +13:00
|
|
|
const customRole = createRes.body
|
2020-05-22 01:31:23 +12:00
|
|
|
|
|
|
|
const res = await request
|
2020-12-03 02:20:56 +13:00
|
|
|
.get(`/api/roles`)
|
2020-10-29 23:28:27 +13:00
|
|
|
.set(defaultHeaders(appId))
|
2020-12-09 00:43:37 +13:00
|
|
|
.expect("Content-Type", /json/)
|
2020-05-22 01:31:23 +12:00
|
|
|
.expect(200)
|
|
|
|
|
2020-12-09 00:43:37 +13:00
|
|
|
expect(res.body.length).toBe(5)
|
2020-05-22 01:31:23 +12:00
|
|
|
|
2020-12-03 02:20:56 +13:00
|
|
|
const adminRole = res.body.find(r => r._id === BUILTIN_ROLE_IDS.ADMIN)
|
|
|
|
expect(adminRole).toBeDefined()
|
2020-12-03 06:08:25 +13:00
|
|
|
expect(adminRole.inherits).toEqual(BUILTIN_ROLE_IDS.POWER)
|
|
|
|
expect(adminRole.permissionId).toEqual(BUILTIN_PERMISSION_IDS.ADMIN)
|
2020-05-22 01:31:23 +12:00
|
|
|
|
2020-12-03 02:20:56 +13:00
|
|
|
const powerUserRole = res.body.find(r => r._id === BUILTIN_ROLE_IDS.POWER)
|
|
|
|
expect(powerUserRole).toBeDefined()
|
2020-12-03 06:08:25 +13:00
|
|
|
expect(powerUserRole.inherits).toEqual(BUILTIN_ROLE_IDS.BASIC)
|
|
|
|
expect(powerUserRole.permissionId).toEqual(BUILTIN_PERMISSION_IDS.POWER)
|
2020-05-22 01:31:23 +12:00
|
|
|
|
2020-12-03 02:20:56 +13:00
|
|
|
const customRoleFetched = res.body.find(r => r._id === customRole._id)
|
|
|
|
expect(customRoleFetched).toBeDefined()
|
2020-12-03 06:08:25 +13:00
|
|
|
expect(customRoleFetched.inherits).toEqual(BUILTIN_ROLE_IDS.BASIC)
|
2020-12-09 00:43:37 +13:00
|
|
|
expect(customRoleFetched.permissionId).toEqual(
|
|
|
|
BUILTIN_PERMISSION_IDS.READ_ONLY
|
|
|
|
)
|
2020-05-22 01:31:23 +12:00
|
|
|
})
|
2020-12-09 00:43:37 +13:00
|
|
|
})
|
2020-05-22 01:31:23 +12:00
|
|
|
|
|
|
|
describe("destroy", () => {
|
2020-12-03 02:20:56 +13:00
|
|
|
it("should delete custom roles", async () => {
|
2020-05-22 01:31:23 +12:00
|
|
|
const createRes = await request
|
2020-12-03 02:20:56 +13:00
|
|
|
.post(`/api/roles`)
|
2020-12-03 06:08:25 +13:00
|
|
|
.send({ name: "user", permissionId: BUILTIN_PERMISSION_IDS.READ_ONLY })
|
2020-10-29 23:28:27 +13:00
|
|
|
.set(defaultHeaders(appId))
|
2020-12-09 00:43:37 +13:00
|
|
|
.expect("Content-Type", /json/)
|
2020-05-22 01:31:23 +12:00
|
|
|
.expect(200)
|
|
|
|
|
2020-12-03 02:20:56 +13:00
|
|
|
const customRole = createRes.body
|
2020-05-22 01:31:23 +12:00
|
|
|
|
|
|
|
await request
|
2020-12-03 02:20:56 +13:00
|
|
|
.delete(`/api/roles/${customRole._id}/${customRole._rev}`)
|
2020-10-29 23:28:27 +13:00
|
|
|
.set(defaultHeaders(appId))
|
2020-05-22 01:31:23 +12:00
|
|
|
.expect(200)
|
|
|
|
|
|
|
|
await request
|
2020-12-03 02:20:56 +13:00
|
|
|
.get(`/api/roles/${customRole._id}`)
|
2020-10-29 23:28:27 +13:00
|
|
|
.set(defaultHeaders(appId))
|
2020-09-15 01:32:20 +12:00
|
|
|
.expect(404)
|
2020-05-22 01:31:23 +12:00
|
|
|
})
|
|
|
|
})
|
2020-12-09 00:43:37 +13:00
|
|
|
})
|