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); } }