env.test.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import assert from 'node:assert/strict';
  2. import test from 'node:test';
  3. import { EnvironmentConfigurationError, loadConfig } from '../src/config/env.js';
  4. const validEnvironment: NodeJS.ProcessEnv = {
  5. NODE_ENV: 'test',
  6. HOST: '127.0.0.1',
  7. PORT: '4400',
  8. DATABASE_URL: 'postgres://user:password@127.0.0.1:5432/saas_voc',
  9. MIGRATION_DATABASE_URL: 'postgres://owner:password@127.0.0.1:5432/saas_voc',
  10. PARSE_APP_ID: 'test-app-id',
  11. PARSE_MASTER_KEY: 'a'.repeat(32),
  12. PARSE_MAINTENANCE_KEY: 'b'.repeat(32),
  13. PARSE_SERVER_URL: 'http://127.0.0.1:4400/parse',
  14. FMODE_BASE_URL: 'http://127.0.0.1:3000/api/voc-e-commerce',
  15. FMODE_API_KEY: 'test-key',
  16. CORS_ORIGINS: 'http://127.0.0.1:4300',
  17. };
  18. test('loadConfig rejects missing secrets before startup', () => {
  19. const environment = { ...validEnvironment };
  20. delete environment.DATABASE_URL;
  21. delete environment.PARSE_MASTER_KEY;
  22. delete environment.PARSE_MAINTENANCE_KEY;
  23. delete environment.FMODE_API_KEY;
  24. assert.throws(
  25. () => loadConfig(environment),
  26. (error: unknown) => {
  27. assert.ok(error instanceof EnvironmentConfigurationError);
  28. assert.match(error.message, /DATABASE_URL/);
  29. assert.match(error.message, /PARSE_MASTER_KEY/);
  30. assert.match(error.message, /PARSE_MAINTENANCE_KEY/);
  31. assert.match(error.message, /FMODE_API_KEY/);
  32. return true;
  33. },
  34. );
  35. });
  36. test('loadConfig normalizes URLs and CORS origins', () => {
  37. const config = loadConfig({
  38. ...validEnvironment,
  39. FMODE_BASE_URL: 'http://127.0.0.1:3000/api/voc-e-commerce/',
  40. CORS_ORIGINS: 'http://127.0.0.1:4300, http://localhost:4200',
  41. });
  42. assert.equal(config.fmode.baseUrl, 'http://127.0.0.1:3000/api/voc-e-commerce');
  43. assert.equal(config.database.migrationUrl, validEnvironment.MIGRATION_DATABASE_URL);
  44. assert.equal(config.worker.enabled, true);
  45. assert.equal(config.worker.reviewMaxPages, 1);
  46. assert.deepEqual(config.corsOrigins, ['http://127.0.0.1:4300', 'http://localhost:4200']);
  47. });