195 lines
5.5 KiB
JavaScript
195 lines
5.5 KiB
JavaScript
require("../../../tests");
|
|
const {
|
|
generateAppID,
|
|
getDevelopmentAppID,
|
|
getProdAppID,
|
|
isDevAppID,
|
|
isProdAppID,
|
|
getPlatformUrl,
|
|
getScopedConfig
|
|
} = require("../utils")
|
|
const tenancy = require("../../tenancy");
|
|
const { Configs, DEFAULT_TENANT_ID } = require("../../constants");
|
|
const env = require("../../environment")
|
|
|
|
describe("utils", () => {
|
|
describe("app ID manipulation", () => {
|
|
|
|
function getID() {
|
|
const appId = generateAppID()
|
|
const split = appId.split("_")
|
|
const uuid = split[split.length - 1]
|
|
const devAppId = `app_dev_${uuid}`
|
|
return { appId, devAppId, split, uuid }
|
|
}
|
|
|
|
it("should be able to generate a new app ID", () => {
|
|
expect(generateAppID().startsWith("app_")).toEqual(true)
|
|
})
|
|
|
|
it("should be able to convert a production app ID to development", () => {
|
|
const { appId, uuid } = getID()
|
|
expect(getDevelopmentAppID(appId)).toEqual(`app_dev_${uuid}`)
|
|
})
|
|
|
|
it("should be able to convert a development app ID to development", () => {
|
|
const { devAppId, uuid } = getID()
|
|
expect(getDevelopmentAppID(devAppId)).toEqual(`app_dev_${uuid}`)
|
|
})
|
|
|
|
it("should be able to convert a development ID to a production", () => {
|
|
const { devAppId, uuid } = getID()
|
|
expect(getProdAppID(devAppId)).toEqual(`app_${uuid}`)
|
|
})
|
|
|
|
it("should be able to convert a production ID to production", () => {
|
|
const { appId, uuid } = getID()
|
|
expect(getProdAppID(appId)).toEqual(`app_${uuid}`)
|
|
})
|
|
|
|
it("should be able to confirm dev app ID is development", () => {
|
|
const { devAppId } = getID()
|
|
expect(isDevAppID(devAppId)).toEqual(true)
|
|
})
|
|
|
|
it("should be able to confirm prod app ID is not development", () => {
|
|
const { appId } = getID()
|
|
expect(isDevAppID(appId)).toEqual(false)
|
|
})
|
|
|
|
it("should be able to confirm prod app ID is prod", () => {
|
|
const { appId } = getID()
|
|
expect(isProdAppID(appId)).toEqual(true)
|
|
})
|
|
|
|
it("should be able to confirm dev app ID is not prod", () => {
|
|
const { devAppId } = getID()
|
|
expect(isProdAppID(devAppId)).toEqual(false)
|
|
})
|
|
})
|
|
})
|
|
|
|
const DB_URL = "http://dburl.com"
|
|
const DEFAULT_URL = "http://localhost:10000"
|
|
const ENV_URL = "http://env.com"
|
|
|
|
const setDbPlatformUrl = async () => {
|
|
const db = tenancy.getGlobalDB()
|
|
db.put({
|
|
_id: "config_settings",
|
|
type: Configs.SETTINGS,
|
|
config: {
|
|
platformUrl: DB_URL
|
|
}
|
|
})
|
|
}
|
|
|
|
const clearSettingsConfig = async () => {
|
|
await tenancy.doInTenant(DEFAULT_TENANT_ID, async () => {
|
|
const db = tenancy.getGlobalDB()
|
|
try {
|
|
const config = await db.get("config_settings")
|
|
await db.remove("config_settings", config._rev)
|
|
} catch (e) {
|
|
if (e.status !== 404) {
|
|
throw e
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
describe("getPlatformUrl", () => {
|
|
describe("self host", () => {
|
|
|
|
beforeEach(async () => {
|
|
env._set("SELF_HOST", 1)
|
|
await clearSettingsConfig()
|
|
})
|
|
|
|
it("gets the default url", async () => {
|
|
await tenancy.doInTenant(null, async () => {
|
|
const url = await getPlatformUrl()
|
|
expect(url).toBe(DEFAULT_URL)
|
|
})
|
|
})
|
|
|
|
it("gets the platform url from the environment", async () => {
|
|
await tenancy.doInTenant(null, async () => {
|
|
env._set("PLATFORM_URL", ENV_URL)
|
|
const url = await getPlatformUrl()
|
|
expect(url).toBe(ENV_URL)
|
|
})
|
|
})
|
|
|
|
it("gets the platform url from the database", async () => {
|
|
await tenancy.doInTenant(null, async () => {
|
|
await setDbPlatformUrl()
|
|
const url = await getPlatformUrl()
|
|
expect(url).toBe(DB_URL)
|
|
})
|
|
})
|
|
})
|
|
|
|
|
|
describe("cloud", () => {
|
|
const TENANT_AWARE_URL = "http://default.env.com"
|
|
|
|
beforeEach(async () => {
|
|
env._set("SELF_HOSTED", 0)
|
|
env._set("MULTI_TENANCY", 1)
|
|
env._set("PLATFORM_URL", ENV_URL)
|
|
await clearSettingsConfig()
|
|
})
|
|
|
|
it("gets the platform url from the environment without tenancy", async () => {
|
|
await tenancy.doInTenant(DEFAULT_TENANT_ID, async () => {
|
|
const url = await getPlatformUrl({ tenantAware: false })
|
|
expect(url).toBe(ENV_URL)
|
|
})
|
|
})
|
|
|
|
it("gets the platform url from the environment with tenancy", async () => {
|
|
await tenancy.doInTenant(DEFAULT_TENANT_ID, async () => {
|
|
const url = await getPlatformUrl()
|
|
expect(url).toBe(TENANT_AWARE_URL)
|
|
})
|
|
})
|
|
|
|
it("never gets the platform url from the database", async () => {
|
|
await tenancy.doInTenant(DEFAULT_TENANT_ID, async () => {
|
|
await setDbPlatformUrl()
|
|
const url = await getPlatformUrl()
|
|
expect(url).toBe(TENANT_AWARE_URL)
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
describe("getScopedConfig", () => {
|
|
describe("settings config", () => {
|
|
|
|
beforeEach(async () => {
|
|
env._set("SELF_HOSTED", 1)
|
|
env._set("PLATFORM_URL", "")
|
|
await clearSettingsConfig()
|
|
})
|
|
|
|
it("returns the platform url with an existing config", async () => {
|
|
await tenancy.doInTenant(DEFAULT_TENANT_ID, async () => {
|
|
await setDbPlatformUrl()
|
|
const db = tenancy.getGlobalDB()
|
|
const config = await getScopedConfig(db, { type: Configs.SETTINGS })
|
|
expect(config.platformUrl).toBe(DB_URL)
|
|
})
|
|
})
|
|
|
|
it("returns the platform url without an existing config", async () => {
|
|
await tenancy.doInTenant(DEFAULT_TENANT_ID, async () => {
|
|
const db = tenancy.getGlobalDB()
|
|
const config = await getScopedConfig(db, { type: Configs.SETTINGS })
|
|
expect(config.platformUrl).toBe(DEFAULT_URL)
|
|
})
|
|
})
|
|
})
|
|
})
|