Follow-up r61938: also port SearchUpdate test
[lhc/web/wiklou.git] / tests / SanitizerTest.php
1 <?php
2
3 global $IP;
4 require_once( "$IP/includes/Sanitizer.php" );
5
6 class SanitizerTest extends PHPUnit_Framework_TestCase {
7
8 function testDecodeNamedEntities() {
9 $this->assertEquals(
10 "\xc3\xa9cole",
11 Sanitizer::decodeCharReferences( '&eacute;cole' ),
12 'decode named entities'
13 );
14 }
15
16 function testDecodeNumericEntities() {
17 $this->assertEquals(
18 "\xc4\x88io bonas dans l'\xc3\xa9cole!",
19 Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&#233;cole!" ),
20 'decode numeric entities'
21 );
22 }
23
24 function testDecodeMixedEntities() {
25 $this->assertEquals(
26 "\xc4\x88io bonas dans l'\xc3\xa9cole!",
27 Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&eacute;cole!" ),
28 'decode mixed numeric/named entities'
29 );
30 }
31
32 function testDecodeMixedComplexEntities() {
33 $this->assertEquals(
34 "\xc4\x88io bonas dans l'\xc3\xa9cole! (mais pas &#x108;io dans l'&eacute;cole)",
35 Sanitizer::decodeCharReferences(
36 "&#x108;io bonas dans l'&eacute;cole! (mais pas &amp;#x108;io dans l'&#38;eacute;cole)"
37 ),
38 'decode mixed complex entities'
39 );
40 }
41
42 function testInvalidAmpersand() {
43 $this->assertEquals(
44 'a & b',
45 Sanitizer::decodeCharReferences( 'a & b' ),
46 'Invalid ampersand'
47 );
48 }
49
50 function testInvalidEntities() {
51 $this->assertEquals(
52 '&foo;',
53 Sanitizer::decodeCharReferences( '&foo;' ),
54 'Invalid named entity'
55 );
56 }
57
58 function testInvalidNumberedEntities() {
59 $this->assertEquals( UTF8_REPLACEMENT, Sanitizer::decodeCharReferences( "&#88888888888888;" ), 'Invalid numbered entity' );
60 }
61
62 function testSelfClosingTag() {
63 $GLOBALS['wgUseTidy'] = false;
64 $this->assertEquals(
65 '<div>Hello world</div>',
66 Sanitizer::removeHTMLtags( '<div>Hello world</div />' ),
67 'Self-closing closing div'
68 );
69 }
70 }
71