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 = { |
module.exports = { |
||||
JWT_SECRET: process.env.JWT_SECRET, |
JWT_SECRET: process.env.JWT_SECRET, |
||||
COUCH_DB_URL: process.env.COUCH_DB_URL, |
COUCH_DB_URL: process.env.COUCH_DB_URL, |
||||
SALT_ROUNDS: process.env.SALT_ROUNDS, |
SALT_ROUNDS: process.env.SALT_ROUNDS, |
||||
REDIS_URL: process.env.REDIS_URL, |
REDIS_URL: process.env.REDIS_URL, |
||||
REDIS_PASSWORD: process.env.REDIS_PASSWORD, |
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