2026-05-18 07:29:01 +07:00
|
|
|
import { describe, expect, it } from 'bun:test';
|
|
|
|
|
import { config } from '../src/env';
|
2026-05-18 06:58:55 +07:00
|
|
|
|
2026-05-18 07:29:01 +07:00
|
|
|
describe('Environment Variables Validation', () => {
|
|
|
|
|
it('config should have all required fields', () => {
|
|
|
|
|
expect(config).toHaveProperty('botToken');
|
|
|
|
|
expect(config).toHaveProperty('storageChatId');
|
|
|
|
|
expect(config).toHaveProperty('baseUrl');
|
|
|
|
|
expect(config).toHaveProperty('databaseUrl');
|
|
|
|
|
expect(config).toHaveProperty('port');
|
|
|
|
|
expect(config).toHaveProperty('nodeEnv');
|
|
|
|
|
expect(config).toHaveProperty('logLevel');
|
|
|
|
|
expect(config).toHaveProperty('rateLimitWindowMs');
|
|
|
|
|
expect(config).toHaveProperty('rateLimitMaxRequests');
|
2026-05-18 06:58:55 +07:00
|
|
|
});
|
|
|
|
|
|
2026-05-18 07:29:01 +07:00
|
|
|
it('config.botToken should return BOT_TOKEN from process.env', () => {
|
2026-05-21 22:31:55 +07:00
|
|
|
expect(config.botToken).toBe(process.env.BOT_TOKEN || '');
|
2026-05-18 06:58:55 +07:00
|
|
|
});
|
|
|
|
|
|
2026-05-18 07:29:01 +07:00
|
|
|
it('config.storageChatId should be parsed as integer from STORAGE_CHANNEL_ID', () => {
|
|
|
|
|
expect(typeof config.storageChatId).toBe('number');
|
2026-05-21 22:31:55 +07:00
|
|
|
expect(config.storageChatId).toBe(parseInt(process.env.STORAGE_CHANNEL_ID || '0', 10));
|
2026-05-18 06:58:55 +07:00
|
|
|
});
|
|
|
|
|
|
2026-05-18 07:29:01 +07:00
|
|
|
it('config.port should default to 3000 when not specified', () => {
|
|
|
|
|
expect(typeof config.port).toBe('number');
|
2026-05-18 06:58:55 +07:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("nodeEnv should be 'test' or 'development'", () => {
|
2026-05-18 07:29:01 +07:00
|
|
|
expect(['test', 'development']).toContain(config.nodeEnv);
|
2026-05-18 06:58:55 +07:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("logLevel should default to 'info'", () => {
|
2026-05-18 07:29:01 +07:00
|
|
|
expect(config.logLevel).toBe('info');
|
2026-05-18 06:58:55 +07:00
|
|
|
});
|
|
|
|
|
|
2026-05-18 07:29:01 +07:00
|
|
|
it('rateLimitWindowMs should default to 60000 when not specified', () => {
|
2026-05-18 06:58:55 +07:00
|
|
|
expect(config.rateLimitWindowMs).toBe(60000);
|
|
|
|
|
});
|
|
|
|
|
|
2026-07-06 01:25:18 +07:00
|
|
|
it('rateLimitMaxRequests should default to 150 when not specified', () => {
|
|
|
|
|
expect(config.rateLimitMaxRequests).toBe(150);
|
2026-05-18 06:58:55 +07:00
|
|
|
});
|
|
|
|
|
});
|