From 8cd08620dc890c47165308b20b8d70b1e74f93c7 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Mon, 28 Oct 2013 16:48:07 -0700 Subject: [PATCH] Conditionalize hash_hmac tests for 5.0 Signed-off-by: Edward Z. Yang --- library/HTMLPurifier/URIFilter/Munge.php | 2 +- tests/HTMLPurifier/HTMLT/munge-extra.htmlt | 2 ++ tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt | 2 ++ tests/HTMLPurifier/HTMLT/secure-munge.htmlt | 2 ++ tests/HTMLPurifier/URIFilter/MungeTest.php | 14 ++++++++------ 5 files changed, 15 insertions(+), 7 deletions(-) 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'); } -- 2.11.4.GIT