/** * Tests OutputXmlConverter->outputResponse() */ public function testOutputResponse() { $inputConverter = new InputXmlConverter(); $outputConverter = new OutputXmlConverter(); $servletRequest = array('url' => '/people/1/@self'); $token = BasicSecurityToken::createFromValues('owner', 'viewer', 'app', 'domain', 'appUrl', '1', 'default'); $requestItem = RestRequestItem::createWithRequest($servletRequest, $token, $inputConverter, $outputConverter); $requestItem->applyUrlTemplate("/people/{userId}/{groupId}/{personId}"); $entry = array('isOwner' => false, 'isViewer' => false, 'displayName' => '1 1', 'id' => '1'); $response = array('entry' => $entry); $responseItem = new ResponseItem(null, null, $response); ob_start(); $outputConverter->outputResponse($responseItem, $requestItem); $output = ob_get_clean(); $expected = '<?xml version="1.0" encoding="UTF-8"?> <response> <entry> <isOwner></isOwner> <isViewer></isViewer> <displayName>1 1</displayName> <id>1</id> </entry> </response> '; $outputXml = simplexml_load_string($output); $expectedXml = simplexml_load_string($expected); $this->assertEquals($expectedXml, $outputXml); }
/** * Tests OutputJsonConverter->outputResponse() */ public function testOutputResponse() { $inputConverter = new InputJsonConverter(); $outputConverter = new OutputJsonConverter(); $servletRequest = array('url' => '/people/1/@self'); $token = BasicSecurityToken::createFromValues('owner', 'viewer', 'app', 'domain', 'appUrl', '1', 'default'); $requestItem = RestRequestItem::createWithRequest($servletRequest, $token, $inputConverter, $outputConverter); $requestItem->applyUrlTemplate("/people/{userId}/{groupId}/{personId}"); $response = array('entry' => array('isOwner' => false, 'isViewer' => false, 'displayName' => '1 1', 'id' => '1')); $responseItem = new ResponseItem(null, null, $response); ob_start(); $outputConverter->outputResponse($responseItem, $requestItem); $output = ob_get_clean(); $expected = '{ "entry": { "isOwner": false, "isViewer": false, "displayName": "1 1", "id": "1" } }'; $outputJson = json_decode($output); $expectedJson = json_decode($expected); $this->assertEquals($expectedJson, $outputJson); }
/** * Tests RestRequestItem->createWithRequest() */ public function testCreateWithRequest() { $expectedParams = array('oauth_nonce' => '10075052d8a3cd0087d11346edba8f1f', 'oauth_timestamp' => '1242011332', 'oauth_consumer_key' => 'consumerKey', 'fields' => 'gender,name', 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_signature' => 'wDcyXTBqhxW70G+ddZtw7zPVGyE='); $urlencodedParams = array(); foreach ($expectedParams as $key => $value) { $urlencodedParams[] = $key . '=' . urlencode($value); } $url = '/people/1/@self?' . join('&', $urlencodedParams); $outputConverter = new OutputJsonConverter(); $servletRequest = array('url' => $url); $token = BasicSecurityToken::createFromValues('owner', 'viewer', 'app', 'domain', 'appUrl', '1', 'default'); $requestItem = RestRequestItem::createWithRequest($servletRequest, $token, 'convertJson', $outputConverter); $params = $requestItem->getParameters(); $this->assertEquals($expectedParams, $params); }
/** * Tests OutputAtomConverter->outputResponse() */ public function testOutputResponse() { $inputConverter = new InputAtomConverter(); $outputConverter = new OutputAtomConverter(); $servletRequest = array('url' => '/people/1/@self'); $token = BasicSecurityToken::createFromValues('owner', 'viewer', 'app', 'domain', 'appUrl', '1', 'default'); $requestItem = RestRequestItem::createWithRequest($servletRequest, $token, $inputConverter, $outputConverter); $requestItem->applyUrlTemplate("/people/{userId}/{groupId}/{personId}"); $entry = array('isOwner' => false, 'isViewer' => false, 'displayName' => '1 1', 'id' => '1'); $response = array('entry' => $entry); $responseItem = new ResponseItem(null, null, $response); ob_start(); $outputConverter->outputResponse($responseItem, $requestItem); $output = ob_get_clean(); $expected = '<entry xmlns="http://www.w3.org/2005/Atom"> <title>person entry for shindig:1</title> <author> <uri>urn:guid:1</uri> <name>shindig:1</name> </author> <id>urn:guid:1</id> <updated>2008-12-11T19:58:31+01:00</updated> <content type="application/xml"> <entry xmlns="http://ns.opensocial.org/2008/opensocial"> <isOwner></isOwner> <isViewer></isViewer> <displayName>1 1</displayName> <id>1</id> </entry> </content> </entry> '; $outputXml = simplexml_load_string($output); $expectedXml = simplexml_load_string($expected); $expectedXml->updated = $outputXml->updated; // Prefix may be 'shindig' or something else. $expectedXml->title = $outputXml->title; $expectedXml->author->name = $outputXml->author->name; $this->assertEquals($expectedXml, $outputXml); }
/** * Tests OutputXmlConverter->outputResponse() */ public function testOutputResponse() { $inputConverter = new InputXmlConverter(); $outputConverter = new OutputXmlConverter(); $servletRequest = array('url' => '/people/1/@self'); $requestItem = RestRequestItem::createWithRequest($servletRequest, null, $inputConverter, $outputConverter); $requestItem->applyUrlTemplate("/people/{userId}/{groupId}/{personId}"); $response = array('entry' => array('isOwner' => false, 'isViewer' => false, 'displayName' => '1 1', 'id' => '1')); $responseItem = new ResponseItem(null, null, $response); ob_start(); $outputConverter->outputResponse($responseItem, $requestItem); $output = ob_get_clean(); $expected = '<?xml version="1.0" encoding="UTF-8"?> <response> <entry> <isOwner></isOwner> <isViewer></isViewer> <displayName>1 1</displayName> <id>1</id> </entry> </response> '; $this->assertEquals($expected, $output); }
/** * Handler for non-batch requests (REST only has non-batch requests) */ private function handleSingleRequest(SecurityToken $token, $inputConverter, $outputConverter) { //uri example: /social/rest/people/@self /gadgets/api/rest/cache/invalidate $servletRequest = array('url' => substr($_SERVER["REQUEST_URI"], strpos($_SERVER["REQUEST_URI"], '/rest') + 5)); // Php version 5.2.9(linux) doesn't set HTTP_RAW_POST_DATA properly. if (!isset($GLOBALS['HTTP_RAW_POST_DATA'])) { $tmp = file_get_contents('php://input'); if (!empty($tmp)) { $GLOBALS['HTTP_RAW_POST_DATA'] = $tmp; } } if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) { $servletRequest['postData'] = $GLOBALS['HTTP_RAW_POST_DATA']; if (get_magic_quotes_gpc()) { $servletRequest['postData'] = stripslashes($servletRequest['postData']); } } $servletRequest['params'] = array_merge($_GET, $_POST); $requestItem = RestRequestItem::createWithRequest($servletRequest, $token, $inputConverter, $outputConverter); $responseItem = $this->getResponseItem($this->handleRequestItem($requestItem)); if ($responseItem->getError() == null) { $response = $responseItem->getResponse(); if (!$response instanceof DataCollection && !$response instanceof RestfulCollection && count($response)) { $response = array("entry" => $response); $responseItem->setResponse($response); } $outputConverter->outputResponse($responseItem, $requestItem); } else { $this->sendError($responseItem); } }
/** * Handler for non-batch requests (REST only has non-batch requests) */ private function handleSingleRequest(SecurityToken $token, $inputConverter, $outputConverter) { $servletRequest = array('url' => substr($_SERVER["REQUEST_URI"], strlen(Config::get('web_prefix') . '/social/rest'))); if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) { $servletRequest['postData'] = $GLOBALS['HTTP_RAW_POST_DATA']; if (get_magic_quotes_gpc()) { $servletRequest['postData'] = stripslashes($servletRequest['postData']); } } $servletRequest['params'] = array_merge($_GET, $_POST); $requestItem = RestRequestItem::createWithRequest($servletRequest, $token, $inputConverter, $outputConverter); $responseItem = $this->getResponseItem($this->handleRequestItem($requestItem)); if ($responseItem->getError() == null) { $response = $responseItem->getResponse(); if (!$response instanceof DataCollection && !$response instanceof RestfulCollection && count($response)) { $response = array("entry" => $response); $responseItem->setResponse($response); } $outputConverter->outputResponse($responseItem, $requestItem); } else { $this->sendError($responseItem); } }