From 985fad83ae06027c9ba92915b6f253815e7537cc Mon Sep 17 00:00:00 2001 From: cash Date: Mon, 19 Oct 2009 11:59:44 +0000 Subject: first version of new REST api git-svn-id: http://code.elgg.org/elgg/trunk@3562 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/tests/services/api.php | 91 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 engine/tests/services/api.php (limited to 'engine/tests/services') diff --git a/engine/tests/services/api.php b/engine/tests/services/api.php new file mode 100644 index 000000000..cf8a16bf5 --- /dev/null +++ b/engine/tests/services/api.php @@ -0,0 +1,91 @@ +swallowErrors(); + $API_METHODS = array(); + } + + public function testExposeFunctionNoMethod() { + $this->expectException('InvalidParameterException'); + expose_function(); + } + + public function testExposeFunctionNoFunction() { + $this->expectException('InvalidParameterException'); + expose_function('test'); + } + + public function testExposeFunctionBadParameters() { + $this->expectException('InvalidParameterException'); + expose_function('test', 'test', 'BAD'); + } + + public function testExposeFunctionBadHttpMethod() { + $this->expectException('InvalidParameterException'); + expose_function('test', 'test', null, '', 'BAD'); + } + + public function testExposeFunctionSuccess() { + global $API_METHODS; + $parameters = array('param1' => array('type' => 'int', 'required' => true)); + $method['function'] = 'foo'; + $method['parameters'] = $parameters; + $method['call_method'] = 'GET'; + $method['description'] = ''; + $method['require_api_auth'] = false; + $method['require_user_auth'] = false; + + $this->assertTrue(expose_function('test', 'foo', $parameters)); + $this->assertIdentical($method, $API_METHODS['test']); + } + + public function testApiMethodNotImplemented() { + global $CONFIG; + + $results = send_api_get_call($CONFIG->wwwroot . 'pg/api/rest/json/', array('method' => 'bad.method')); + $obj = json_decode($results); + $this->assertIdentical(sprintf(elgg_echo('APIException:MethodCallNotImplemented'), 'bad.method'), $obj->api[0]->message); + } + + public function testVerifyParameters() { + $this->registerFunction(); + + $parameters = array('param1' => 0); + $this->assertTrue(verify_parameters('test', $parameters)); + + $parameters = array('param2' => true); + $this->expectException('APIException'); + $this->assertTrue(verify_parameters('test', $parameters)); + } + + public function testserialise_parameters() { + + } + + protected function registerFunction($api_auth = false, $user_auth = false) { + $parameters = array('param1' => array('type' => 'int', 'required' => true), + 'param2' => array('type' => 'bool', 'required' => false), ); + $method['function'] = 'foo'; + $method['parameters'] = $parameters; + $method['call_method'] = 'GET'; + $method['description'] = ''; + $method['require_api_auth'] = $api_auth; + $method['require_user_auth'] = $user_auth; + + expose_function('test', 'foo', $parameters); + } + +} -- cgit v1.2.3