background-generated-email-module.test.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const test = require('node:test');
  2. const assert = require('node:assert/strict');
  3. const fs = require('node:fs');
  4. test('background imports generated email helper module', () => {
  5. const source = fs.readFileSync('background.js', 'utf8');
  6. assert.match(source, /importScripts\([\s\S]*'background\/generated-email-helpers\.js'/);
  7. });
  8. test('generated email helper module exposes a factory', () => {
  9. const source = fs.readFileSync('background/generated-email-helpers.js', 'utf8');
  10. const globalScope = {};
  11. const api = new Function('self', `${source}; return self.MultiPageGeneratedEmailHelpers;`)(globalScope);
  12. assert.equal(typeof api?.createGeneratedEmailHelpers, 'function');
  13. });
  14. test('generated email helper supports a4sky mailbox format', async () => {
  15. const source = fs.readFileSync('background/generated-email-helpers.js', 'utf8');
  16. const globalScope = {};
  17. const api = new Function('self', `${source}; return self.MultiPageGeneratedEmailHelpers;`)(globalScope);
  18. let savedEmail = null;
  19. const helpers = api.createGeneratedEmailHelpers({
  20. addLog: async () => {},
  21. getState: async () => ({ mailProvider: 'a4sky' }),
  22. normalizeEmailGenerator: () => 'duck',
  23. setEmailState: async (email) => {
  24. savedEmail = email;
  25. },
  26. throwIfStopped: () => {},
  27. });
  28. const email = await helpers.fetchGeneratedEmail({ mailProvider: 'a4sky' });
  29. assert.match(email, /^n\d{14}@a4sky\.com$/i);
  30. assert.equal(savedEmail, email);
  31. });