/**
  * Tests RestRequestItem->createRequestItemWithRequest()
  */
 public function testCreateRequestItemWithRequest()
 {
     $url = '/people/@viewer/@self?fields=age,name,gender,profileUrl,thumbnailUrl,' . 'status,id&startIndex=0&count=40&orderBy=name&filterBy=all&networkDistance=1';
     $request = array();
     $request['url'] = $url;
     $request['method'] = 'GET';
     $request['postData'] = array();
     $request['postData']['data'] = 'DataTest';
     $this->RestRequestItem->createRequestItemWithRequest($request, $this->getToken());
     //Without the parseTemplate
     $this->assertEquals($url, $this->RestRequestItem->getUrl());
     $this->assertEquals('0', $this->RestRequestItem->getAppId());
     $this->assertEquals(false, $this->RestRequestItem->getUser());
     $this->assertEquals(false, $this->RestRequestItem->getGroup());
     $this->assertEquals('0', $this->RestRequestItem->getStartIndex());
     $this->assertEquals('20', $this->RestRequestItem->getCount());
     $this->assertEquals(PeopleOptions::$sortOrder, $this->RestRequestItem->getOrderBy());
     $this->assertEquals(PeopleOptions::$filterType, $this->RestRequestItem->getFilterBy());
     $this->assertEquals(false, $this->RestRequestItem->getNetworkDistance());
 }
 /**
  * Tests MessagesHandler->handlePut()
  */
 public function testHandlePut()
 {
     $token = BasicSecurityToken::createFromValues('john.doe', 'john.doe', 'app', 'domain', 'appUrl', '1');
     //Create message
     $request = array();
     $request['url'] = '/messages/@viewer/outbox/1';
     $request['postData'] = 'message 1';
     $requestItem = new RestRequestItem();
     $requestItem->createRequestItemWithRequest($request, $token);
     $response = $this->MessagesHandler->handlePut($requestItem);
     $this->assertEquals(NOT_IMPLEMENTED, $response->getError());
     $this->assertEquals("Not implemented", $response->getErrorMessage());
 }
 /**
  * Tests PeopleHandler->handleGet()
  */
 public function testHandleGet()
 {
     $request = array();
     $request['url'] = '/people/@viewer/@self';
     $request['method'] = 'GET';
     $token = BasicSecurityToken::createFromValues('john.doe', 'john.doe', 'app', 'domain', 'appUrl', '1');
     $requestItem = new RestRequestItem();
     $requestItem->createRequestItemWithRequest($request, $token);
     $response = $this->PeopleHandler->handleGet($requestItem);
     $person = $response->getResponse();
     $this->assertEquals('john.doe', $person['id']);
     $this->assertEquals('MALE', $person['gender']['key']);
     $this->assertEquals('Male', $person['gender']['displayValue']);
     $this->assertEquals('Doe', $person['name']['familyName']);
     $this->assertEquals('John', $person['name']['givenName']);
     $this->assertEquals('John Doe', $person['name']['unstructured']);
 }
 /**
  * Tests ActivitiesHandler->handlePut()
  */
 public function testHandlePut()
 {
     $token = BasicSecurityToken::createFromValues('john.doe', 'john.doe', 'app', 'domain', 'appUrl', '1');
     //Create data
     $request = array();
     $request['url'] = '/appdata/@viewer/@self/@app?fields=count';
     $request['method'] = 'POST';
     $request['postData'] = array();
     $request['postData']['count'] = 'TestHandlePut';
     $requestItem = new RestRequestItem();
     $requestItem->createRequestItemWithRequest($request, $token);
     $this->AppDataHandler->handlePut($requestItem);
     //Validate generated data
     $request = array();
     $request['url'] = '/appdata/@viewer/@self/@app?networkDistance=&fields=count';
     $request['method'] = 'GET';
     $requestItem = new RestRequestItem();
     $requestItem->createRequestItemWithRequest($request, $token);
     $response = $this->AppDataHandler->handleGet($requestItem);
     $response = $response->getResponse();
     $entry = $response->getEntry();
     $this->assertEquals('TestHandlePut', $entry['john.doe']['count']);
 }
 /**
  * Tests ActivitiesHandler->handlePut()
  */
 public function testHandlePut()
 {
     return;
     $token = BasicSecurityToken::createFromValues('john.doe', 'john.doe', 'app', 'domain', 'appUrl', '1');
     //Create activity
     $request = array();
     $request['url'] = '/activities/@viewer/@self/@app?networkDistance=';
     $request['method'] = 'POST';
     $request['postData'] = array();
     $request['postData']['id'] = '3';
     $request['postData']['appId'] = '1';
     $request['postData']['userId'] = 'john.doe';
     $request['postData']['title'] = 'TestPost 3';
     $request['postData']['body'] = 'TestBody 3';
     $requestItem = new RestRequestItem();
     $requestItem->createRequestItemWithRequest($request, $token);
     $this->ActivitiesHandler->handlePut($requestItem);
     //Validate generated activity
     $request = array();
     $request['url'] = '/activities/@viewer/@self/@app';
     $request['method'] = 'GET';
     $requestItem = new RestRequestItem();
     $requestItem->createRequestItemWithRequest($request, $token);
     $response = $this->ActivitiesHandler->handleGet($requestItem);
     $response = $response->getResponse();
     $entry = $response->getEntry();
     $this->assertEquals('2', $response->getTotalResults());
     //First Entry
     $this->assertEquals('1', $entry[0]['id']);
     $this->assertEquals('john.doe', $entry[0]['userId']);
     $this->assertEquals('yellow', $entry[0]['title']);
     $this->assertEquals('what a color!', $entry[0]['body']);
     //Second Entry
     $this->assertEquals('3', $entry[1]['id']);
     $this->assertEquals('john.doe', $entry[1]['userId']);
     $this->assertEquals('TestPost 3', $entry[1]['title']);
     $this->assertEquals('TestBody 3', $entry[1]['body']);
 }
 private function handleBatchProxyRequest($token)
 {
     // Is this is a multipath/mixed post? Check content type:
     if (isset($GLOBALS['HTTP_RAW_POST_DATA']) && strpos($_SERVER['CONTENT_TYPE'], 'multipart/mixed') !== false && strpos($_SERVER['CONTENT_TYPE'], 'boundary=') !== false) {
         // Ok looks swell, see what our boundry is..
         $boundry = substr($_SERVER['CONTENT_TYPE'], strpos($_SERVER['CONTENT_TYPE'], 'boundary=') + strlen('boundary='));
         // Split up requests per boundry
         $requests = explode($boundry, $GLOBALS['HTTP_RAW_POST_DATA']);
         $responses = array();
         foreach ($requests as $request) {
             $request = trim($request);
             if (!empty($request)) {
                 // extractBatchRequest() does the magic parsing of the raw post data to a meaninful request array
                 $request = $this->extractBatchRequest($request);
                 $requestItem = new RestRequestItem();
                 $requestItem->createRequestItemWithRequest($request, $token);
                 $responses[] = array('request' => $requestItem, 'response' => $this->getResponseItem($requestItem));
             }
         }
     } else {
         $this->outputError(new ResponseItem(BAD_REQUEST, "Invalid multipart/mixed request"));
     }
     return $responses;
 }