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")
|
2021-03-05 01:32:31 +13:00
|
|
|
const { basicRole } = require("./utilities/structures")
|
|
|
|
const TestConfig = require("./utilities/TestConfiguration")
|
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 request
|
2021-03-05 01:32:31 +13:00
|
|
|
let config
|
2020-05-22 01:31:23 +12:00
|
|
|
|
|
|
|
beforeAll(async () => {
|
2021-03-05 01:32:31 +13:00
|
|
|
config = new TestConfig()
|
|
|
|
request = config.request
|
2020-12-09 00:43:37 +13:00
|
|
|
})
|
2020-05-22 01:31:23 +12:00
|
|
|
|
2020-10-29 11:37:58 +13:00
|
|
|
afterAll(() => {
|
2021-03-05 01:32:31 +13:00
|
|
|
config.close()
|
2020-05-22 01:31:23 +12:00
|
|
|
})
|
|
|
|
|
|
|
|
beforeEach(async () => {
|
2021-03-05 01:32:31 +13:00
|
|
|
await config.init()
|
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`)
|
2021-03-05 01:32:31 +13:00
|
|
|
.send(basicRole())
|
|
|
|
.set(config.defaultHeaders())
|
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`)
|
2021-03-05 01:32:31 +13:00
|
|
|
.send(basicRole())
|
|
|
|
.set(config.defaultHeaders())
|
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`)
|
2021-03-05 01:32:31 +13:00
|
|
|
.set(config.defaultHeaders())
|
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 })
|
2021-03-05 01:32:31 +13:00
|
|
|
.set(config.defaultHeaders())
|
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}`)
|
2021-03-05 01:32:31 +13:00
|
|
|
.set(config.defaultHeaders())
|
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}`)
|
2021-03-05 01:32:31 +13:00
|
|
|
.set(config.defaultHeaders())
|
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
|
|
|
})
|