/opt/mawid/apps/api/src/config
NameSizeModeActions
env.spec.ts13660644editdlrm
env.ts20720644editdlrm
Edit: /opt/mawid/apps/api/src/config/env.spec.ts (1366B)
import { validateEnv } from './env'; const validEnv = { NODE_ENV: 'test', DATABASE_URL: 'postgresql://mawid:mawid@localhost:5432/mawid', REDIS_URL: 'redis://localhost:6379', JWT_SECRET: 'a-test-secret-at-least-16-chars', APP_BASE_URL: 'http://localhost:3001', DASHBOARD_BASE_URL: 'http://localhost:3000', }; describe('validateEnv', () => { it('accepts a valid environment and applies defaults', () => { const env = validateEnv(validEnv); expect(env.API_PORT).toBe(3001); expect(env.TZ).toBe('Europe/Istanbul'); expect(env.FEATURE_ECHO_MODE).toBe(false); }); it('coerces FEATURE_ECHO_MODE to boolean', () => { const env = validateEnv({ ...validEnv, FEATURE_ECHO_MODE: 'true' }); expect(env.FEATURE_ECHO_MODE).toBe(true); }); it('refuses to boot with missing required vars', () => { const { DATABASE_URL: _omitted, ...rest } = validEnv; expect(() => validateEnv(rest)).toThrow(/DATABASE_URL/); }); it('refuses a short JWT_SECRET', () => { expect(() => validateEnv({ ...validEnv, JWT_SECRET: 'short' })).toThrow(/JWT_SECRET/); }); it('requires WhatsApp credentials only in production', () => { expect(() => validateEnv({ ...validEnv, NODE_ENV: 'production' })).toThrow( /WA_ACCESS_TOKEN is required in production/, ); expect(() => validateEnv(validEnv)).not.toThrow(); }); });