|
|
|
@ -2,6 +2,15 @@ const { BUILTIN_ROLE_IDS } = require("../../../utilities/security/roles") |
|
|
|
const { checkPermissionsEndpoint } = require("./utilities/TestFunctions") |
|
|
|
const setup = require("./utilities") |
|
|
|
const { basicUser } = setup.structures |
|
|
|
const workerRequests = require("../../../utilities/workerRequests") |
|
|
|
|
|
|
|
jest.mock("../../../utilities/workerRequests", () => ({ |
|
|
|
getGlobalUsers: jest.fn(), |
|
|
|
saveGlobalUser: jest.fn(() => { |
|
|
|
return {} |
|
|
|
}), |
|
|
|
deleteGlobalUser: jest.fn(), |
|
|
|
})) |
|
|
|
|
|
|
|
describe("/users", () => { |
|
|
|
let request = setup.getRequest() |
|
|
|
@ -14,11 +23,23 @@ describe("/users", () => { |
|
|
|
}) |
|
|
|
|
|
|
|
describe("fetch", () => { |
|
|
|
beforeEach(() => { |
|
|
|
workerRequests.getGlobalUsers.mockImplementationOnce(() => ([ |
|
|
|
{ |
|
|
|
email: "brenda@brenda.com" |
|
|
|
}, |
|
|
|
{ |
|
|
|
email: "pam@pam.com" |
|
|
|
} |
|
|
|
] |
|
|
|
)) |
|
|
|
}) |
|
|
|
|
|
|
|
it("returns a list of users from an instance db", async () => { |
|
|
|
await config.createUser("brenda@brenda.com", "brendas_password") |
|
|
|
await config.createUser("pam@pam.com", "pam_password") |
|
|
|
const res = await request |
|
|
|
.get(`/api/users`) |
|
|
|
.get(`/api/users/metadata`) |
|
|
|
.set(config.defaultHeaders()) |
|
|
|
.expect("Content-Type", /json/) |
|
|
|
.expect(200) |
|
|
|
@ -34,7 +55,7 @@ describe("/users", () => { |
|
|
|
config, |
|
|
|
request, |
|
|
|
method: "GET", |
|
|
|
url: `/api/users`, |
|
|
|
url: `/api/users/metadata`, |
|
|
|
passRole: BUILTIN_ROLE_IDS.ADMIN, |
|
|
|
failRole: BUILTIN_ROLE_IDS.PUBLIC, |
|
|
|
}) |
|
|
|
@ -42,9 +63,21 @@ describe("/users", () => { |
|
|
|
}) |
|
|
|
|
|
|
|
describe("create", () => { |
|
|
|
beforeEach(() => { |
|
|
|
workerRequests.getGlobalUsers.mockImplementationOnce(() => ([ |
|
|
|
{ |
|
|
|
email: "bill@budibase.com" |
|
|
|
}, |
|
|
|
{ |
|
|
|
email: "brandNewUser@user.com" |
|
|
|
} |
|
|
|
] |
|
|
|
)) |
|
|
|
}) |
|
|
|
|
|
|
|
async function create(user, status = 200) { |
|
|
|
return request |
|
|
|
.post(`/api/users`) |
|
|
|
.post(`/api/users/metadata`) |
|
|
|
.set(config.defaultHeaders()) |
|
|
|
.send(user) |
|
|
|
.expect(status) |
|
|
|
@ -56,8 +89,8 @@ describe("/users", () => { |
|
|
|
body.email = "bill@budibase.com" |
|
|
|
const res = await create(body) |
|
|
|
|
|
|
|
expect(res.res.statusMessage).toEqual("User created successfully.") |
|
|
|
expect(res.body._id).toBeUndefined() |
|
|
|
expect(res.res.statusMessage).toEqual("OK") |
|
|
|
expect(res.body._id).toBeDefined() |
|
|
|
}) |
|
|
|
|
|
|
|
it("should apply authorization to endpoint", async () => { |
|
|
|
@ -67,7 +100,7 @@ describe("/users", () => { |
|
|
|
config, |
|
|
|
method: "POST", |
|
|
|
body, |
|
|
|
url: `/api/users`, |
|
|
|
url: `/api/users/metadata`, |
|
|
|
passRole: BUILTIN_ROLE_IDS.ADMIN, |
|
|
|
failRole: BUILTIN_ROLE_IDS.PUBLIC, |
|
|
|
}) |
|
|
|
@ -88,16 +121,22 @@ describe("/users", () => { |
|
|
|
await config.createUser("test@test.com") |
|
|
|
const user = basicUser(BUILTIN_ROLE_IDS.POWER) |
|
|
|
user.email = "test@test.com" |
|
|
|
await create(user, 400) |
|
|
|
await create(user, 409) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
describe("update", () => { |
|
|
|
beforeEach(() => { |
|
|
|
workerRequests.saveGlobalUser.mockImplementationOnce(() => ({ |
|
|
|
_id: "us_test@test.com" |
|
|
|
})) |
|
|
|
}) |
|
|
|
|
|
|
|
it("should be able to update the user", async () => { |
|
|
|
const user = await config.createUser() |
|
|
|
user.roleId = BUILTIN_ROLE_IDS.BASIC |
|
|
|
const res = await request |
|
|
|
.put(`/api/users`) |
|
|
|
.put(`/api/users/metadata`) |
|
|
|
.set(config.defaultHeaders()) |
|
|
|
.send(user) |
|
|
|
.expect(200) |
|
|
|
@ -111,20 +150,29 @@ describe("/users", () => { |
|
|
|
const email = "test@test.com" |
|
|
|
await config.createUser(email) |
|
|
|
const res = await request |
|
|
|
.delete(`/api/users/${email}`) |
|
|
|
.delete(`/api/users/metadata/${email}`) |
|
|
|
.set(config.defaultHeaders()) |
|
|
|
.expect(200) |
|
|
|
.expect("Content-Type", /json/) |
|
|
|
expect(res.body.message).toBeDefined() |
|
|
|
expect(workerRequests.deleteGlobalUser).toHaveBeenCalled() |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
describe("find", () => { |
|
|
|
beforeEach(() => { |
|
|
|
jest.resetAllMocks() |
|
|
|
workerRequests.getGlobalUsers.mockImplementationOnce(() => ({ |
|
|
|
email: "test@test.com", |
|
|
|
roleId: BUILTIN_ROLE_IDS.POWER, |
|
|
|
})) |
|
|
|
}) |
|
|
|
|
|
|
|
it("should be able to find the user", async () => { |
|
|
|
const email = "test@test.com" |
|
|
|
await config.createUser(email) |
|
|
|
const res = await request |
|
|
|
.get(`/api/users/${email}`) |
|
|
|
.get(`/api/users/metadata/${email}`) |
|
|
|
.set(config.defaultHeaders()) |
|
|
|
.expect(200) |
|
|
|
.expect("Content-Type", /json/) |
|
|
|
|