00001 <?php 00002 00003 00004 class SanitizerTest extends PHPUnit_Framework_TestCase { 00005 00006 function setUp() { 00007 AutoLoader::loadClass( 'Sanitizer' ); 00008 } 00009 00010 function testDecodeNamedEntities() { 00011 $this->assertEquals( 00012 "\xc3\xa9cole", 00013 Sanitizer::decodeCharReferences( 'école' ), 00014 'decode named entities' 00015 ); 00016 } 00017 00018 function testDecodeNumericEntities() { 00019 $this->assertEquals( 00020 "\xc4\x88io bonas dans l'\xc3\xa9cole!", 00021 Sanitizer::decodeCharReferences( "Ĉio bonas dans l'école!" ), 00022 'decode numeric entities' 00023 ); 00024 } 00025 00026 function testDecodeMixedEntities() { 00027 $this->assertEquals( 00028 "\xc4\x88io bonas dans l'\xc3\xa9cole!", 00029 Sanitizer::decodeCharReferences( "Ĉio bonas dans l'école!" ), 00030 'decode mixed numeric/named entities' 00031 ); 00032 } 00033 00034 function testDecodeMixedComplexEntities() { 00035 $this->assertEquals( 00036 "\xc4\x88io bonas dans l'\xc3\xa9cole! (mais pas Ĉio dans l'école)", 00037 Sanitizer::decodeCharReferences( 00038 "Ĉio bonas dans l'école! (mais pas &#x108;io dans l'&eacute;cole)" 00039 ), 00040 'decode mixed complex entities' 00041 ); 00042 } 00043 00044 function testInvalidAmpersand() { 00045 $this->assertEquals( 00046 'a & b', 00047 Sanitizer::decodeCharReferences( 'a & b' ), 00048 'Invalid ampersand' 00049 ); 00050 } 00051 00052 function testInvalidEntities() { 00053 $this->assertEquals( 00054 '&foo;', 00055 Sanitizer::decodeCharReferences( '&foo;' ), 00056 'Invalid named entity' 00057 ); 00058 } 00059 00060 function testInvalidNumberedEntities() { 00061 $this->assertEquals( UTF8_REPLACEMENT, Sanitizer::decodeCharReferences( "�" ), 'Invalid numbered entity' ); 00062 } 00063 00064 function testSelfClosingTag() { 00065 $GLOBALS['wgUseTidy'] = false; 00066 $this->assertEquals( 00067 '<div>Hello world</div>', 00068 Sanitizer::removeHTMLtags( '<div>Hello world</div />' ), 00069 'Self-closing closing div' 00070 ); 00071 } 00072 } 00073