3 require_once 'HTMLPurifier/URISchemeRegistry.php';
5 class HTMLPurifier_URISchemeRegistryTest
extends HTMLPurifier_Harness
10 generate_mock_once('HTMLPurifier_URIScheme');
12 $config = HTMLPurifier_Config
::create(array(
13 'URI.AllowedSchemes' => 'http, telnet',
14 'URI.OverrideAllowedSchemes' => true
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
42 $this->assertNull($registry->getScheme('foobar', $config, $context));
44 // scheme not allowed and never registered
45 $this->assertNull($registry->getScheme('ftp', $config, $context));