config->set ( 'Cache.DefinitionImpl', null ); parent::expectError ( $error ); } public function test_parseTinyMCEAllowedList() { $def = new HTMLPurifier_HTMLDefinition (); // note: this is case-sensitive, but its config schema // counterpart is not. This is generally a good thing for users, // but it's a slight internal inconsistency $this->assertEqual ( $def->parseTinyMCEAllowedList ( '' ), array ( array (), array () ) ); $this->assertEqual ( $def->parseTinyMCEAllowedList ( 'a,b,c' ), array ( array ( 'a' => true, 'b' => true, 'c' => true ), array () ) ); $this->assertEqual ( $def->parseTinyMCEAllowedList ( 'a[x|y|z]' ), array ( array ( 'a' => true ), array ( 'a.x' => true, 'a.y' => true, 'a.z' => true ) ) ); $this->assertEqual ( $def->parseTinyMCEAllowedList ( '*[id]' ), array ( array (), array ( '*.id' => true ) ) ); $this->assertEqual ( $def->parseTinyMCEAllowedList ( 'a[*]' ), array ( array ( 'a' => true ), array ( 'a.*' => true ) ) ); $this->assertEqual ( $def->parseTinyMCEAllowedList ( 'span[style],strong,a[href|title]' ), array ( array ( 'span' => true, 'strong' => true, 'a' => true ), array ( 'span.style' => true, 'a.href' => true, 'a.title' => true ) ) ); $this->assertEqual ( // alternate form: $def->parseTinyMCEAllowedList ( 'span[style] strong a[href|title] ' ), $val = array ( array ( 'span' => true, 'strong' => true, 'a' => true ), array ( 'span.style' => true, 'a.href' => true, 'a.title' => true ) ) ); $this->assertEqual ( $def->parseTinyMCEAllowedList ( ' span [ style ], strong' . "\n\t" . 'a[href | title]' ), $val ); } public function test_Allowed() { $config1 = HTMLPurifier_Config::create ( array ( 'HTML.AllowedElements' => array ( 'b', 'i', 'p', 'a' ), 'HTML.AllowedAttributes' => array ( 'a@href', '*@id' ) ) ); $config2 = HTMLPurifier_Config::create ( array ( 'HTML.Allowed' => 'b,i,p,a[href],*[id]' ) ); $this->assertEqual ( $config1->getHTMLDefinition (), $config2->getHTMLDefinition () ); } public function assertPurification_AllowedElements_p() { $this->assertPurification ( '

Jelly

', '

Jelly

' ); } public function test_AllowedElements() { $this->config->set ( 'HTML.AllowedElements', 'p' ); $this->assertPurification_AllowedElements_p (); } public function test_AllowedElements_multiple() { $this->config->set ( 'HTML.AllowedElements', 'p,div' ); $this->assertPurification ( '

Jelly

', '

Jelly

' ); } public function test_AllowedElements_invalidElement() { $this->config->set ( 'HTML.AllowedElements', 'obviously_invalid,p' ); $this->expectError ( new PatternExpectation ( "/Element 'obviously_invalid' is not supported/" ) ); $this->assertPurification_AllowedElements_p (); } public function test_AllowedElements_invalidElement_xssAttempt() { $this->config->set ( 'HTML.AllowedElements', '