aboutsummaryrefslogtreecommitdiffstats
path: root/lib/htmlpurifier/tests/HTMLPurifier/URIDefinitionTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/htmlpurifier/tests/HTMLPurifier/URIDefinitionTest.php')
-rw-r--r--lib/htmlpurifier/tests/HTMLPurifier/URIDefinitionTest.php62
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/htmlpurifier/tests/HTMLPurifier/URIDefinitionTest.php b/lib/htmlpurifier/tests/HTMLPurifier/URIDefinitionTest.php
new file mode 100644
index 000000000..6ab0c2a6b
--- /dev/null
+++ b/lib/htmlpurifier/tests/HTMLPurifier/URIDefinitionTest.php
@@ -0,0 +1,62 @@
+<?php
+
+class HTMLPurifier_URIDefinitionTest extends HTMLPurifier_URIHarness
+{
+
+ protected function createFilterMock($expect = true, $result = true, $post = false, $setup = true) {
+ static $i = 0;
+ generate_mock_once('HTMLPurifier_URIFilter');
+ $mock = new HTMLPurifier_URIFilterMock();
+ if ($expect) $mock->expectOnce('filter');
+ else $mock->expectNever('filter');
+ $mock->setReturnValue('filter', $result);
+ $mock->setReturnValue('prepare', $setup);
+ $mock->name = $i++;
+ $mock->post = $post;
+ return $mock;
+ }
+
+ function test_filter() {
+ $def = new HTMLPurifier_URIDefinition();
+ $def->addFilter($this->createFilterMock(), $this->config);
+ $def->addFilter($this->createFilterMock(), $this->config);
+ $uri = $this->createURI('test');
+ $this->assertTrue($def->filter($uri, $this->config, $this->context));
+ }
+
+ function test_filter_earlyAbortIfFail() {
+ $def = new HTMLPurifier_URIDefinition();
+ $def->addFilter($this->createFilterMock(true, false), $this->config);
+ $def->addFilter($this->createFilterMock(false), $this->config); // never called
+ $uri = $this->createURI('test');
+ $this->assertFalse($def->filter($uri, $this->config, $this->context));
+ }
+
+ function test_setupMemberVariables_collisionPrecedenceIsHostBaseScheme() {
+ $this->config->set('URI.Host', $host = 'example.com');
+ $this->config->set('URI.Base', $base = 'http://sub.example.com/foo/bar.html');
+ $this->config->set('URI.DefaultScheme', 'ftp');
+ $def = new HTMLPurifier_URIDefinition();
+ $def->setup($this->config);
+ $this->assertIdentical($def->host, $host);
+ $this->assertIdentical($def->base, $this->createURI($base));
+ $this->assertIdentical($def->defaultScheme, 'http'); // not ftp!
+ }
+
+ function test_setupMemberVariables_onlyScheme() {
+ $this->config->set('URI.DefaultScheme', 'ftp');
+ $def = new HTMLPurifier_URIDefinition();
+ $def->setup($this->config);
+ $this->assertIdentical($def->defaultScheme, 'ftp');
+ }
+
+ function test_setupMemberVariables_onlyBase() {
+ $this->config->set('URI.Base', 'http://sub.example.com/foo/bar.html');
+ $def = new HTMLPurifier_URIDefinition();
+ $def->setup($this->config);
+ $this->assertIdentical($def->host, 'sub.example.com');
+ }
+
+}
+
+// vim: et sw=4 sts=4