test(config): add env schema coverage for platform-service
This commit is contained in:
parent
9fbaf60ba8
commit
e3f173c164
53
services/platform-service/src/lib/config.test.ts
Normal file
53
services/platform-service/src/lib/config.test.ts
Normal file
@ -0,0 +1,53 @@
|
||||
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();
|
||||
});
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user