2014-05-04 08:44:18 +02:00
|
|
|
var tape = require("tape")
|
|
|
|
|
|
2014-10-14 08:23:56 +02:00
|
|
|
var evalScript = require("../../lib/eval-script")
|
2014-05-04 08:44:18 +02:00
|
|
|
|
|
|
|
|
tape("test evalScript method", function(t) {
|
|
|
|
|
document.body.className = ""
|
|
|
|
|
|
|
|
|
|
var script = document.createElement("script")
|
|
|
|
|
script.innerHTML = "document.body.className = 'executed'"
|
|
|
|
|
|
|
|
|
|
t.equal(document.body.className, "", "script hasn't been executed yet")
|
|
|
|
|
|
|
|
|
|
evalScript(script)
|
|
|
|
|
t.equal(document.body.className, "executed", "script has been properly executed")
|
|
|
|
|
|
2018-01-26 15:54:07 +00:00
|
|
|
script.innerHTML = "document.write('failure')"
|
2018-04-09 23:36:32 -04:00
|
|
|
var bodyText = "document.write hasn't been executed"
|
|
|
|
|
document.body.text = bodyText
|
2018-01-26 15:54:07 +00:00
|
|
|
evalScript(script)
|
|
|
|
|
t.equal(document.body.text, bodyText, "document.write hasn't been executed")
|
2014-05-04 08:44:18 +02:00
|
|
|
|
|
|
|
|
t.end()
|
|
|
|
|
})
|
2018-11-21 21:33:41 -05:00
|
|
|
|
2018-11-21 21:35:15 -05:00
|
|
|
tape("evalScript should not throw an error if the script removed itself", function(t) {
|
2018-11-21 21:33:41 -05:00
|
|
|
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();
|
|
|
|
|
})
|