@@ -45,3 +45,19 @@ TODO: do we need to consider `<![CDATA[...]]>` and foreign XML contexts.
4545TODO: what do client side templates do with comments in the DOM?
4646
4747## Test-cases
48+
49+ Current snapshot of DOMPurify test-cases (to be updated, please feel free to reorganize):
50+
51+ ``` javascript
52+ assert .equal ( DOMPurify .sanitize ( ' <a>123{{456}}<b><style><% alert(1) %></style>456</b></a>' , {SAFE_FOR_TEMPLATES : true }), " <a> <b><style> </style>456</b></a>" );
53+ assert .equal ( DOMPurify .sanitize ( ' <a data-bind="style: alert(1)"></a>' , {SAFE_FOR_TEMPLATES : true }), " <a></a>" );
54+ assert .equal ( DOMPurify .sanitize ( ' <a data-harmless=""></a>' , {SAFE_FOR_TEMPLATES : true , ALLOW_DATA_ATTR : true }), " <a></a>" );
55+ assert .equal ( DOMPurify .sanitize ( ' <a data-harmless=""></a>' , {SAFE_FOR_TEMPLATES : false , ALLOW_DATA_ATTR : false }), " <a></a>" );
56+ assert .equal ( DOMPurify .sanitize ( ' <a>{{123}}{{456}}<b><style><% alert(1) %><% 123 %></style>456</b></a>' , {SAFE_FOR_TEMPLATES : true }), " <a> <b><style> </style>456</b></a>" );
57+ assert .equal ( DOMPurify .sanitize ( ' <a>{{123}}abc{{456}}<b><style><% alert(1) %>def<% 123 %></style>456</b></a>' , {SAFE_FOR_TEMPLATES : true }), " <a> <b><style> </style>456</b></a>" );
58+ assert .equal ( DOMPurify .sanitize ( ' <a>123{{45{{6}}<b><style><% alert(1)%> %></style>456</b></a>' , {SAFE_FOR_TEMPLATES : true }), " <a> <b><style> </style>456</b></a>" );
59+ assert .equal ( DOMPurify .sanitize ( ' <a>123{{45}}6}}<b><style><% <%alert(1) %></style>456</b></a>' , {SAFE_FOR_TEMPLATES : true }), " <a> <b><style> </style>456</b></a>" );
60+ assert .equal ( DOMPurify .sanitize ( ' <a>123{{<b>456}}</b><style><% alert(1) %></style>456</a>' , {SAFE_FOR_TEMPLATES : true }), " <a>123 <b> </b><style> </style>456</a>" );
61+ assert .equal ( DOMPurify .sanitize ( ' <b>{{evil<script>alert(1)</script><form><img src=x name=textContent></form>}}</b>' , {SAFE_FOR_TEMPLATES : true }), " <b> </b>" );
62+ assert .equal ( DOMPurify .sanitize ( ' <b>he{{evil<script>alert(1)</script><form><img src=x name=textContent></form>}}ya</b>' , {SAFE_FOR_TEMPLATES : true }), " <b>he ya</b>" );
63+ ```
0 commit comments