2019-03-03 01:37:45 -05:00
|
|
|
var tape = require("tape");
|
2014-05-04 08:44:18 +02:00
|
|
|
|
2019-03-03 01:37:45 -05:00
|
|
|
var evalScript = require("../../lib/eval-script");
|
2014-05-04 08:44:18 +02:00
|
|
|
|
|
|
|
|
tape("test evalScript method", function(t) {
|
2019-03-03 01:37:45 -05:00
|
|
|
document.body.className = "";
|
2014-05-04 08:44:18 +02:00
|
|
|
|
2019-03-03 01:37:45 -05:00
|
|
|
var script = document.createElement("script");
|
|
|
|
|
script.innerHTML = "document.body.className = 'executed'";
|
2014-05-04 08:44:18 +02:00
|
|
|
|
2019-03-03 01:37:45 -05:00
|
|
|
t.equal(document.body.className, "", "script hasn't been executed yet");
|
2014-05-04 08:44:18 +02:00
|
|
|
|
2019-03-03 01:37:45 -05:00
|
|
|
evalScript(script);
|
|
|
|
|
t.equal(
|
|
|
|
|
document.body.className,
|
|
|
|
|
"executed",
|
|
|
|
|
"script has been properly executed"
|
|
|
|
|
);
|
2014-05-04 08:44:18 +02:00
|
|
|
|
2019-03-03 01:37:45 -05:00
|
|
|
script.innerHTML = "document.write('failure')";
|
|
|
|
|
var bodyText = "document.write hasn't been executed";
|
|
|
|
|
document.body.text = bodyText;
|
|
|
|
|
evalScript(script);
|
|
|
|
|
t.equal(document.body.text, bodyText, "document.write hasn't been executed");
|
2018-11-25 15:21:07 -05:00
|
|
|
|
|
|
|
|
t.end();
|
2019-03-03 01:37:45 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
tape(
|
|
|
|
|
"evalScript should not throw an error if the script removed itself",
|
|
|
|
|
function(t) {
|
|
|
|
|
var script = document.createElement("script");
|
|
|
|
|
script.id = "myScript";
|
|
|
|
|
script.innerHTML =
|
|
|
|
|
"const script = document.querySelector('#myScript');" +
|
|
|
|
|
"script.parentNode.removeChild(script);";
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
evalScript(script);
|
|
|
|
|
|
|
|
|
|
t.pass("Missing script tested successfully");
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.error(e);
|
|
|
|
|
t.fail("Attempted to remove missing script");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
t.end();
|
|
|
|
|
}
|
|
|
|
|
);
|