]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - maintenance/tests/SanitizerTest.php
MediaWiki 1.16.0
[autoinstallsdev/mediawiki.git] / maintenance / tests / SanitizerTest.php
diff --git a/maintenance/tests/SanitizerTest.php b/maintenance/tests/SanitizerTest.php
new file mode 100644 (file)
index 0000000..8a2287d
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+
+class SanitizerTest extends PHPUnit_Framework_TestCase {
+
+       function setUp() {
+               AutoLoader::loadClass( 'Sanitizer' );
+       }
+
+       function testDecodeNamedEntities() {
+               $this->assertEquals(
+                       "\xc3\xa9cole",
+                       Sanitizer::decodeCharReferences( '&eacute;cole' ),
+                       'decode named entities'
+               );
+       }
+
+       function testDecodeNumericEntities() {
+               $this->assertEquals(
+                       "\xc4\x88io bonas dans l'\xc3\xa9cole!",
+                       Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&#233;cole!" ),
+                       'decode numeric entities'
+               );
+       }
+
+       function testDecodeMixedEntities() {
+               $this->assertEquals(
+                       "\xc4\x88io bonas dans l'\xc3\xa9cole!",
+                       Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&eacute;cole!" ),
+                       'decode mixed numeric/named entities'
+               );
+       }
+
+       function testDecodeMixedComplexEntities() {
+               $this->assertEquals(
+                       "\xc4\x88io bonas dans l'\xc3\xa9cole! (mais pas &#x108;io dans l'&eacute;cole)",
+                       Sanitizer::decodeCharReferences(
+                               "&#x108;io bonas dans l'&eacute;cole! (mais pas &amp;#x108;io dans l'&#38;eacute;cole)"
+                       ),
+                       'decode mixed complex entities'
+               );
+       }
+
+       function testInvalidAmpersand() {
+               $this->assertEquals(
+                       'a & b',
+                       Sanitizer::decodeCharReferences( 'a & b' ),
+                       'Invalid ampersand'
+               );
+       }
+
+       function testInvalidEntities() {
+               $this->assertEquals(
+                       '&foo;',
+                       Sanitizer::decodeCharReferences( '&foo;' ),
+                       'Invalid named entity'
+               );
+       }
+
+       function testInvalidNumberedEntities() {
+               $this->assertEquals( UTF8_REPLACEMENT, Sanitizer::decodeCharReferences( "&#88888888888888;" ), 'Invalid numbered entity' );
+       }
+
+       function testSelfClosingTag() {
+               $GLOBALS['wgUseTidy'] = false;
+               $this->assertEquals(
+                       '<div>Hello world</div>',
+                       Sanitizer::removeHTMLtags( '<div>Hello world</div />' ),
+                       'Self-closing closing div'
+               );
+       }
+}
+