summaryrefslogtreecommitdiff
path: root/t/inc/Sanitizer.t
blob: ae2c9a23d088f365422f98aa8e670582b72ed884 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env php
<?php

require 't/Test.php';

plan( 13 );

define( 'MEDIAWIKI', 1 );
require_ok( 'includes/Defines.php' );
require_ok( 'includes/GlobalFunctions.php' );
require_ok( 'includes/Sanitizer.php' );
require_ok( 'includes/normal/UtfNormal.php' );
require_ok( 'includes/ProfilerStub.php' ); # For removeHTMLtags


#
# decodeCharReferences
#

cmp_ok(
	Sanitizer::decodeCharReferences( '&eacute;cole' ),
	'==',
	"\xc3\xa9cole",
	'decode named entities'
);

cmp_ok(
	Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&#233;cole!" ),
	'==',
	"\xc4\x88io bonas dans l'\xc3\xa9cole!",
	'decode numeric entities'
);

cmp_ok(
	Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&eacute;cole!" ),
	'==',
	"\xc4\x88io bonas dans l'\xc3\xa9cole!",
	'decode mixed numeric/named entities'
);

cmp_ok(
	Sanitizer::decodeCharReferences(
		"&#x108;io bonas dans l'&eacute;cole! (mais pas &amp;#x108;io dans l'&#38;eacute;cole)"
	),
	'==',
	"\xc4\x88io bonas dans l'\xc3\xa9cole! (mais pas &#x108;io dans l'&eacute;cole)",
	'decode mixed complex entities'
);

cmp_ok( Sanitizer::decodeCharReferences( 'a & b' ), '==', 'a & b', 'Invalid ampersand' );

cmp_ok( Sanitizer::decodeCharReferences( '&foo;' ), '==', '&foo;', 'Invalid named entity' );

cmp_ok( Sanitizer::decodeCharReferences( "&#88888888888888;" ), '==', UTF8_REPLACEMENT, 'Invalid numbered entity' );

$wgUseTidy = false;
cmp_ok(
	Sanitizer::removeHTMLtags( '<div>Hello world</div />' ),
	'==',
	'<div>Hello world</div>',
	'Self-closing closing div'
);

/* vim: set filetype=php: */