learning_ai_common_plat/services/platform-service/src/lib/config.test.ts

54 lines
1.7 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from 'vitest';
const REQUIRED_ENV = {
COSMOS_ENDPOINT: 'https://example.documents.azure.com:443/',
COSMOS_KEY: 'test-cosmos-key',
JWT_SECRET: 'test-jwt-secret',
};
afterEach(() => {
vi.resetModules();
vi.unstubAllEnvs();
});
describe('lib/config', () => {
it('parses with defaults when required env vars are set', async () => {
vi.stubEnv('COSMOS_ENDPOINT', REQUIRED_ENV.COSMOS_ENDPOINT);
vi.stubEnv('COSMOS_KEY', REQUIRED_ENV.COSMOS_KEY);
vi.stubEnv('JWT_SECRET', REQUIRED_ENV.JWT_SECRET);
const { config } = await import('./config.js');
expect(config.PORT).toBe(4003);
expect(config.HOST).toBe('0.0.0.0');
expect(['development', 'test']).toContain(config.NODE_ENV);
expect(config.COSMOS_DATABASE).toBe('lysnrai');
expect(config.USAGE_WARN_THRESHOLD).toBe(0.8);
});
it('respects explicit env overrides', async () => {
vi.stubEnv('COSMOS_ENDPOINT', REQUIRED_ENV.COSMOS_ENDPOINT);
vi.stubEnv('COSMOS_KEY', REQUIRED_ENV.COSMOS_KEY);
vi.stubEnv('JWT_SECRET', REQUIRED_ENV.JWT_SECRET);
vi.stubEnv('PORT', '4999');
vi.stubEnv('NODE_ENV', 'test');
vi.stubEnv('SERVICE_NAME', 'platform-service-test');
vi.stubEnv('USAGE_WARN_THRESHOLD', '0.9');
const { config } = await import('./config.js');
expect(config.PORT).toBe(4999);
expect(config.NODE_ENV).toBe('test');
expect(config.SERVICE_NAME).toBe('platform-service-test');
expect(config.USAGE_WARN_THRESHOLD).toBe(0.9);
});
it('throws when required env vars are missing', async () => {
vi.stubEnv('COSMOS_ENDPOINT', '');
vi.stubEnv('COSMOS_KEY', '');
vi.stubEnv('JWT_SECRET', '');
await expect(import('./config.js')).rejects.toThrow();
});
});