Release 2.1.0, merged in 1313 to HEAD.
[htmlpurifier.git] / tests / HTMLPurifier / URISchemeRegistryTest.php
blob497d0f66248db8751f870e3d9145ef1c912c9b40
1 <?php
3 require_once 'HTMLPurifier/URISchemeRegistry.php';
5 class HTMLPurifier_URISchemeRegistryTest extends HTMLPurifier_Harness
8 function test() {
10 generate_mock_once('HTMLPurifier_URIScheme');
12 $config = HTMLPurifier_Config::create(array(
13 'URI.AllowedSchemes' => 'http, telnet',
14 'URI.OverrideAllowedSchemes' => true
15 ));
16 $context = new HTMLPurifier_Context();
18 $registry = new HTMLPurifier_URISchemeRegistry();
19 $this->assertIsA($registry->getScheme('http', $config, $context), 'HTMLPurifier_URIScheme_http');
21 $scheme_http = new HTMLPurifier_URISchemeMock();
22 $scheme_telnet = new HTMLPurifier_URISchemeMock();
23 $scheme_foobar = new HTMLPurifier_URISchemeMock();
25 // register a new scheme
26 $registry->register('telnet', $scheme_telnet);
27 $this->assertIdentical($registry->getScheme('telnet', $config, $context), $scheme_telnet);
29 // overload a scheme, this is FINAL (forget about defaults)
30 $registry->register('http', $scheme_http);
31 $this->assertIdentical($registry->getScheme('http', $config, $context), $scheme_http);
33 // when we register a scheme, it's automatically allowed
34 $registry->register('foobar', $scheme_foobar);
35 $this->assertIdentical($registry->getScheme('foobar', $config, $context), $scheme_foobar);
37 // now, test when overriding is not allowed
38 $config = HTMLPurifier_Config::create(array(
39 'URI.AllowedSchemes' => 'http, telnet',
40 'URI.OverrideAllowedSchemes' => false
41 ));
42 $this->assertNull($registry->getScheme('foobar', $config, $context));
44 // scheme not allowed and never registered
45 $this->assertNull($registry->getScheme('ftp', $config, $context));