summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2010-01-19 01:17:29 -0800
committerBharat Mediratta <bharat@menalto.com>2010-01-19 01:17:29 -0800
commitf95442c314f84004c48758579f076ae209aace43 (patch)
treed8d74abe6247967768ede26085a4aa1e1a47ec7f
parent069a23e81192578f5f02f6a52a07536ceb6c0bcd (diff)
Rewrite the tests entirely to cover the new REST code.
-rw-r--r--modules/gallery/tests/Gallery_Rest_Helper_Test.php347
1 files changed, 138 insertions, 209 deletions
diff --git a/modules/gallery/tests/Gallery_Rest_Helper_Test.php b/modules/gallery/tests/Gallery_Rest_Helper_Test.php
index dac221b3..35fd0daf 100644
--- a/modules/gallery/tests/Gallery_Rest_Helper_Test.php
+++ b/modules/gallery/tests/Gallery_Rest_Helper_Test.php
@@ -17,262 +17,191 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class Gallery_Rest_Helper_Test extends Unit_Test_Case {
+class Gallery_Rest_Helper_Test extends Gallery_Unit_Test_Case {
public function setup() {
$this->_save = array($_GET, $_POST, $_SERVER, $_FILES);
- $this->_saved_active_user = identity::active_user();
}
public function teardown() {
list($_GET, $_POST, $_SERVER, $_FILES) = $this->_save;
- identity::set_active_user($this->_saved_active_user);
- if (!empty($this->_user)) {
- try {
- $this->_user->delete();
- } catch (Exception $e) { }
- }
}
- private function _create_user() {
- if (empty($this->_user)) {
- $this->_user = identity::create_user("access_test" . rand(), "Access Test", "password");
- $key = ORM::factory("user_access_token");
- $key->access_key = md5($this->_user->name . rand());
- $key->user_id = $this->_user->id;
- $key->save();
- identity::set_active_user($this->_user);
- }
- return $this->_user;
+ public function resolve_test() {
+ $album = test::random_album();
+ $resolved = rest::resolve(rest::url("gallery", $album->relative_url()));
+ $this->assert_equal($album->id, $resolved->id);
}
- private function _create_album($parent=null) {
- $album_name = "rest_album_" . rand();
- if (empty($parent)) {
- $parent = ORM::factory("item", 1);
- }
- return album::create($parent, $album_name, $album_name, $album_name);
- }
+ public function get_scope_test() {
+ $album1 = test::random_album();
+ $photo1 = test::random_photo($album1);
+ $album2 = test::random_album($album1);
+ $photo2 = test::random_photo($album2);
+ $album1->reload();
- private function _create_image($parent=null) {
- $filename = MODPATH . "gallery/tests/test.jpg";
- $image_name = "rest_image_" . rand();
- if (empty($parent)) {
- $parent = ORM::factory("item", 1);
- }
- return photo::create($parent, $filename, "$image_name.jpg", $image_name);
- }
+ // No scope is the same as "direct"
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params = new stdClass();
+ $this->assert_equal_array(
+ array("resource" => $album1->as_array(),
+ "members" => array(
+ rest::url("gallery", $photo1->relative_url()),
+ rest::url("gallery", $album2->relative_url()))),
+ gallery_rest::get($request));
- public function gallery_rest_get_album_test() {
- $album = $this->_create_album();
- $child = $this->_create_album($album);
- $photo = $this->_create_image($child);
- $child->reload();
- $request = (object)array("arguments" => explode("/", $child->relative_url()));
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->scope = "direct";
+ $this->assert_equal_array(
+ array("resource" => $album1->as_array(),
+ "members" => array(
+ rest::url("gallery", $photo1->relative_url()),
+ rest::url("gallery", $album2->relative_url()))),
+ gallery_rest::get($request));
- $this->assert_equal(
- json_encode(array("status" => "OK",
- "resource" =>
- array("type" => $child->type,
- "name" => $child->name,
- "path" => $child->relative_url(),
- "parent_path" => $album->relative_url(),
- "title" => $child->title,
- "thumb_url" => $child->thumb_url(),
- "thumb_size" => array("height" => $child->thumb_height,
- "width" => $child->thumb_width),
- "resize_url" => $child->resize_url(),
- "resize_size" => array("height" => 0,
- "width" => 0),
- "url" => $child->file_url(),
- "size" => array("height" => $child->height,
- "width" => $child->width),
- "description" => $child->description,
- "slug" => $child->slug,
- "children" => array(array(
- "type" => "photo",
- "has_children" => false,
- "path" => $photo->relative_url(),
- "thumb_url" => $photo->thumb_url(),
- "thumb_dimensions" => array(
- "width" => (string)$photo->thumb_width,
- "height" => (string)$photo->thumb_height),
- "has_thumb" => true,
- "title" => $photo->title))))),
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->scope = "all";
+ $this->assert_equal_array(
+ array("resource" => $album1->as_array(),
+ "members" => array(
+ rest::url("gallery", $photo1->relative_url()),
+ rest::url("gallery", $album2->relative_url()),
+ rest::url("gallery", $photo2->relative_url()))),
gallery_rest::get($request));
}
- public function gallery_rest_get_photo_test() {
- $child = $this->_create_album();
- $photo = $this->_create_image($child);
- $request = (object)array("arguments" => explode("/", $photo->relative_url()));
-
- $this->assert_equal(
- json_encode(array("status" => "OK",
- "resource" =>
- array("type" => $photo->type,
- "name" => $photo->name,
- "path" => $photo->relative_url(),
- "parent_path" => $child->relative_url(),
- "title" => $photo->title,
- "thumb_url" => $photo->thumb_url(),
- "thumb_size" => array("height" => (string)$photo->thumb_height,
- "width" => (string)$photo->thumb_width),
- "resize_url" => $photo->resize_url(),
- "resize_size" => array("height" => $photo->resize_height,
- "width" => $photo->resize_width),
- "url" => $photo->file_url(),
- "size" => array("height" => (string)$photo->height,
- "width" => (string)$photo->width),
- "description" => $photo->description,
- "slug" => $photo->slug))),
+ public function get_children_like_test() {
+ $album1 = test::random_album();
+ $photo1 = test::random_photo($album1);
+ $photo2 = test::random_photo_unsaved($album1);
+ $photo2->name = "foo.jpg";
+ $photo2->save();
+ $album1->reload();
+
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->name = "foo";
+ $this->assert_equal_array(
+ array("resource" => $album1->as_array(),
+ "members" => array(
+ rest::url("gallery", $photo2->relative_url()))),
gallery_rest::get($request));
}
- public function gallery_rest_put_album_no_path_test() {
- $request = (object)array("description" => "Updated description",
- "title" => "Updated Title",
- "name" => "new name");
+ public function get_children_type_test() {
+ $album1 = test::random_album();
+ $photo1 = test::random_photo($album1);
+ $album2 = test::random_album($album1);
+ $album1->reload();
- try {
- gallery_rest::put($request);
- } catch (Rest_Exception $e) {
- $this->assert_equal("Bad request", $e->getMessage());
- $this->assert_equal(400, $e->getCode());
- } catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
- }
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->type = "album";
+ $this->assert_equal_array(
+ array("resource" => $album1->as_array(),
+ "members" => array(
+ rest::url("gallery", $album2->relative_url()))),
+ gallery_rest::get($request));
}
- public function gallery_rest_put_album_not_found_test() {
- $photo = $this->_create_image();
- $request = (object)array("arguments" => explode("/", $photo->relative_url() . rand()),
- "description" => "Updated description",
- "title" => "Updated Title",
- "name" => "new name");
+ public function update_album_test() {
+ $album1 = test::random_album();
+ access::allow(identity::everybody(), "edit", $album1);
- try {
- gallery_rest::put($request);
- } catch (Kohana_404_Exception $k404) {
- } catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
- }
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->title = "my new title";
+
+ $this->assert_equal_array(
+ array("url" => rest::url("gallery", $album1->relative_url())),
+ gallery_rest::put($request));
+ $this->assert_equal("my new title", $album1->reload()->title);
}
- public function gallery_rest_put_album_no_edit_permission_test() {
- $child = $this->_create_album();
- $this->_create_user();
- $request = (object)array("arguments" => explode("/", $child->relative_url()),
- "description" => "Updated description",
- "title" => "Updated Title",
- "name" => "new name");
+ public function update_album_illegal_value_fails_test() {
+ $album1 = test::random_album();
+ access::allow(identity::everybody(), "edit", $album1);
+
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->title = "my new title";
+ $request->params->slug = "not url safe";
try {
gallery_rest::put($request);
- } catch (Kohana_404_Exception $k404) {
- } catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
+ } catch (ORM_Validation_Exception $e) {
+ $this->assert_equal(array("slug" => "not_url_safe"), $e->validation->errors());
+ return;
}
+ $this->assert_true(false, "Shouldn't get here");
}
- public function gallery_rest_put_album_rename_conflict_test() {
- $child = $this->_create_album();
- $sibling = $this->_create_image();
- $this->_create_user();
- access::allow(identity::registered_users(), "edit", $child);
- $request = (object)array("arguments" => explode("/", $child->relative_url()),
- "description" => "Updated description",
- "title" => "Updated Title",
- "name" => $sibling->name);
-
- $this->assert_equal(
- json_encode(array("status" => "VALIDATE_ERROR",
- "fields" => array("slug" => "Duplicate Internet address"))),
- gallery_rest::put($request));
- }
-
- public function gallery_rest_put_album_test() {
- $child = $this->_create_album();
- $sibling = $this->_create_image();
- $this->_create_user();
- access::allow(identity::registered_users(), "edit", $child);
+ public function add_album_test() {
+ $album1 = test::random_album();
+ access::allow(identity::everybody(), "edit", $album1);
- $new_name = "new_album_name" . rand();
- $request = (object)array("arguments" => explode("/", $child->relative_url()),
- "description" => "Updated description",
- "title" => "Updated Title",
- "name" => $new_name);
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->type = "album";
+ $request->params->name = "my album";
+ $request->params->title = "my album";
+ $response = gallery_rest::post($request);
+ $new_album = rest::resolve($response["url"]);
- $this->assert_equal(json_encode(array("status" => "OK")), gallery_rest::put($request));
- $child->reload();
- $this->assert_equal("Updated description", $child->description);
- $this->assert_equal("Updated Title", $child->title);
- $this->assert_equal($new_name, $child->name);
+ $this->assert_true($new_album->is_album());
+ $this->assert_equal($album1->id, $new_album->parent_id);
}
- public function gallery_rest_put_photo_test() {
- $child = $this->_create_album();
- $photo = $this->_create_image($child);
- $this->_create_user();
- access::allow(identity::registered_users(), "edit", $child);
+ public function add_album_illegal_value_fails_test() {
+ $album1 = test::random_album();
+ access::allow(identity::everybody(), "edit", $album1);
- $request = (object)array("arguments" => explode("/", $photo->relative_url()),
- "description" => "Updated description",
- "title" => "Updated Title",
- "name" => "new name");
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->type = "album";
+ $request->params->name = "my album";
+ $request->params->title = "my album";
+ $request->params->slug = "not url safe";
- $this->assert_equal(json_encode(array("status" => "OK")), gallery_rest::put($request));
- $photo->reload();
- $this->assert_equal("Updated description", $photo->description);
- $this->assert_equal("Updated Title", $photo->title);
- $this->assert_equal("new name", $photo->name);
+ try {
+ gallery_rest::post($request);
+ } catch (ORM_Validation_Exception $e) {
+ $this->assert_equal(array("slug" => "not_url_safe"), $e->validation->errors());
+ return;
+ }
+ $this->assert_true(false, "Shouldn't get here");
}
- public function gallery_rest_delete_album_test() {
- $album = $this->_create_album();
- $child = $this->_create_album($album);
- $this->_create_user();
- access::allow(identity::registered_users(), "edit", $album);
- $request = (object)array("arguments" => explode("/", $child->relative_url()));
+ public function add_photo_test() {
+ $album1 = test::random_album();
+ access::allow(identity::everybody(), "edit", $album1);
+
+ $request->url = rest::url("gallery", $album1->relative_url());
+ $request->params->type = "photo";
+ $request->params->name = "my photo.jpg";
+ $request->file = MODPATH . "gallery/tests/test.jpg";
+ $response = gallery_rest::post($request);
+ $new_photo = rest::resolve($response["url"]);
- $this->assert_equal(json_encode(array("status" => "OK",
- "resource" => array(
- "parent_path" => $album->relative_url()))),
- gallery_rest::delete($request));
- $child->reload();
- $this->assert_false($child->loaded());
+ $this->assert_true($new_photo->is_photo());
+ $this->assert_equal($album1->id, $new_photo->parent_id);
}
- public function gallery_rest_delete_photo_test() {
- $album = $this->_create_album();
- $photo = $this->_create_image($album);
- $this->_create_user();
- access::allow(identity::registered_users(), "edit", $album);
+ public function delete_album_test() {
+ $album1 = test::random_album();
+ access::allow(identity::everybody(), "edit", $album1);
- $request = (object)array("arguments" => explode("/", $photo->relative_url()));
+ $request->url = rest::url("gallery", $album1->relative_url());
+ gallery_rest::delete($request);
- $this->assert_equal(json_encode(array("status" => "OK",
- "resource" => array(
- "parent_path" => $album->relative_url()))),
- gallery_rest::delete($request));
- $photo->reload();
- $this->assert_false($photo->loaded());
+ $album1->reload();
+ $this->assert_false($album1->loaded());
}
- public function gallery_rest_post_album_test() {
- $album = $this->_create_album();
- $this->_create_user();
- access::allow(identity::registered_users(), "edit", $album);
+ public function delete_album_fails_without_permission_test() {
+ $album1 = test::random_album();
- $new_path = $album->relative_url() . "/new%20child";
- $request = (object)array("arguments" => explode("/", $new_path));
-
- $this->assert_equal(json_encode(array("status" => "OK", "path" => $new_path)),
- gallery_rest::post($request));
- $album = ORM::factory("item")
- ->where("relative_url_cache", "=", $new_path)
- ->find();
- $this->assert_true($album->loaded());
- $this->assert_equal("new child", $album->slug);
+ $request->url = rest::url("gallery", $album1->relative_url());
+ try {
+ gallery_rest::delete($request);
+ } catch (Exception $e) {
+ $this->assert_equal("@todo FORBIDDEN", $e->getMessage());
+ return;
+ }
+ $this->assert_true(false, "Shouldn't get here");
}
}