Release 2.1.0, merged in 1313 to HEAD.
[htmlpurifier.git] / tests / HTMLPurifier / URIDefinitionTest.php
blob149f89b28d4add86291868ae56f00cdf55d1b110
1 <?php
3 require_once 'HTMLPurifier/URIHarness.php';
4 require_once 'HTMLPurifier/URIDefinition.php';
6 class HTMLPurifier_URIDefinitionTest extends HTMLPurifier_URIHarness
9 function createFilterMock($expect = true, $result = true) {
10 generate_mock_once('HTMLPurifier_URIFilter');
11 $mock = new HTMLPurifier_URIFilterMock();
12 if ($expect) $mock->expectOnce('filter');
13 else $mock->expectNever('filter');
14 $mock->setReturnValue('filter', $result);
15 return $mock;
18 function test_filter() {
19 $def = new HTMLPurifier_URIDefinition();
20 $def->filters[] = $this->createFilterMock();
21 $def->filters[] = $this->createFilterMock();
22 $uri = $this->createURI('test');
23 $this->assertTrue($def->filter($uri, $this->config, $this->context));
26 function test_filter_earlyAbortIfFail() {
27 $def = new HTMLPurifier_URIDefinition();
28 $def->filters[] = $this->createFilterMock(true, false);
29 $def->filters[] = $this->createFilterMock(false); // never called
30 $uri = $this->createURI('test');
31 $this->assertFalse($def->filter($uri, $this->config, $this->context));
34 function test_setupMemberVariables_collisionPrecedenceIsHostBaseScheme() {
35 $this->config->set('URI', 'Host', $host = 'example.com');
36 $this->config->set('URI', 'Base', $base = 'http://sub.example.com/foo/bar.html');
37 $this->config->set('URI', 'DefaultScheme', 'ftp');
38 $def = new HTMLPurifier_URIDefinition();
39 $def->setupMemberVariables($this->config);
40 $this->assertIdentical($def->host, $host);
41 $this->assertIdentical($def->base, $this->createURI($base));
42 $this->assertIdentical($def->defaultScheme, 'http'); // not ftp!
45 function test_setupMemberVariables_onlyScheme() {
46 $this->config->set('URI', 'DefaultScheme', 'ftp');
47 $def = new HTMLPurifier_URIDefinition();
48 $def->setupMemberVariables($this->config);
49 $this->assertIdentical($def->defaultScheme, 'ftp');
52 function test_setupMemberVariables_onlyBase() {
53 $this->config->set('URI', 'Base', 'http://sub.example.com/foo/bar.html');
54 $def = new HTMLPurifier_URIDefinition();
55 $def->setupMemberVariables($this->config);
56 $this->assertIdentical($def->host, 'sub.example.com');