From 7c2cea01a50227088d9da567b08b9fde54b4b95f Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Thu, 23 Jul 2009 07:02:10 -0700 Subject: Fix for ticket #502 This patch allows users with only view permission to request fullsize prints using Digibug. There is now a Digibug config file that contains the IP ranges of the Digibug servers. Any request for the full size image via the print proxy must come from within the ranges in the config file. The reason for the "if (!Test_Mode) {..." is that the print proxy makes a call to Kohana::close_buffers, which closes all the output buffers and then we see the image download on the console which messes up the test output. --- modules/digibug/tests/Digibug_Controller_Test.php | 91 +++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 modules/digibug/tests/Digibug_Controller_Test.php (limited to 'modules/digibug/tests/Digibug_Controller_Test.php') diff --git a/modules/digibug/tests/Digibug_Controller_Test.php b/modules/digibug/tests/Digibug_Controller_Test.php new file mode 100644 index 00000000..6838da5c --- /dev/null +++ b/modules/digibug/tests/Digibug_Controller_Test.php @@ -0,0 +1,91 @@ +_server; + + if ($this->_proxy) { + $this->_proxy->delete(); + } + } + + public function setup() { + $this->_server = $_SERVER; + + $root = ORM::factory("item", 1); + $this->_album = album::create($root, rand(), "test album"); + access::deny(group::everybody(), "view_full", $this->_album); + access::deny(group::registered_users(), "view_full", $this->_album); + + $rand = rand(); + $this->_item = photo::create($this->_album, MODPATH . "gallery/tests/test.jpg", "$rand.jpg", + $rand, $rand); + $this->_proxy = ORM::factory("digibug_proxy"); + $this->_proxy->uuid = md5(rand()); + $this->_proxy->item_id = $this->_item->id; + $this->_proxy->save(); + } + + public function digibug_request_thumb_test() { + try { + $controller = new Digibug_Controller(); + $controller->print_proxy("thumb", $this->_proxy->uuid); + } catch (Exception $e) { + $this->assert_true(false, "Exception Occurred\n" . $e->__toString()); + } + } + + public function digibug_request_full_malicious_ip_test() { + $_SERVER["REMOTE_ADDR"] = "123.456.789.012"; + try { + $controller = new Digibug_Controller(); + $controller->print_proxy("full", $this->_proxy->uuid); + $this->assert_true(false, "Should have failed with an 404 exception"); + } catch (Exception $e) { + if (get_class($e) !== "Kohana_404_Exception") { + $this->assert_true(false, "Exception Occurred\n" . $e->__toString()); + } + } + } + + public function digibug_request_full_authorized_ip_test() { + $config = Kohana::config("digibug"); + if (empty($config)) { + $this->assert_true(false, "The Digibug config is empty"); + } + $ranges = array_values($config["ranges"]); + $low = ip2long($ranges[0]["low"]); + $high = ip2long($ranges[0]["high"]); + + $_SERVER["REMOTE_ADDR"] = long2ip(rand($low, $high)); + try { + $controller = new Digibug_Controller(); + $controller->print_proxy("full", $this->_proxy->uuid); + $results = ob_get_contents(); + } catch (Exception $e) { + $this->assert_true(false, "Exception Occurred\n" . $e->__toString()); + } + } + +} -- cgit v1.2.3 From 6a8cace027525e50070681d6e962b4c61cac3c2e Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Thu, 23 Jul 2009 08:37:39 -0700 Subject: Test cleanup: 1) Specifically catch Kohana_404_Exception and let other exceptions pass, the test framework will report them as errors 2) Simplify some testing idioms 3) Change malicious address to a legal addr --- modules/digibug/tests/Digibug_Controller_Test.php | 33 +++++++---------------- 1 file changed, 10 insertions(+), 23 deletions(-) (limited to 'modules/digibug/tests/Digibug_Controller_Test.php') diff --git a/modules/digibug/tests/Digibug_Controller_Test.php b/modules/digibug/tests/Digibug_Controller_Test.php index 6838da5c..859ff637 100644 --- a/modules/digibug/tests/Digibug_Controller_Test.php +++ b/modules/digibug/tests/Digibug_Controller_Test.php @@ -42,50 +42,37 @@ class Digibug_Controller_Test extends Unit_Test_Case { $this->_item = photo::create($this->_album, MODPATH . "gallery/tests/test.jpg", "$rand.jpg", $rand, $rand); $this->_proxy = ORM::factory("digibug_proxy"); - $this->_proxy->uuid = md5(rand()); + $this->_proxy->uuid = md5(rand()); $this->_proxy->item_id = $this->_item->id; $this->_proxy->save(); } public function digibug_request_thumb_test() { - try { - $controller = new Digibug_Controller(); - $controller->print_proxy("thumb", $this->_proxy->uuid); - } catch (Exception $e) { - $this->assert_true(false, "Exception Occurred\n" . $e->__toString()); - } + $controller = new Digibug_Controller(); + $controller->print_proxy("thumb", $this->_proxy->uuid); } public function digibug_request_full_malicious_ip_test() { - $_SERVER["REMOTE_ADDR"] = "123.456.789.012"; + $_SERVER["REMOTE_ADDR"] = "123.123.123.123"; try { $controller = new Digibug_Controller(); $controller->print_proxy("full", $this->_proxy->uuid); $this->assert_true(false, "Should have failed with an 404 exception"); - } catch (Exception $e) { - if (get_class($e) !== "Kohana_404_Exception") { - $this->assert_true(false, "Exception Occurred\n" . $e->__toString()); - } + } catch (Kohana_404_Exception $e) { + // expected behavior } } public function digibug_request_full_authorized_ip_test() { $config = Kohana::config("digibug"); - if (empty($config)) { - $this->assert_true(false, "The Digibug config is empty"); - } + $this->assert_true(!empty($config), "The Digibug config is empty"); + $ranges = array_values($config["ranges"]); $low = ip2long($ranges[0]["low"]); $high = ip2long($ranges[0]["high"]); $_SERVER["REMOTE_ADDR"] = long2ip(rand($low, $high)); - try { - $controller = new Digibug_Controller(); - $controller->print_proxy("full", $this->_proxy->uuid); - $results = ob_get_contents(); - } catch (Exception $e) { - $this->assert_true(false, "Exception Occurred\n" . $e->__toString()); - } + $controller = new Digibug_Controller(); + $controller->print_proxy("full", $this->_proxy->uuid); } - } -- cgit v1.2.3