123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- class HTMLPurifier_Strategy_RemoveForeignElementsTest extends HTMLPurifier_StrategyHarness
- {
- function setUp() {
- parent::setUp();
- $this->obj = new HTMLPurifier_Strategy_RemoveForeignElements();
- }
- function testBlankInput() {
- $this->assertResult('');
- }
- function testPreserveRecognizedElements() {
- $this->assertResult('This is <b>bold text</b>.');
- }
- function testRemoveForeignElements() {
- $this->assertResult(
- '<asdf>Bling</asdf><d href="bang">Bong</d><foobar />',
- 'BlingBong'
- );
- }
- function testRemoveScriptAndContents() {
- $this->assertResult(
- '<script>alert();</script>',
- ''
- );
- }
- function testRemoveStyleAndContents() {
- $this->assertResult(
- '<style>.foo {blink;}</style>',
- ''
- );
- }
- function testRemoveOnlyScriptTagsLegacy() {
- $this->config->set('Core.RemoveScriptContents', false);
- $this->assertResult(
- '<script>alert();</script>',
- 'alert();'
- );
- }
- function testRemoveOnlyScriptTags() {
- $this->config->set('Core.HiddenElements', array());
- $this->assertResult(
- '<script>alert();</script>',
- 'alert();'
- );
- }
- function testRemoveInvalidImg() {
- $this->assertResult('<img />', '');
- }
- function testPreserveValidImg() {
- $this->assertResult('<img src="foobar.gif" alt="foobar.gif" />');
- }
- function testPreserveInvalidImgWhenRemovalIsDisabled() {
- $this->config->set('Core.RemoveInvalidImg', false);
- $this->assertResult('<img />');
- }
- function testTextifyCommentedScriptContents() {
- $this->config->set('HTML.Trusted', true);
- $this->config->set('Output.CommentScriptContents', false); // simplify output
- $this->assertResult(
- '<script type="text/javascript"><!--
- alert(<b>bold</b>);
- // --></script>',
- '<script type="text/javascript">
- alert(<b>bold</b>);
- // </script>'
- );
- }
- function testRequiredAttributesTestNotPerformedOnEndTag() {
- $def = $this->config->getHTMLDefinition(true);
- $def->addElement('f', 'Block', 'Optional: #PCDATA', false, array('req*' => 'Text'));
- $this->assertResult('<f req="text">Foo</f> Bar');
- }
- function testPreserveCommentsWithHTMLTrusted() {
- $this->config->set('HTML.Trusted', true);
- $this->assertResult('<!-- foo -->');
- }
- function testRemoveTrailingHyphensInComment() {
- $this->config->set('HTML.Trusted', true);
- $this->assertResult('<!-- foo ----->', '<!-- foo -->');
- }
- function testCollapseDoubleHyphensInComment() {
- $this->config->set('HTML.Trusted', true);
- $this->assertResult('<!-- bo --- asdf--as -->', '<!-- bo - asdf-as -->');
- }
- function testPreserveCommentsWithLookup() {
- $this->config->set('HTML.AllowedComments', array('allowed'));
- $this->assertResult('<!-- allowed --><!-- not allowed -->', '<!-- allowed -->');
- }
- function testPreserveCommentsWithRegexp() {
- $this->config->set('HTML.AllowedCommentsRegexp', '/^allowed[1-9]$/');
- $this->assertResult('<!-- allowed1 --><!-- not allowed -->', '<!-- allowed1 -->');
- }
- }
- // vim: et sw=4 sts=4
|