jagd-apps/stoeberhunde/backend/config/__tests__/env.test.js

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]$/);
});
});
});