Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

60 řádky
2.7KB

  1. // Runs the HTA contact workflow against a disposable MDB, with a small DOM stub.
  2. var fs = new ActiveXObject("Scripting.FileSystemObject");
  3. var root = fs.GetParentFolderName(fs.GetParentFolderName(WScript.ScriptFullName));
  4. var dbPath = WScript.Arguments(0);
  5. var csvPath = WScript.Arguments(1);
  6. var elements = {};
  7. var window = { location: { pathname: "/" + fs.BuildPath(root, "MassMailer.hta").replace(/\\/g, "/") } };
  8. var document = {
  9. getElementById: function (id) {
  10. if (!elements[id]) elements[id] = { innerText: "", value: "", disabled: false,
  11. firstChild: null, appendChild: function () {}, removeChild: function () {} };
  12. return elements[id];
  13. },
  14. createElement: function () { return { innerText: "", className: "", appendChild: function () {} }; }
  15. };
  16. function assert(condition, message) {
  17. if (!condition) throw new Error(message);
  18. }
  19. try {
  20. eval(fs.OpenTextFile(fs.BuildPath(root, "src\\contacts.js"), 1).ReadAll());
  21. var html = fs.OpenTextFile(fs.BuildPath(root, "MassMailer.hta"), 1).ReadAll();
  22. var match = /<script language="JScript" type="text\/javascript">([\s\S]*?)<\/script>/i.exec(html);
  23. assert(match !== null, "HTA script block missing");
  24. eval(match[1]);
  25. readSettings = function () {
  26. return { DB_PATH: dbPath, DB_PROVIDER: "Microsoft.ACE.OLEDB.12.0",
  27. DB_BITNESS: "x86", QUEUE_INTERVAL: "300" };
  28. };
  29. assert(fs.FileExists(powerShellHost()), "Configured PowerShell host is missing");
  30. elements.suppressEmail = { value: "blocked@example.invalid" };
  31. elements.suppressReason = { value: "opt-out" };
  32. elements.suppressEvidence = { value: "reply mailbox" };
  33. addSuppression();
  34. assert(elements.suppressMessage.innerText.indexOf("Suppressed") === 0,
  35. "Suppression failed: " + elements.suppressMessage.innerText);
  36. elements.csvPath = { value: csvPath };
  37. elements.sourceFallback = { value: "public business directory" };
  38. previewContacts();
  39. assert(pendingPreview !== null, "Preview failed: " + elements.importMessage.innerText);
  40. assert(pendingPreview.accepted.length === 2, "Expected two ready contacts");
  41. assert(pendingPreview.rejected.length === 2, "Expected duplicate and suppressed rejections");
  42. commitContacts();
  43. assert(elements.importMessage.innerText.indexOf("Imported 2") === 0,
  44. "Import failed: " + elements.importMessage.innerText);
  45. assert(elements.contacts.innerText == 2, "Contact count is not two");
  46. assert(elements.suppressed.innerText == 1, "Suppression count is not one");
  47. previewContacts();
  48. assert(pendingPreview.accepted.length === 0, "Re-import offered an existing contact");
  49. assert(pendingPreview.rejected.length === 4, "Re-import rejection count wrong");
  50. WScript.Echo("Contact import and suppression integration passed");
  51. } catch (error) {
  52. WScript.Echo("FAIL: " + error.message);
  53. WScript.Quit(1);
  54. }

Powered by TurnKey Linux.