diff --git a/library/HTMLPurifier/URIFilter/Munge.php b/library/HTMLPurifier/URIFilter/Munge.php
index e9631f2a..6e03315a 100644
--- a/library/HTMLPurifier/URIFilter/Munge.php
+++ b/library/HTMLPurifier/URIFilter/Munge.php
@@ -48,7 +48,7 @@ class HTMLPurifier_URIFilter_Munge extends HTMLPurifier_URIFilter
$this->doEmbed = $config->get('URI.MungeResources');
$this->secretKey = $config->get('URI.MungeSecretKey');
if ($this->secretKey && !function_exists('hash_hmac')) {
- trigger_error("Cannot use %URI.MungeSecretKey without hash_hmac support.", E_USER_ERROR);
+ throw new Exception("Cannot use %URI.MungeSecretKey without hash_hmac support.");
}
return true;
}
diff --git a/tests/HTMLPurifier/HTMLT/munge-extra.htmlt b/tests/HTMLPurifier/HTMLT/munge-extra.htmlt
index 8438e3cc..9906155e 100644
--- a/tests/HTMLPurifier/HTMLT/munge-extra.htmlt
+++ b/tests/HTMLPurifier/HTMLT/munge-extra.htmlt
@@ -1,3 +1,5 @@
+--SKIPIF--
+return !function_exists('hash_hmac');
--INI--
URI.Munge = "/redirect?s=%s&t=%t&r=%r&n=%n&m=%m&p=%p"
URI.MungeSecretKey = "foo"
diff --git a/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt b/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt
index 77b32d3a..e30edc37 100644
--- a/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt
+++ b/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt
@@ -1,3 +1,5 @@
+--SKIPIF--
+return !function_exists('hash_hmac');
--INI--
HTML.SafeObject = true
HTML.SafeEmbed = true
diff --git a/tests/HTMLPurifier/HTMLT/secure-munge.htmlt b/tests/HTMLPurifier/HTMLT/secure-munge.htmlt
index bf5b3244..7c41cc9c 100644
--- a/tests/HTMLPurifier/HTMLT/secure-munge.htmlt
+++ b/tests/HTMLPurifier/HTMLT/secure-munge.htmlt
@@ -1,3 +1,5 @@
+--SKIPIF--
+return !function_exists('hash_hmac');
--INI--
URI.Munge = "/redirect.php?url=%s&check=%t"
URI.MungeSecretKey = "foo"
diff --git a/tests/HTMLPurifier/URIFilter/MungeTest.php b/tests/HTMLPurifier/URIFilter/MungeTest.php
index 60658da2..addaaf91 100644
--- a/tests/HTMLPurifier/URIFilter/MungeTest.php
+++ b/tests/HTMLPurifier/URIFilter/MungeTest.php
@@ -16,8 +16,10 @@ class HTMLPurifier_URIFilter_MungeTest extends HTMLPurifier_URIFilterHarness
protected function setSecureMunge($key = 'secret')
{
+ if (!function_exists('hash_hmac')) return false;
$this->setMunge('/redirect.php?url=%s&checksum=%t');
$this->config->set('URI.MungeSecretKey', $key);
+ return true;
}
public function testMunge()
@@ -92,13 +94,13 @@ class HTMLPurifier_URIFilter_MungeTest extends HTMLPurifier_URIFilterHarness
public function testSecureMungePreserve()
{
- $this->setSecureMunge();
+ if (!$this->setSecureMunge()) return;
$this->assertFiltering('/local');
}
public function testSecureMungePreserveEmbedded()
{
- $this->setSecureMunge();
+ if (!$this->setSecureMunge()) return;
$embedded = true;
$this->context->register('EmbeddedURI', $embedded);
$this->assertFiltering('http://google.com');
@@ -106,26 +108,26 @@ class HTMLPurifier_URIFilter_MungeTest extends HTMLPurifier_URIFilterHarness
public function testSecureMungeStandard()
{
- $this->setSecureMunge();
+ if (!$this->setSecureMunge()) return;
$this->assertFiltering('http://google.com', '/redirect.php?url=http%3A%2F%2Fgoogle.com&checksum=46267a796aca0ea5839f24c4c97ad2648373a4eca31b1c0d1fa7c7ff26798f79');
}
public function testSecureMungeIgnoreUnknownSchemes()
{
// This should be integration tested as well to be false
- $this->setSecureMunge();
+ if (!$this->setSecureMunge()) return;
$this->assertFiltering('javascript:', true);
}
public function testSecureMungeIgnoreUnbrowsableSchemes()
{
- $this->setSecureMunge();
+ if (!$this->setSecureMunge()) return;
$this->assertFiltering('news:', true);
}
public function testSecureMungeToDirectory()
{
- $this->setSecureMunge();
+ if (!$this->setSecureMunge()) return;
$this->setMunge('/links/%s/%t');
$this->assertFiltering('http://google.com', '/links/http%3A%2F%2Fgoogle.com/46267a796aca0ea5839f24c4c97ad2648373a4eca31b1c0d1fa7c7ff26798f79');
}