コード例 #1
0
    /**
     * 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);
    }
コード例 #2
0
 /**
  * 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);
 }
コード例 #3
0
 /**
  * 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);
 }
コード例 #4
0
    /**
     * 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);
    }
コード例 #5
0
    /**
     * 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);
    }
コード例 #6
0
 /**
  * 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);
     }
 }
コード例 #7
0
 /**
  * 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);
     }
 }