config.test.ts 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import { test } from 'node:test';
  2. import assert from 'node:assert/strict';
  3. import { loadConfig } from '../src/config.js';
  4. import { applyTestConfig } from './helpers/testConfig.js';
  5. test('loadConfig rejects an incomplete environment', () => {
  6. assert.throws(() => loadConfig({ NODE_ENV: 'test' }), /Invalid environment configuration/);
  7. });
  8. test('loadConfig never echoes a value in its error message', () => {
  9. try {
  10. loadConfig({ CHATWOOT_BASE_URL: 'not-a-url', CHATWOOT_API_TOKEN: 'super-secret-value' });
  11. assert.fail('expected a throw');
  12. } catch (err) {
  13. assert.ok(err instanceof Error);
  14. assert.ok(!err.message.includes('super-secret-value'));
  15. }
  16. });
  17. test('boolean and csv env values are coerced', () => {
  18. const cfg = applyTestConfig({ WORKER_ENABLED: 'yes', STORE_CURRENCIES: 'pln, eur ,czk' });
  19. assert.equal(cfg.WORKER_ENABLED, true);
  20. assert.deepEqual(cfg.STORE_CURRENCIES, ['PLN', 'EUR', 'CZK']);
  21. });
  22. test('defaults fill in the optional settings', () => {
  23. const cfg = applyTestConfig();
  24. assert.equal(cfg.CHATWOOT_TICKET_LABEL, 'ticket');
  25. assert.equal(cfg.TICKET_NUMBER_PREFIX, 'EKS');
  26. assert.equal(cfg.SPAM_GATE_ENABLED, true);
  27. });