|
- // Runs the HTA contact workflow against a disposable MDB, with a small DOM stub.
- var fs = new ActiveXObject("Scripting.FileSystemObject");
- var root = fs.GetParentFolderName(fs.GetParentFolderName(WScript.ScriptFullName));
- var dbPath = WScript.Arguments(0);
- var csvPath = WScript.Arguments(1);
- var elements = {};
- var window = { location: { pathname: "/" + fs.BuildPath(root, "MassMailer.hta").replace(/\\/g, "/") } };
- var document = {
- getElementById: function (id) {
- if (!elements[id]) elements[id] = { innerText: "", value: "", disabled: false,
- firstChild: null, appendChild: function () {}, removeChild: function () {} };
- return elements[id];
- },
- createElement: function () { return { innerText: "", className: "", appendChild: function () {} }; }
- };
-
- function assert(condition, message) {
- if (!condition) throw new Error(message);
- }
-
- try {
- eval(fs.OpenTextFile(fs.BuildPath(root, "src\\contacts.js"), 1).ReadAll());
- var html = fs.OpenTextFile(fs.BuildPath(root, "MassMailer.hta"), 1).ReadAll();
- var match = /<script language="JScript" type="text\/javascript">([\s\S]*?)<\/script>/i.exec(html);
- assert(match !== null, "HTA script block missing");
- eval(match[1]);
- readSettings = function () {
- return { DB_PATH: dbPath, DB_PROVIDER: "Microsoft.ACE.OLEDB.12.0",
- DB_BITNESS: "x86", QUEUE_INTERVAL: "300" };
- };
- assert(fs.FileExists(powerShellHost()), "Configured PowerShell host is missing");
-
- elements.suppressEmail = { value: "blocked@example.invalid" };
- elements.suppressReason = { value: "opt-out" };
- elements.suppressEvidence = { value: "reply mailbox" };
- addSuppression();
- assert(elements.suppressMessage.innerText.indexOf("Suppressed") === 0,
- "Suppression failed: " + elements.suppressMessage.innerText);
-
- elements.csvPath = { value: csvPath };
- elements.sourceFallback = { value: "public business directory" };
- previewContacts();
- assert(pendingPreview !== null, "Preview failed: " + elements.importMessage.innerText);
- assert(pendingPreview.accepted.length === 2, "Expected two ready contacts");
- assert(pendingPreview.rejected.length === 2, "Expected duplicate and suppressed rejections");
- commitContacts();
- assert(elements.importMessage.innerText.indexOf("Imported 2") === 0,
- "Import failed: " + elements.importMessage.innerText);
- assert(elements.contacts.innerText == 2, "Contact count is not two");
- assert(elements.suppressed.innerText == 1, "Suppression count is not one");
-
- previewContacts();
- assert(pendingPreview.accepted.length === 0, "Re-import offered an existing contact");
- assert(pendingPreview.rejected.length === 4, "Re-import rejection count wrong");
- WScript.Echo("Contact import and suppression integration passed");
- } catch (error) {
- WScript.Echo("FAIL: " + error.message);
- WScript.Quit(1);
- }
|