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