53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
const config = require('../../config/env');
|
|
|
|
describe('Environment Configuration', () => {
|
|
const originalEnv = process.env;
|
|
|
|
beforeEach(() => {
|
|
// Restore original env before each test
|
|
jest.resetModules();
|
|
process.env = { ...originalEnv };
|
|
});
|
|
|
|
afterAll(() => {
|
|
process.env = originalEnv;
|
|
});
|
|
|
|
describe('Configuration Loading', () => {
|
|
it('should load default values when env vars are not set', () => {
|
|
expect(config.port).toBe(5000);
|
|
expect(config.nodeEnv).toBeDefined();
|
|
});
|
|
|
|
it('should use environment variables when set', () => {
|
|
expect(config.jwtExpiresIn).toBeDefined();
|
|
expect(config.mongoUri).toBeDefined();
|
|
});
|
|
|
|
it('should parse CORS_ORIGIN as array', () => {
|
|
expect(Array.isArray(config.corsOrigin)).toBe(true);
|
|
});
|
|
|
|
it('should have geocode configuration', () => {
|
|
expect(config.geocodeUrl).toBeDefined();
|
|
expect(config.geocodeUserAgent).toBeDefined();
|
|
expect(config.geocodeMinDelayMs).toBeGreaterThan(0);
|
|
});
|
|
});
|
|
|
|
describe('Configuration Values', () => {
|
|
it('should have valid port number', () => {
|
|
expect(config.port).toBeGreaterThan(0);
|
|
expect(config.port).toBeLessThan(65536);
|
|
});
|
|
|
|
it('should have valid geocode delay', () => {
|
|
expect(config.geocodeMinDelayMs).toBeGreaterThanOrEqual(1000);
|
|
});
|
|
|
|
it('should have valid JWT expiration format', () => {
|
|
expect(config.jwtExpiresIn).toMatch(/^\d+[smhd]$/);
|
|
});
|
|
});
|
|
});
|