summaryrefslogtreecommitdiff
path: root/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT
diff options
context:
space:
mode:
Diffstat (limited to 'library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT')
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-preserve.htmlt8
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-remove.htmlt8
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/basic.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-preserve.htmlt6
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-remove.htmlt8
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-preserve.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-remove.htmlt7
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/disable-uri.htmlt6
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/double-youtube.htmlt6
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/empty.htmlt6
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/file-uri.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-default.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-enabled.htmlt6
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-img.htmlt8
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-name-mix.htmlt11
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-list-loop.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-wraps-block.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/list-nesting.htmlt7
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/munge-extra.htmlt13
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/munge.htmlt52
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/name.htmlt6
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-googlemaps.htmlt8
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-invalid.htmlt7
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-youtube.htmlt8
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe.htmlt14
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt12
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed.htmlt8
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-bare.htmlt9
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-cdata.htmlt11
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-comment.htmlt11
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-dbl-comment.htmlt11
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-ideal.htmlt11
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/secure-munge.htmlt12
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-preserve-yen.htmlt8
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-remove-yen.htmlt9
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote-with-inline.htmlt7
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote.htmlt7
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-underline.htmlt7
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/style-onload.htmlt6
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/tidy-background.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-required.htmlt6
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-table.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments.htmlt5
-rw-r--r--library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/whitespace-preserve.htmlt3
44 files changed, 378 insertions, 0 deletions
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-preserve.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-preserve.htmlt
new file mode 100644
index 0000000000..650f00b6b0
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-preserve.htmlt
@@ -0,0 +1,8 @@
+--INI--
+HTML.AllowedElements = b,i,p,a
+HTML.AllowedAttributes = a.href,*.id
+--HTML--
+<p>Par.</p>
+<p>Para<a href="http://google.com/">gr</a>aph</p>
+Text<b>Bol<i>d</i></b>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-remove.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-remove.htmlt
new file mode 100644
index 0000000000..2b6b8eea6d
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-remove.htmlt
@@ -0,0 +1,8 @@
+--INI--
+HTML.AllowedElements = b,i,p,a
+HTML.AllowedAttributes = a.href,*.id
+--HTML--
+<span>Not allowed</span><a class="mef" id="foobar">Remove id too!</a>
+--EXPECT--
+Not allowed<a>Remove id too!</a>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/basic.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/basic.htmlt
new file mode 100644
index 0000000000..4c1f42778a
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/basic.htmlt
@@ -0,0 +1,5 @@
+--HTML--
+<b>basic</b>
+--EXPECT--
+<b>basic</b>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-preserve.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-preserve.htmlt
new file mode 100644
index 0000000000..d8882fe222
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-preserve.htmlt
@@ -0,0 +1,6 @@
+--INI--
+HTML.ForbiddenElements = b
+HTML.ForbiddenAttributes = a@href
+--HTML--
+<p>foo</p>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-remove.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-remove.htmlt
new file mode 100644
index 0000000000..1b59858738
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-remove.htmlt
@@ -0,0 +1,8 @@
+--INI--
+HTML.ForbiddenElements = b
+HTML.ForbiddenAttributes = a@href
+--HTML--
+<b>Foo<a href="bar">bar</a></b>
+--EXPECT--
+Foo<a>bar</a>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-preserve.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-preserve.htmlt
new file mode 100644
index 0000000000..a5fe3f849d
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-preserve.htmlt
@@ -0,0 +1,5 @@
+--INI--
+CSS.AllowedProperties = color,background-color
+--HTML--
+<div style="color:#f00;background-color:#ded;">red</div>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-remove.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-remove.htmlt
new file mode 100644
index 0000000000..644b7001a3
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-remove.htmlt
@@ -0,0 +1,7 @@
+--INI--
+CSS.AllowedProperties = color,background-color
+--HTML--
+<div style="color:#f00;border:1px solid #000">red</div>
+--EXPECT--
+<div style="color:#f00;">red</div>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/disable-uri.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/disable-uri.htmlt
new file mode 100644
index 0000000000..fa692e4440
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/disable-uri.htmlt
@@ -0,0 +1,6 @@
+--INI--
+URI.Disable = true
+--HTML--
+<img src="foobar" />
+--EXPECT--
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/double-youtube.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/double-youtube.htmlt
new file mode 100644
index 0000000000..a46ce4736a
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/double-youtube.htmlt
@@ -0,0 +1,6 @@
+--INI--
+HTML.SafeObject = true
+Output.FlashCompat = true
+--HTML--
+<object width="425" height="350" data="http://www.youtube.com/v/BdU--T8rLns" type="application/x-shockwave-flash"><param name="allowScriptAccess" value="never" /><param name="allowNetworking" value="internal" /><param name="movie" value="http://www.youtube.com/v/BdU--T8rLns" /><param name="wmode" value="window" /></object>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/empty.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/empty.htmlt
new file mode 100644
index 0000000000..9094c47b04
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/empty.htmlt
@@ -0,0 +1,6 @@
+--INI--
+
+--HTML--
+
+--EXPECT--
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/file-uri.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/file-uri.htmlt
new file mode 100644
index 0000000000..5b9e34a8c4
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/file-uri.htmlt
@@ -0,0 +1,5 @@
+--INI--
+URI.AllowedSchemes = file
+--HTML--
+<a href="file:///foo">foo</a>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-default.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-default.htmlt
new file mode 100644
index 0000000000..1c1460f2c5
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-default.htmlt
@@ -0,0 +1,5 @@
+--HTML--
+<span id="moon">foobar</span>
+--EXPECT--
+<span>foobar</span>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-enabled.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-enabled.htmlt
new file mode 100644
index 0000000000..70ddcf99f5
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-enabled.htmlt
@@ -0,0 +1,6 @@
+--INI--
+Attr.EnableID = true
+--HTML--
+<span id="moon">foobar</span>
+<img id="folly" src="folly.png" alt="Omigosh!" />
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-img.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-img.htmlt
new file mode 100644
index 0000000000..12755bea35
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-img.htmlt
@@ -0,0 +1,8 @@
+--INI--
+Attr.EnableID = true
+Core.LexerImpl = DirectLex
+--HTML--
+<img src="img_11775.jpg" alt="[Img #11775]" id="EMBEDDED_IMG_11775" >
+--EXPECT--
+<img src="img_11775.jpg" alt="[Img #11775]" id="EMBEDDED_IMG_11775" />
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-name-mix.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-name-mix.htmlt
new file mode 100644
index 0000000000..a48da8e625
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/id-name-mix.htmlt
@@ -0,0 +1,11 @@
+--INI--
+Attr.EnableID = true
+--HTML--
+<a name="foo" id="foo">Test</a>
+<a name="foo">Test2</a>
+<a name="bar" id="baz">Test3</a>
+--EXPECT--
+<a name="foo" id="foo">Test</a>
+<a>Test2</a>
+<a name="bar" id="baz">Test3</a>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-list-loop.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-list-loop.htmlt
new file mode 100644
index 0000000000..0a63e89550
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-list-loop.htmlt
@@ -0,0 +1,5 @@
+--HTML--
+<i><ul></ul></i>
+--EXPECT--
+<i></i><i></i>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-wraps-block.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-wraps-block.htmlt
new file mode 100644
index 0000000000..da6bae6892
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-wraps-block.htmlt
@@ -0,0 +1,5 @@
+--HTML--
+<a href="foo.html"><h1>Foobar</h1></a>
+--EXPECT--
+<a href="foo.html"></a><h1><a href="foo.html">Foobar</a></h1><a href="foo.html"></a>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/list-nesting.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/list-nesting.htmlt
new file mode 100644
index 0000000000..9446400991
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/list-nesting.htmlt
@@ -0,0 +1,7 @@
+--INI--
+Core.LexerImpl = DirectLex
+--HTML--
+<ul><li>Sublist 1</li><ul><li>Bullet</li></ul><li>Sublist 2</li><ol><li>Billet</li></ol></ul>
+--EXPECT--
+<ul><li>Sublist 1<ul><li>Bullet</li></ul></li><li>Sublist 2<ol><li>Billet</li></ol></li></ul>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/munge-extra.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/munge-extra.htmlt
new file mode 100644
index 0000000000..9906155e53
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/munge-extra.htmlt
@@ -0,0 +1,13 @@
+--SKIPIF--
+return !function_exists('hash_hmac');
+--INI--
+URI.Munge = "/redirect?s=%s&t=%t&r=%r&n=%n&m=%m&p=%p"
+URI.MungeSecretKey = "foo"
+URI.MungeResources = true
+--HTML--
+<a href="http://example.com">Link</a>
+<img src="http://example.com" style="background-image:url(http://example.com);" alt="example.com" />
+--EXPECT--
+<a href="/redirect?s=http%3A%2F%2Fexample.com&amp;t=c763c4a30204eee8470a3292e0f0cd91a639654d039d45f1495a50207847e954&amp;r=&amp;n=a&amp;m=href&amp;p=">Link</a>
+<img src="/redirect?s=http%3A%2F%2Fexample.com&amp;t=c763c4a30204eee8470a3292e0f0cd91a639654d039d45f1495a50207847e954&amp;r=1&amp;n=img&amp;m=src&amp;p=" style="background-image:url(&quot;/redirect?s=http%3A%2F%2Fexample.com&amp;t=c763c4a30204eee8470a3292e0f0cd91a639654d039d45f1495a50207847e954&amp;r=1&amp;n=img&amp;m=style&amp;p=background-image&quot;);" alt="example.com" />
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/munge.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/munge.htmlt
new file mode 100644
index 0000000000..827c216e63
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/munge.htmlt
@@ -0,0 +1,52 @@
+--INI--
+URI.Munge = "/r/%s"
+URI.AllowedSchemes = http,ftp,file
+--HTML--
+<a href="google.com">foo</a>
+<a href="/google.com">foo</a>
+<a href="//google.com">foo</a>
+<a href="///google.com">foo</a>
+<a href="////google.com">foo</a>
+
+<a href="http:google.com">foo</a>
+<a href="http:/google.com">foo</a>
+<a href="http://google.com">foo</a>
+<a href="http:///google.com">foo</a>
+<a href="http:////google.com">foo</a>
+
+<a href="ftp:google.com">foo</a>
+<a href="ftp:/google.com">foo</a>
+<a href="ftp://google.com">foo</a>
+<a href="ftp:///google.com">foo</a>
+<a href="ftp:////google.com">foo</a>
+
+<a href="file:google.com">foo</a>
+<a href="file:/google.com">foo</a>
+<a href="file://google.com">foo</a>
+<a href="file:///google.com">foo</a>
+<a href="file:////google.com">foo</a>
+--EXPECT--
+<a href="google.com">foo</a>
+<a href="/google.com">foo</a>
+<a href="/r/%2F%2Fgoogle.com">foo</a>
+<a href="/google.com">foo</a>
+<a>foo</a>
+
+<a href="google.com">foo</a>
+<a href="/google.com">foo</a>
+<a href="/r/http%3A%2F%2Fgoogle.com">foo</a>
+<a href="/google.com">foo</a>
+<a>foo</a>
+
+<a>foo</a>
+<a>foo</a>
+<a href="/r/ftp%3A%2F%2Fgoogle.com">foo</a>
+<a>foo</a>
+<a>foo</a>
+
+<a href="file:google.com">foo</a>
+<a href="file:/google.com">foo</a>
+<a href="file://google.com">foo</a>
+<a href="file:///google.com">foo</a>
+<a href="file:////google.com">foo</a>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/name.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/name.htmlt
new file mode 100644
index 0000000000..1713ed417d
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/name.htmlt
@@ -0,0 +1,6 @@
+--INI--
+Attr.EnableID = true
+HTML.Doctype = "XHTML 1.0 Strict"
+--HTML--
+<a name="asdf"></a>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-googlemaps.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-googlemaps.htmlt
new file mode 100644
index 0000000000..40fac62d56
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-googlemaps.htmlt
@@ -0,0 +1,8 @@
+--INI--
+HTML.SafeIframe = true
+URI.SafeIframeRegexp = "%^http://maps.google.com/%"
+--HTML--
+<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/?ie=UTF8&amp;ll=37.0625,-95.677068&amp;spn=24.455808,37.353516&amp;z=4&amp;output=embed"></iframe>
+--EXPECT--
+<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/?ie=UTF8&amp;ll=37.0625,-95.677068&amp;spn=24.455808,37.353516&amp;z=4&amp;output=embed"></iframe>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-invalid.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-invalid.htmlt
new file mode 100644
index 0000000000..5b366da541
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-invalid.htmlt
@@ -0,0 +1,7 @@
+--INI--
+HTML.SafeIframe = true
+--HTML--
+<iframe src="http://www.example.com/"></iframe>
+--EXPECT--
+<iframe></iframe>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-youtube.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-youtube.htmlt
new file mode 100644
index 0000000000..1abc2c8279
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-youtube.htmlt
@@ -0,0 +1,8 @@
+--INI--
+HTML.SafeIframe = true
+URI.SafeIframeRegexp = "%^http://www.youtube.com/embed/%"
+--HTML--
+<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/RVtEQxH7PWA" frameborder="0" allowfullscreen></iframe>
+--EXPECT--
+<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/RVtEQxH7PWA" frameborder="0"></iframe>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe.htmlt
new file mode 100644
index 0000000000..7c0b60d2f1
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe.htmlt
@@ -0,0 +1,14 @@
+--INI--
+HTML.SafeIframe = true
+URI.SafeIframeRegexp = "%(^http://www.example.com/|^https?://dev.example.com/)%"
+--HTML--
+<iframe src="http://www.example.com/"></iframe>
+<iframe src="http://malicious.host.com/?http://www.example.com/"></iframe>
+<iframe src="http://dev.example.com/"></iframe>
+<iframe src="https://dev.example.com/"></iframe>
+--EXPECT--
+<iframe src="http://www.example.com/"></iframe>
+<iframe></iframe>
+<iframe src="http://dev.example.com/"></iframe>
+<iframe src="https://dev.example.com/"></iframe>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt
new file mode 100644
index 0000000000..e30edc37a2
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt
@@ -0,0 +1,12 @@
+--SKIPIF--
+return !function_exists('hash_hmac');
+--INI--
+HTML.SafeObject = true
+HTML.SafeEmbed = true
+URI.Munge = "/redirect.php?url=%s&check=%t"
+URI.MungeSecretKey = "foo"
+--HTML--
+<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Oq3FV_zdyy0&hl=en"></param><embed src="http://www.youtube.com/v/Oq3FV_zdyy0&hl=en" type="application/x-shockwave-flash" width="425" height="344"></embed></object>
+--EXPECT--
+<object width="425" height="344" data="http://www.youtube.com/v/Oq3FV_zdyy0&amp;hl=en" type="application/x-shockwave-flash"><param name="allowScriptAccess" value="never" /><param name="allowNetworking" value="internal" /><param name="movie" value="http://www.youtube.com/v/Oq3FV_zdyy0&amp;hl=en" /><embed src="http://www.youtube.com/v/Oq3FV_zdyy0&amp;hl=en" type="application/x-shockwave-flash" width="425" height="344" allowscriptaccess="never" allownetworking="internal" /></object>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed.htmlt
new file mode 100644
index 0000000000..f4bb0ff091
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed.htmlt
@@ -0,0 +1,8 @@
+--INI--
+HTML.SafeObject = true
+HTML.SafeEmbed = true
+--HTML--
+<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Oq3FV_zdyy0&hl=en"></param><embed src="http://www.youtube.com/v/Oq3FV_zdyy0&hl=en" type="application/x-shockwave-flash" width="425" height="344"></embed></object>
+--EXPECT--
+<object width="425" height="344" data="http://www.youtube.com/v/Oq3FV_zdyy0&amp;hl=en" type="application/x-shockwave-flash"><param name="allowScriptAccess" value="never" /><param name="allowNetworking" value="internal" /><param name="movie" value="http://www.youtube.com/v/Oq3FV_zdyy0&amp;hl=en" /><embed src="http://www.youtube.com/v/Oq3FV_zdyy0&amp;hl=en" type="application/x-shockwave-flash" width="425" height="344" allowscriptaccess="never" allownetworking="internal" /></object>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-bare.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-bare.htmlt
new file mode 100644
index 0000000000..f85c2fb5ef
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-bare.htmlt
@@ -0,0 +1,9 @@
+--INI--
+HTML.Trusted = true
+--HTML--
+<script type="text/javascript">alert("<This is compatible with XHTML>");</script>
+--EXPECT--
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+alert("<This is compatible with XHTML>");
+//--><!]]></script>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-cdata.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-cdata.htmlt
new file mode 100644
index 0000000000..e7d6d7f5b5
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-cdata.htmlt
@@ -0,0 +1,11 @@
+--INI--
+HTML.Trusted = true
+--HTML--
+<script type="text/javascript"><![CDATA[
+alert("<This is compatible with XHTML>");
+]]></script>
+--EXPECT--
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+alert("<This is compatible with XHTML>");
+//--><!]]></script>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-comment.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-comment.htmlt
new file mode 100644
index 0000000000..006901919c
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-comment.htmlt
@@ -0,0 +1,11 @@
+--INI--
+HTML.Trusted = true
+--HTML--
+<script type="text/javascript"><!--
+alert("<This is compatible with XHTML>");
+//--></script>
+--EXPECT--
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+alert("<This is compatible with XHTML>");
+//--><!]]></script>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-dbl-comment.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-dbl-comment.htmlt
new file mode 100644
index 0000000000..ef899b5972
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-dbl-comment.htmlt
@@ -0,0 +1,11 @@
+--INI--
+HTML.Trusted = true
+--HTML--
+<script type="text/javascript"><![CDATA[
+alert("<This is compatible with XHTML>");
+//]]></script>
+--EXPECT--
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+alert("<This is compatible with XHTML>");
+//--><!]]></script>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-ideal.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-ideal.htmlt
new file mode 100644
index 0000000000..70510687c3
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/script-ideal.htmlt
@@ -0,0 +1,11 @@
+--INI--
+HTML.Trusted = true
+--HTML--
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+alert("<This is compatible with XHTML>");
+//--><!]]></script>
+--EXPECT--
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+alert("<This is compatible with XHTML>");
+//--><!]]></script>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/secure-munge.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/secure-munge.htmlt
new file mode 100644
index 0000000000..7c41cc9ce6
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/secure-munge.htmlt
@@ -0,0 +1,12 @@
+--SKIPIF--
+return !function_exists('hash_hmac');
+--INI--
+URI.Munge = "/redirect.php?url=%s&check=%t"
+URI.MungeSecretKey = "foo"
+--HTML--
+<a href="http://localhost">foo</a>
+<img src="http://localhost" alt="local" />
+--EXPECT--
+<a href="/redirect.php?url=http%3A%2F%2Flocalhost&amp;check=c0efad89696082f5cb925d28636b0f4260f346391c92c70c8e9eba72591c2a73">foo</a>
+<img src="http://localhost" alt="local" />
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-preserve-yen.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-preserve-yen.htmlt
new file mode 100644
index 0000000000..862ecd970c
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-preserve-yen.htmlt
@@ -0,0 +1,8 @@
+--SKIPIF--
+if (!HTMLPurifier_Encoder::iconvAvailable()) return true;
+--INI--
+Core.Encoding = "Shift_JIS"
+Core.EscapeNonASCIICharacters = true
+--HTML--
+<b style="font-family:'&#165;';">111</b>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-remove-yen.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-remove-yen.htmlt
new file mode 100644
index 0000000000..aae7598dd9
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-remove-yen.htmlt
@@ -0,0 +1,9 @@
+--SKIPIF--
+if (!HTMLPurifier_Encoder::iconvAvailable()) return true;
+--INI--
+Core.Encoding = Shift_JIS
+--HTML--
+<b style="font-family:'&#165;';">111</b>
+--EXPECT--
+<b style="font-family:'';">111</b>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote-with-inline.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote-with-inline.htmlt
new file mode 100644
index 0000000000..a6eb0ec660
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote-with-inline.htmlt
@@ -0,0 +1,7 @@
+--INI--
+HTML.Doctype = "XHTML 1.0 Strict"
+--HTML--
+<blockquote>Illegal <b>contents</b></blockquote>
+--EXPECT--
+<blockquote><p>Illegal <b>contents</b></p></blockquote>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote.htmlt
new file mode 100644
index 0000000000..b61e8dc070
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote.htmlt
@@ -0,0 +1,7 @@
+--INI--
+HTML.Strict = true
+--HTML--
+<blockquote>Illegal contents</blockquote>
+--EXPECT--
+<blockquote><p>Illegal contents</p></blockquote>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-underline.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-underline.htmlt
new file mode 100644
index 0000000000..a2e18b1c99
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-underline.htmlt
@@ -0,0 +1,7 @@
+--INI--
+HTML.Strict = true
+--HTML--
+<u>Illegal underline</u>
+--EXPECT--
+<span style="text-decoration:underline;">Illegal underline</span>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/style-onload.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/style-onload.htmlt
new file mode 100644
index 0000000000..8782bdc609
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/style-onload.htmlt
@@ -0,0 +1,6 @@
+--INI--
+Core.CollectErrors = true
+--HTML--
+<style/onload = !-alert&#x28;1&#x29;>
+--EXPECT--
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/tidy-background.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/tidy-background.htmlt
new file mode 100644
index 0000000000..08bda26781
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/tidy-background.htmlt
@@ -0,0 +1,5 @@
+--HTML--
+<table background="logo.png"><tr><td>asdf</td></tr></table>
+--EXPECT--
+<table style="background-image:url(&quot;logo.png&quot;);"><tr><td>asdf</td></tr></table>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-required.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-required.htmlt
new file mode 100644
index 0000000000..62dc159d07
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-required.htmlt
@@ -0,0 +1,6 @@
+--INI--
+HTML.Trusted = true
+--HTML--
+<ul><!-- Foo --></ul>
+--EXPECT--
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-table.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-table.htmlt
new file mode 100644
index 0000000000..89d80febf3
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-table.htmlt
@@ -0,0 +1,5 @@
+--INI--
+HTML.Trusted = true
+--HTML--
+<table><!-- foo --><tr><td>Foo</td></tr></table>
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments.htmlt
new file mode 100644
index 0000000000..93b4a35a69
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments.htmlt
@@ -0,0 +1,5 @@
+--INI--
+HTML.Trusted = true
+--HTML--
+<!-- Foobar -->
+--# vim: et sw=4 sts=4
diff --git a/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/whitespace-preserve.htmlt b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/whitespace-preserve.htmlt
new file mode 100644
index 0000000000..861bddaf43
--- /dev/null
+++ b/library/ezyang/htmlpurifier/tests/HTMLPurifier/HTMLT/whitespace-preserve.htmlt
@@ -0,0 +1,3 @@
+--HTML--
+Foo<b> </b>bar
+--# vim: et sw=4 sts=4