diff --git a/modules/gallery/helpers/data_rest.php b/modules/gallery/helpers/data_rest.php index ef4f17e7..ad369037 100644 --- a/modules/gallery/helpers/data_rest.php +++ b/modules/gallery/helpers/data_rest.php @@ -51,12 +51,6 @@ class data_rest_Core { // We don't need to save the session for this request Session::instance()->abort_save(); - if ($item->is_album() && !$item->album_cover_item_id) { - // No thumbnail. Return nothing. - // @todo: what should we do here? - return; - } - // Dump out the image. If the item is a movie or album, then its thumbnail will be a JPG. if (($item->is_movie() || $item->is_album()) && $p->size == "thumb") { header("Content-Type: image/jpeg"); @@ -68,7 +62,11 @@ class data_rest_Core { if (isset($p->encoding) && $p->encoding == "base64") { print base64_encode(file_get_contents($file)); } else { - readfile($file); + if (TEST_MODE) { + return $file; + } else { + readfile($file); + } } // We must exit here to keep the regular REST framework reply code from adding more bytes on diff --git a/modules/gallery/tests/Data_Rest_Helper_Test.php b/modules/gallery/tests/Data_Rest_Helper_Test.php new file mode 100644 index 00000000..feec6d32 --- /dev/null +++ b/modules/gallery/tests/Data_Rest_Helper_Test.php @@ -0,0 +1,102 @@ +assert_equal($photo->id, $resolved->id); + } + + public function resolve_needs_permission_test() { + $album = test::random_album(); + $photo = test::random_photo($album); + $album->reload(); // new photo changed the album in the db + + access::deny(identity::everybody(), "view", $album); + identity::set_active_user(identity::guest()); + + try { + data_rest::resolve($photo->id); + $this->assert_true(false); + } catch (Kohana_404_Exception $e) { + // pass + } + } + + public function basic_get_test() { + $photo = test::random_photo(); + + $request = new stdClass(); + $request->url = rest::url("data", $photo, "thumb"); + $request->params = new stdClass(); + + $request->params->size = "thumb"; + $this->assert_same($photo->thumb_path(), data_rest::get($request)); + + $request->params->size = "resize"; + $this->assert_same($photo->resize_path(), data_rest::get($request)); + + $request->params->size = "full"; + $this->assert_same($photo->file_path(), data_rest::get($request)); + } + + public function illegal_access_test() { + $album = test::random_album(); + $photo = test::random_photo($album); + $album->reload(); + + access::deny(identity::everybody(), "view", $album); + identity::set_active_user(identity::guest()); + + $request = new stdClass(); + $request->url = rest::url("data", $photo, "thumb"); + $request->params = new stdClass(); + $request->params->size = "thumb"; + + try { + data_rest::get($request); + $this->assert_true(false); + } catch (Kohana_404_Exception $e) { + // pass + } + } + + public function missing_file_test() { + $photo = test::random_photo(); + + $request = new stdClass(); + $request->url = rest::url("data", $photo, "thumb"); + $request->params = new stdClass(); + $request->params->size = "thumb"; + + unlink($photo->thumb_path()); // oops! + + try { + data_rest::get($request); + $this->assert_true(false); + } catch (Kohana_404_Exception $e) { + // pass + } + } +}