diff --git a/packages/server/src/AppConfig.test.ts b/packages/server/src/AppConfig.test.ts new file mode 100644 index 00000000000..0ea89eb5659 --- /dev/null +++ b/packages/server/src/AppConfig.test.ts @@ -0,0 +1,35 @@ +import { afterEach, describe, expect, it, jest } from '@jest/globals' + +const ORIGINAL_ENV = process.env + +describe('AppConfig', () => { + afterEach(() => { + process.env = ORIGINAL_ENV + jest.resetModules() + }) + + it('treats whitespace-padded true values as enabled', async () => { + process.env = { ...ORIGINAL_ENV, SHOW_COMMUNITY_NODES: ' true ' } + + const { appConfig } = await import('./AppConfig') + + expect(appConfig.showCommunityNodes).toBe(true) + }) + + it('keeps whitespace-padded false values disabled', async () => { + process.env = { ...ORIGINAL_ENV, SHOW_COMMUNITY_NODES: ' false ' } + + const { appConfig } = await import('./AppConfig') + + expect(appConfig.showCommunityNodes).toBe(false) + }) + + it('defaults to disabled when the env var is unset', async () => { + process.env = { ...ORIGINAL_ENV } + delete process.env.SHOW_COMMUNITY_NODES + + const { appConfig } = await import('./AppConfig') + + expect(appConfig.showCommunityNodes).toBe(false) + }) +}) diff --git a/packages/server/src/AppConfig.ts b/packages/server/src/AppConfig.ts index 8a838254e0a..e5061d74414 100644 --- a/packages/server/src/AppConfig.ts +++ b/packages/server/src/AppConfig.ts @@ -1,4 +1,12 @@ +const parseBooleanEnv = (value: string | undefined, defaultValue: boolean) => { + if (value == null) { + return defaultValue + } + + return value.trim().toLowerCase() === 'true' +} + export const appConfig = { - showCommunityNodes: process.env.SHOW_COMMUNITY_NODES ? process.env.SHOW_COMMUNITY_NODES.toLowerCase() === 'true' : false + showCommunityNodes: parseBooleanEnv(process.env.SHOW_COMMUNITY_NODES, false) // todo: add more config options here like database, log, storage, credential and allow modification from UI }