summaryrefslogtreecommitdiff
path: root/modules/rest/tests
diff options
context:
space:
mode:
Diffstat (limited to 'modules/rest/tests')
-rw-r--r--modules/rest/tests/Rest_Controller_Test.php249
1 files changed, 85 insertions, 164 deletions
diff --git a/modules/rest/tests/Rest_Controller_Test.php b/modules/rest/tests/Rest_Controller_Test.php
index 83bd9db6..5e624112 100644
--- a/modules/rest/tests/Rest_Controller_Test.php
+++ b/modules/rest/tests/Rest_Controller_Test.php
@@ -17,208 +17,129 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class Rest_Controller_Test extends Unit_Test_Case {
+class Rest_Controller_Test extends Gallery_Unit_Test_Case {
public function setup() {
$this->_save = array($_GET, $_POST, $_SERVER);
}
- private function _create_user() {
- if (empty($this->_user)) {
- $this->_user = identity::create_user("access_test" . rand(), "Access Test", "password");
- $this->_key = ORM::factory("user_access_token");
- $this->_key->access_key = md5($this->_user->name . rand());
- $this->_key->user_id = $this->_user->id;
- $this->_key->save();
- identity::set_active_user($this->_user);
- }
- return array($this->_key->access_key, $this->_user);
- }
-
public function teardown() {
list($_GET, $_POST, $_SERVER) = $this->_save;
- if (!empty($this->_user)) {
- try {
- $this->_user->delete();
- } catch (Exception $e) { }
- }
- }
-
- private function _create_image($parent=null) {
- $filename = MODPATH . "gallery/tests/test.jpg";
- $image_name = "image_" . rand();
- if (empty($parent)) {
- $parent = ORM::factory("item", 1);
- }
- return photo::create($parent, $filename, "$image_name.jpg", $image_name);
}
- public function rest_access_key_exists_test() {
- list ($access_key, $user) = $this->_create_user();
- $_SERVER["REQUEST_METHOD"] = "GET";
- $_GET["user"] = $user->name;;
- $_GET["password"] = "password";
+ public function login_test() {
+ $user = test::random_user("password");
- $this->assert_equal(
- json_encode(array("status" => "OK", "token" => $access_key)),
- $this->_call_controller());
- }
+ // There's no access key at first
+ $this->assert_false(
+ ORM::factory("user_access_token")->where("user_id", "=", $user->id)->find()->loaded());
- public function rest_access_key_generated_test() {
- list ($access_key, $user) = $this->_create_user();
- ORM::factory("user_access_token")
- ->where("access_key", $access_key)
- ->delete();
- $_SERVER["REQUEST_METHOD"] = "GET";
- $_GET["user"] = $user->name;
- $_GET["password"] = "password";
+ $_POST["user"] = $user->name;
+ $_POST["password"] = "password";
- $results = json_decode($this->_call_controller());
+ $response = test::call_and_capture(array(new Rest_Controller(), "index"));
+ $expected =
+ ORM::factory("user_access_token")->where("user_id", "=", $user->id)->find()->access_key;
- $this->assert_equal("OK", $results->status);
- $this->assert_false(empty($results->token));
+ // Now there is an access key, and it was returned
+ $this->assert_equal(json_encode($expected), $response);
}
- public function rest_access_key_no_parameters_test() {
- $_SERVER["REQUEST_METHOD"] = "GET";
+ public function login_failed_test() {
+ $user = test::random_user("password");
try {
- $this->_call_controller();
+ $_POST["user"] = $user->name;
+ $_POST["password"] = "WRONG PASSWORD";
+ test::call_and_capture(array(new Rest_Controller(), "index"));
} catch (Rest_Exception $e) {
- $this->assert_equal("403 Forbidden", $e->getMessage());
- } catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
+ $this->assert_equal(403, $e->getCode());
+ return;
}
- }
-
- public function rest_access_key_user_not_found_test() {
- $_SERVER["REQUEST_METHOD"] = "POST";
- $_POST["request"] = json_encode(array("user" => "access_test2", "password" => "password"));
- try {
- $this->_call_controller();
- } catch (Rest_Exception $e) {
- $this->assert_equal("403 Forbidden", $e->getMessage());
- } catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
- }
+ $this->assert_true(false, "Shouldn't get here");
}
- public function rest_access_key_invalid_password_test() {
- $_SERVER["REQUEST_METHOD"] = "POST";
+ public function get_test() {
+ $_SERVER["REQUEST_METHOD"] = "GET";
+ $_GET["key"] = "value";
- try {
- $this->_call_controller();
- } catch (Rest_Exception $e) {
- $this->assert_equal("403 Forbidden", $e->getMessage());
- } catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
- }
+ $this->assert_array_equal_to_json(
+ array("params" => array("key" => "value"),
+ "method" => "get",
+ "access_token" => null,
+ "url" => "http://./index.php/gallery_unit_test"),
+ test::call_and_capture(array(new Rest_Controller(), "mock")));
}
- public function rest_get_resource_no_request_key_test() {
- $_SERVER["REQUEST_METHOD"] = "GET";
- $photo = $this->_create_image();
-
- $this->assert_equal(
- json_encode(array("status" => "OK", "message" => (string)t("Processed"),
- "photo" => array("path" => $photo->relative_url(),
- "title" => $photo->title,
- "thumb_url" => $photo->thumb_url(),
- "description" => $photo->description,
- "internet_address" => $photo->slug))),
- $this->_call_controller("rest", explode("/", $photo->relative_url())));
- }
+ public function get_with_access_key_test() {
+ $key = rest::get_access_token(1); // admin user
- public function rest_get_resource_invalid_key_test() {
- list ($access_key, $user) = $this->_create_user();
- $_SERVER["HTTP_X_GALLERY_REQUEST_KEY"] = md5($access_key); // screw up the access key;
$_SERVER["REQUEST_METHOD"] = "GET";
+ $_SERVER["HTTP_X_GALLERY_REQUEST_KEY"] = $key->access_key;
+ $_GET["key"] = "value";
- try {
- $this->_call_controller();
- } catch (Rest_Exception $e) {
- $this->assert_equal("403 Forbidden", $e->getMessage());
- } catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
- }
+ $this->assert_array_equal_to_json(
+ array("params" => array("key" => "value"),
+ "method" => "get",
+ "access_token" => $key->access_key,
+ "url" => "http://./index.php/gallery_unit_test"),
+ test::call_and_capture(array(new Rest_Controller(), "mock")));
}
- public function rest_get_resource_no_user_for_key_test() {
- list ($access_key, $user) = $this->_create_user();
- $_SERVER["REQUEST_METHOD"] = "GET";
- $_SERVER["HTTP_X_GALLERY_REQUEST_KEY"] = $access_key;
+ public function post_test() {
+ $_SERVER["REQUEST_METHOD"] = "POST";
+ $_POST["key"] = "value";
- $user->delete();
+ $this->assert_array_equal_to_json(
+ array("params" => array("key" => "value"),
+ "method" => "post",
+ "access_token" => null,
+ "url" => "http://./index.php/gallery_unit_test"),
+ test::call_and_capture(array(new Rest_Controller(), "mock")));
+ }
- $photo = $this->_create_image();
+ public function put_test() {
+ $_SERVER["REQUEST_METHOD"] = "POST";
+ $_SERVER["HTTP_X_GALLERY_REQUEST_METHOD"] = "put";
+ $_POST["key"] = "value";
- try {
- $this->_call_controller("rest", explode("/", $photo->relative_url()));
- } catch (Rest_Exception $e) {
- $this->assert_equal("403 Forbidden", $e->getMessage());
- } catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
- }
+ $this->assert_array_equal_to_json(
+ array("params" => array("key" => "value"),
+ "method" => "put",
+ "access_token" => null,
+ "url" => "http://./index.php/gallery_unit_test"),
+ test::call_and_capture(array(new Rest_Controller(), "mock")));
}
- public function rest_get_resource_no_handler_test() {
- list ($access_key, $user) = $this->_create_user();
- $_SERVER["REQUEST_METHOD"] = "GET";
- $_SERVER["HTTP_X_GALLERY_REQUEST_KEY"] = $access_key;
- $_SERVER["HTTP_X_GALLERY_REQUEST_METHOD"] = "PUT";
- $photo = $this->_create_image();
+ public function delete_test() {
+ $_SERVER["REQUEST_METHOD"] = "POST";
+ $_SERVER["HTTP_X_GALLERY_REQUEST_METHOD"] = "delete";
+ $_POST["key"] = "value";
+ $this->assert_array_equal_to_json(
+ array("params" => array("key" => "value"),
+ "method" => "delete",
+ "access_token" => null,
+ "url" => "http://./index.php/gallery_unit_test"),
+ test::call_and_capture(array(new Rest_Controller(), "mock")));
+ }
+
+ public function bogus_method_test() {
+ $_SERVER["REQUEST_METHOD"] = "POST";
+ $_SERVER["HTTP_X_GALLERY_REQUEST_METHOD"] = "BOGUS";
try {
- $this->_call_controller("rest", explode("/", $photo->relative_url()));
- } catch (Rest_Exception $e) {
- $this->assert_equal("501 Not Implemented", $e->getMessage());
+ test::call_and_capture(array(new Rest_Controller(), "mock"));
} catch (Exception $e) {
- $this->assert_false(true, $e->__toString());
+ $this->assert_equal(400, $e->getCode());
+ return;
}
- }
-
- public function rest_get_resource_test() {
- list ($access_key, $user) = $this->_create_user();
- $_SERVER["REQUEST_METHOD"] = "GET";
- $_SERVER["HTTP_X_GALLERY_REQUEST_KEY"] = $access_key;
-
- $photo = $this->_create_image();
- $this->assert_equal(
- json_encode(array("status" => "OK", "message" => (string)t("Processed"),
- "photo" => array("path" => $photo->relative_url(),
- "title" => $photo->title,
- "thumb_url" => $photo->thumb_url(),
- "description" => $photo->description,
- "internet_address" => $photo->slug))),
- $this->_call_controller("rest", explode("/", $photo->relative_url())));
- }
-
- private function _call_controller($method="access_key", $arg=null) {
- $controller = new Rest_Controller();
-
- ob_start();
- call_user_func_array(array($controller, $method), $arg);
- $results = ob_get_contents();
- ob_end_clean();
-
- return $results;
+ $this->assert_true(false, "Shouldn't get here");
}
}
-class rest_rest {
- static $request = null;
-
- static function get($request) {
- self::$request = $request;
- $item = ORM::factory("item")
- ->where("relative_url_cache", "=", implode("/", $request->arguments))
- ->find();
- $response["path"] = $item->relative_url();
- $response["title"] = $item->title;
- $response["thumb_url"] = $item->thumb_url();
- $response["description"] = $item->description;
- $response["internet_address"] = $item->slug;
- return rest::success(array($item->type => $response), t("Processed"));
- }
-
-}
+class mock_rest {
+ function get($request) { return $request; }
+ function post($request) { return $request; }
+ function put($request) { return $request; }
+ function delete($request) { return $request; }
+} \ No newline at end of file