/opt/mawid/apps/api/src/config
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();
});
});