276 lines
9.5 KiB
TypeScript
276 lines
9.5 KiB
TypeScript
// mock the email system
|
|
jest.mock("nodemailer")
|
|
import { TestConfiguration, structures, mocks } from "../../../../tests"
|
|
mocks.email.mock()
|
|
import { Configs, events } from "@budibase/backend-core"
|
|
|
|
describe("configs", () => {
|
|
const config = new TestConfiguration()
|
|
|
|
beforeAll(async () => {
|
|
await config.beforeAll()
|
|
})
|
|
|
|
beforeEach(() => {
|
|
jest.clearAllMocks()
|
|
})
|
|
|
|
afterAll(async () => {
|
|
await config.afterAll()
|
|
})
|
|
|
|
describe("post /api/global/configs", () => {
|
|
const saveConfig = async (conf: any, _id?: string, _rev?: string) => {
|
|
const data = {
|
|
...conf,
|
|
_id,
|
|
_rev,
|
|
}
|
|
|
|
const res = await config.api.configs.saveConfig(data)
|
|
|
|
return {
|
|
...data,
|
|
...res.body,
|
|
}
|
|
}
|
|
|
|
describe("google", () => {
|
|
const saveGoogleConfig = async (
|
|
conf?: any,
|
|
_id?: string,
|
|
_rev?: string
|
|
) => {
|
|
const googleConfig = structures.configs.google(conf)
|
|
return saveConfig(googleConfig, _id, _rev)
|
|
}
|
|
|
|
describe("create", () => {
|
|
it("should create activated google config", async () => {
|
|
await saveGoogleConfig()
|
|
expect(events.auth.SSOCreated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOCreated).toBeCalledWith(Configs.GOOGLE)
|
|
expect(events.auth.SSODeactivated).not.toBeCalled()
|
|
expect(events.auth.SSOActivated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOActivated).toBeCalledWith(Configs.GOOGLE)
|
|
await config.deleteConfig(Configs.GOOGLE)
|
|
})
|
|
|
|
it("should create deactivated google config", async () => {
|
|
await saveGoogleConfig({ activated: false })
|
|
expect(events.auth.SSOCreated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOCreated).toBeCalledWith(Configs.GOOGLE)
|
|
expect(events.auth.SSOActivated).not.toBeCalled()
|
|
expect(events.auth.SSODeactivated).not.toBeCalled()
|
|
await config.deleteConfig(Configs.GOOGLE)
|
|
})
|
|
})
|
|
|
|
describe("update", () => {
|
|
it("should update google config to deactivated", async () => {
|
|
const googleConf = await saveGoogleConfig()
|
|
jest.clearAllMocks()
|
|
await saveGoogleConfig(
|
|
{ ...googleConf.config, activated: false },
|
|
googleConf._id,
|
|
googleConf._rev
|
|
)
|
|
expect(events.auth.SSOUpdated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOUpdated).toBeCalledWith(Configs.GOOGLE)
|
|
expect(events.auth.SSOActivated).not.toBeCalled()
|
|
expect(events.auth.SSODeactivated).toBeCalledTimes(1)
|
|
expect(events.auth.SSODeactivated).toBeCalledWith(Configs.GOOGLE)
|
|
await config.deleteConfig(Configs.GOOGLE)
|
|
})
|
|
|
|
it("should update google config to activated", async () => {
|
|
const googleConf = await saveGoogleConfig({ activated: false })
|
|
jest.clearAllMocks()
|
|
await saveGoogleConfig(
|
|
{ ...googleConf.config, activated: true },
|
|
googleConf._id,
|
|
googleConf._rev
|
|
)
|
|
expect(events.auth.SSOUpdated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOUpdated).toBeCalledWith(Configs.GOOGLE)
|
|
expect(events.auth.SSODeactivated).not.toBeCalled()
|
|
expect(events.auth.SSOActivated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOActivated).toBeCalledWith(Configs.GOOGLE)
|
|
await config.deleteConfig(Configs.GOOGLE)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe("oidc", () => {
|
|
const saveOIDCConfig = async (
|
|
conf?: any,
|
|
_id?: string,
|
|
_rev?: string
|
|
) => {
|
|
const oidcConfig = structures.configs.oidc(conf)
|
|
return saveConfig(oidcConfig, _id, _rev)
|
|
}
|
|
|
|
describe("create", () => {
|
|
it("should create activated OIDC config", async () => {
|
|
await saveOIDCConfig()
|
|
expect(events.auth.SSOCreated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOCreated).toBeCalledWith(Configs.OIDC)
|
|
expect(events.auth.SSODeactivated).not.toBeCalled()
|
|
expect(events.auth.SSOActivated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOActivated).toBeCalledWith(Configs.OIDC)
|
|
await config.deleteConfig(Configs.OIDC)
|
|
})
|
|
|
|
it("should create deactivated OIDC config", async () => {
|
|
await saveOIDCConfig({ activated: false })
|
|
expect(events.auth.SSOCreated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOCreated).toBeCalledWith(Configs.OIDC)
|
|
expect(events.auth.SSOActivated).not.toBeCalled()
|
|
expect(events.auth.SSODeactivated).not.toBeCalled()
|
|
await config.deleteConfig(Configs.OIDC)
|
|
})
|
|
})
|
|
|
|
describe("update", () => {
|
|
it("should update OIDC config to deactivated", async () => {
|
|
const oidcConf = await saveOIDCConfig()
|
|
jest.clearAllMocks()
|
|
await saveOIDCConfig(
|
|
{ ...oidcConf.config.configs[0], activated: false },
|
|
oidcConf._id,
|
|
oidcConf._rev
|
|
)
|
|
expect(events.auth.SSOUpdated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOUpdated).toBeCalledWith(Configs.OIDC)
|
|
expect(events.auth.SSOActivated).not.toBeCalled()
|
|
expect(events.auth.SSODeactivated).toBeCalledTimes(1)
|
|
expect(events.auth.SSODeactivated).toBeCalledWith(Configs.OIDC)
|
|
await config.deleteConfig(Configs.OIDC)
|
|
})
|
|
|
|
it("should update OIDC config to activated", async () => {
|
|
const oidcConf = await saveOIDCConfig({ activated: false })
|
|
jest.clearAllMocks()
|
|
await saveOIDCConfig(
|
|
{ ...oidcConf.config.configs[0], activated: true },
|
|
oidcConf._id,
|
|
oidcConf._rev
|
|
)
|
|
expect(events.auth.SSOUpdated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOUpdated).toBeCalledWith(Configs.OIDC)
|
|
expect(events.auth.SSODeactivated).not.toBeCalled()
|
|
expect(events.auth.SSOActivated).toBeCalledTimes(1)
|
|
expect(events.auth.SSOActivated).toBeCalledWith(Configs.OIDC)
|
|
await config.deleteConfig(Configs.OIDC)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe("smtp", () => {
|
|
const saveSMTPConfig = async (
|
|
conf?: any,
|
|
_id?: string,
|
|
_rev?: string
|
|
) => {
|
|
const smtpConfig = structures.configs.smtp(conf)
|
|
return saveConfig(smtpConfig, _id, _rev)
|
|
}
|
|
|
|
describe("create", () => {
|
|
it("should create SMTP config", async () => {
|
|
await config.deleteConfig(Configs.SMTP)
|
|
await saveSMTPConfig()
|
|
expect(events.email.SMTPUpdated).not.toBeCalled()
|
|
expect(events.email.SMTPCreated).toBeCalledTimes(1)
|
|
await config.deleteConfig(Configs.SMTP)
|
|
})
|
|
})
|
|
|
|
describe("update", () => {
|
|
it("should update SMTP config", async () => {
|
|
const smtpConf = await saveSMTPConfig()
|
|
jest.clearAllMocks()
|
|
await saveSMTPConfig(smtpConf.config, smtpConf._id, smtpConf._rev)
|
|
expect(events.email.SMTPCreated).not.toBeCalled()
|
|
expect(events.email.SMTPUpdated).toBeCalledTimes(1)
|
|
await config.deleteConfig(Configs.SMTP)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe("settings", () => {
|
|
const saveSettingsConfig = async (
|
|
conf?: any,
|
|
_id?: string,
|
|
_rev?: string
|
|
) => {
|
|
const settingsConfig = structures.configs.settings(conf)
|
|
return saveConfig(settingsConfig, _id, _rev)
|
|
}
|
|
|
|
describe("create", () => {
|
|
it("should create settings config with default settings", async () => {
|
|
await config.deleteConfig(Configs.SETTINGS)
|
|
|
|
await saveSettingsConfig()
|
|
|
|
expect(events.org.nameUpdated).not.toBeCalled()
|
|
expect(events.org.logoUpdated).not.toBeCalled()
|
|
expect(events.org.platformURLUpdated).not.toBeCalled()
|
|
})
|
|
|
|
it("should create settings config with non-default settings", async () => {
|
|
config.modeSelf()
|
|
await config.deleteConfig(Configs.SETTINGS)
|
|
const conf = {
|
|
company: "acme",
|
|
logoUrl: "http://example.com",
|
|
platformUrl: "http://example.com",
|
|
}
|
|
|
|
await saveSettingsConfig(conf)
|
|
|
|
expect(events.org.nameUpdated).toBeCalledTimes(1)
|
|
expect(events.org.logoUpdated).toBeCalledTimes(1)
|
|
expect(events.org.platformURLUpdated).toBeCalledTimes(1)
|
|
config.modeCloud()
|
|
})
|
|
})
|
|
|
|
describe("update", () => {
|
|
it("should update settings config", async () => {
|
|
config.modeSelf()
|
|
await config.deleteConfig(Configs.SETTINGS)
|
|
const settingsConfig = await saveSettingsConfig()
|
|
settingsConfig.config.company = "acme"
|
|
settingsConfig.config.logoUrl = "http://example.com"
|
|
settingsConfig.config.platformUrl = "http://example.com"
|
|
|
|
await saveSettingsConfig(
|
|
settingsConfig.config,
|
|
settingsConfig._id,
|
|
settingsConfig._rev
|
|
)
|
|
|
|
expect(events.org.nameUpdated).toBeCalledTimes(1)
|
|
expect(events.org.logoUpdated).toBeCalledTimes(1)
|
|
expect(events.org.platformURLUpdated).toBeCalledTimes(1)
|
|
config.modeCloud()
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
it("should return the correct checklist status based on the state of the budibase installation", async () => {
|
|
await config.saveSmtpConfig()
|
|
|
|
const res = await config.api.configs.getConfigChecklist()
|
|
const checklist = res.body
|
|
|
|
expect(checklist.apps.checked).toBeFalsy()
|
|
expect(checklist.smtp.checked).toBeTruthy()
|
|
expect(checklist.adminUser.checked).toBeTruthy()
|
|
})
|
|
})
|