'http, telnet', 'URI.OverrideAllowedSchemes' => true ) ); $context = new HTMLPurifier_Context (); $registry = new HTMLPurifier_URISchemeRegistry (); $this->assertIsA ( $registry->getScheme ( 'http', $config, $context ), 'HTMLPurifier_URIScheme_http' ); $scheme_http = new HTMLPurifier_URISchemeMock (); $scheme_telnet = new HTMLPurifier_URISchemeMock (); $scheme_foobar = new HTMLPurifier_URISchemeMock (); // register a new scheme $registry->register ( 'telnet', $scheme_telnet ); $this->assertIdentical ( $registry->getScheme ( 'telnet', $config, $context ), $scheme_telnet ); // overload a scheme, this is FINAL (forget about defaults) $registry->register ( 'http', $scheme_http ); $this->assertIdentical ( $registry->getScheme ( 'http', $config, $context ), $scheme_http ); // when we register a scheme, it's automatically allowed $registry->register ( 'foobar', $scheme_foobar ); $this->assertIdentical ( $registry->getScheme ( 'foobar', $config, $context ), $scheme_foobar ); // now, test when overriding is not allowed $config = HTMLPurifier_Config::create ( array ( 'URI.AllowedSchemes' => 'http, telnet', 'URI.OverrideAllowedSchemes' => false ) ); $this->assertNull ( $registry->getScheme ( 'foobar', $config, $context ) ); // scheme not allowed and never registered $this->assertNull ( $registry->getScheme ( 'ftp', $config, $context ) ); } } // vim: et sw=4 sts=4