1- module . exports = function ( jsdom ) {
1+ const fs = require ( 'fs' ) ;
2+
3+ module . exports = function ( JSDOM ) {
24 class StringWrapper {
35 constructor ( s ) {
46 this . s = s ;
@@ -9,40 +11,39 @@ module.exports = function (jsdom) {
911 }
1012 }
1113
12- function loadDOMPurify ( assert , head , setup , onload ) {
14+ function loadDOMPurify ( assert , addScriptAttribute , setup , onload ) {
1315 const testDone = assert . async ( ) ;
14- jsdom . env ( {
15- html : '<head>' + head + '</head>' ,
16- features : {
17- FetchExternalResources : [ 'script' ] ,
18- ProcessExternalResources : [ 'script' ] ,
19- } ,
20- created ( err , window ) {
21- if ( setup ) {
22- setup ( window ) ;
23- }
24- } ,
25- done ( err , window ) {
26- assert . ok ( window . DOMPurify . sanitize ) ;
27- // Sanity check
28- assert . equal (
29- window . DOMPurify . sanitize ( '<img src=x onerror=alert(1)>' ) ,
30- '<img src="x">'
31- ) ;
32- if ( onload ) {
33- onload ( window ) ;
34- }
35- testDone ( ) ;
36- } ,
37- } ) ;
16+ const { window } = new JSDOM ( '<head></head>' , { runScripts : "dangerously" } ) ;
17+ require ( 'jquery' ) ( window ) ;
18+ if ( setup ) {
19+ setup ( window ) ;
20+ }
21+
22+ const myLibrary = fs . readFileSync ( 'dist/purify.js' , { encoding : "utf-8" } ) ;
23+ const scriptEl = window . document . createElement ( "script" ) ;
24+ if ( addScriptAttribute ) scriptEl . setAttribute ( 'data-tt-policy-suffix' , 'suffix' ) ;
25+
26+ scriptEl . textContent = myLibrary ;
27+ window . document . body . appendChild ( scriptEl ) ;
28+
29+ assert . ok ( window . DOMPurify . sanitize ) ;
30+ // Sanity check
31+ assert . equal (
32+ window . DOMPurify . sanitize ( '<img src=x onerror=alert(1)>' ) ,
33+ '<img src="x">'
34+ ) ;
35+ if ( onload ) {
36+ onload ( window ) ;
37+ }
38+ testDone ( ) ;
3839 }
3940
4041 QUnit . test ( 'works in a non-Trusted Type environment' , function ( assert ) {
4142 let policyCreated ;
4243
4344 loadDOMPurify (
4445 assert ,
45- '<script src="dist/purify.js"></script>' ,
46+ false ,
4647 function setup ( window ) {
4748 delete window . trustedTypes ;
4849 } ,
@@ -58,7 +59,7 @@ module.exports = function (jsdom) {
5859
5960 loadDOMPurify (
6061 assert ,
61- '<script src="dist/purify.js"></script>' ,
62+ false ,
6263 function setup ( window ) {
6364 window . trustedTypes = {
6465 createPolicy ( name , rules ) {
@@ -89,7 +90,7 @@ module.exports = function (jsdom) {
8990
9091 loadDOMPurify (
9192 assert ,
92- '<script data-tt-policy-suffix="suffix" src="dist/purify.js"></script>' ,
93+ true ,
9394 function setup ( window ) {
9495 window . trustedTypes = {
9596 createPolicy ( name , rules ) {
0 commit comments