forked from tsai/budibase
22 changed files with 353 additions and 34 deletions
@ -1,7 +1,16 @@ |
|||
function isTest() { |
|||
return ( |
|||
process.env.NODE_ENV === "jest" || |
|||
process.env.NODE_ENV === "cypress" || |
|||
process.env.JEST_WORKER_ID != null |
|||
) |
|||
} |
|||
|
|||
module.exports = { |
|||
JWT_SECRET: process.env.JWT_SECRET, |
|||
COUCH_DB_URL: process.env.COUCH_DB_URL, |
|||
SALT_ROUNDS: process.env.SALT_ROUNDS, |
|||
REDIS_URL: process.env.REDIS_URL, |
|||
REDIS_PASSWORD: process.env.REDIS_PASSWORD, |
|||
isTest, |
|||
} |
|||
|
|||
@ -0,0 +1,5 @@ |
|||
const env = require("../src/environment") |
|||
|
|||
env._set("NODE_ENV", "jest") |
|||
env._set("JWT_SECRET", "test-jwtsecret") |
|||
env._set("LOG_LEVEL", "silent") |
|||
@ -0,0 +1,49 @@ |
|||
const setup = require("./utilities") |
|||
|
|||
jest.mock("nodemailer") |
|||
const sendMailMock = setup.emailMock() |
|||
|
|||
describe("/api/admin/auth", () => { |
|||
let request = setup.getRequest() |
|||
let config = setup.getConfig() |
|||
let code |
|||
|
|||
beforeAll(async () => { |
|||
await config.init() |
|||
}) |
|||
|
|||
afterAll(setup.afterAll) |
|||
|
|||
it("should be able to generate password reset email", async () => { |
|||
// initially configure settings
|
|||
await config.saveSmtpConfig() |
|||
await config.saveSettingsConfig() |
|||
await config.createUser("test@test.com") |
|||
const res = await request |
|||
.post(`/api/admin/auth/reset`) |
|||
.send({ |
|||
email: "test@test.com", |
|||
}) |
|||
.expect("Content-Type", /json/) |
|||
.expect(200) |
|||
expect(res.body).toEqual({ message: "Please check your email for a reset link." }) |
|||
expect(sendMailMock).toHaveBeenCalled() |
|||
const emailCall = sendMailMock.mock.calls[0][0] |
|||
// after this URL there should be a code
|
|||
const parts = emailCall.html.split("http://localhost:10000/reset/") |
|||
code = parts[1].split("\"")[0] |
|||
expect(code).toBeDefined() |
|||
}) |
|||
|
|||
it("should allow resetting user password with code", async () => { |
|||
const res = await request |
|||
.post(`/api/admin/auth/reset/update`) |
|||
.send({ |
|||
password: "newpassword", |
|||
resetCode: code, |
|||
}) |
|||
.expect("Content-Type", /json/) |
|||
.expect(200) |
|||
expect(res.body).toEqual({ message: "password reset successfully." }) |
|||
}) |
|||
}) |
|||
@ -0,0 +1,52 @@ |
|||
const setup = require("./utilities") |
|||
|
|||
jest.mock("nodemailer") |
|||
const sendMailMock = setup.emailMock() |
|||
|
|||
describe("/api/admin/users", () => { |
|||
let request = setup.getRequest() |
|||
let config = setup.getConfig() |
|||
let code |
|||
|
|||
beforeAll(async () => { |
|||
await config.init() |
|||
}) |
|||
|
|||
afterAll(setup.afterAll) |
|||
|
|||
it("should be able to generate an invitation", async () => { |
|||
// initially configure settings
|
|||
await config.saveSmtpConfig() |
|||
await config.saveSettingsConfig() |
|||
const res = await request |
|||
.post(`/api/admin/users/invite`) |
|||
.send({ |
|||
email: "invite@test.com", |
|||
}) |
|||
.set(config.defaultHeaders()) |
|||
.expect("Content-Type", /json/) |
|||
.expect(200) |
|||
expect(res.body).toEqual({ message: "Invitation has been sent." }) |
|||
expect(sendMailMock).toHaveBeenCalled() |
|||
const emailCall = sendMailMock.mock.calls[0][0] |
|||
// after this URL there should be a code
|
|||
const parts = emailCall.html.split("http://localhost:10000/invite/") |
|||
code = parts[1].split("\"")[0] |
|||
expect(code).toBeDefined() |
|||
}) |
|||
|
|||
it("should be able to create new user from invite", async () => { |
|||
const res = await request |
|||
.post(`/api/admin/users/invite/accept`) |
|||
.send({ |
|||
password: "newpassword", |
|||
inviteCode: code, |
|||
}) |
|||
.expect("Content-Type", /json/) |
|||
.expect(200) |
|||
expect(res.body._id).toBeDefined() |
|||
const user = await config.getUser("invite@test.com") |
|||
expect(user).toBeDefined() |
|||
expect(user._id).toEqual(res.body._id) |
|||
}) |
|||
}) |
|||
Loading…
Reference in new issue