curlRest($url, $postData, 'application/json'); $this->assertFalse(empty($ret)); $album = json_decode($ret, true); $this->album = $album['entry']; } protected function tearDown() { // $url = '/albums/1/@self'; // $ret = $this->curlRest($url . '/' . urlencode($this->album['id']), '', 'application/json', 'DELETE'); // $this->assertTrue(empty($ret), "Delete the created album failed. Response: $ret"); } private function verifyLifeCycle($postData, $postDataFormat) { $url = '/mediaitems/1/@self/' . $this->album['id']; $ret = $this->curlRest($url, $postData, $postDataFormat); $mediaItem = json_decode($ret, true); $mediaItem = $mediaItem['entry']; $ret = $this->curlRest($url . '/' . urlencode($mediaItem['id']), '', 'application/json', 'GET'); $this->assertFalse(empty($ret)); $fetched = json_decode($ret, true); $fetched = $fetched['entry'][0]; $this->assertEquals('http://www.libpng.org/pub/png/img_png/pngnow.png', $fetched['thumbnailUrl'], "thumbnailUrl should be same."); $this->assertEquals('image/png', $fetched['mimeType'], "mimeType should be same."); $this->assertEquals('IMAGE', $fetched['type'], "type should be same."); $fetched['thumbnailUrl'] = 'http://changed.com/tn.png'; $ret = $this->curlRest($url . '/' . urlencode($mediaItem['id']), json_encode($fetched), 'application/json', 'PUT'); $ret = $this->curlRest($url . '/' . urlencode($mediaItem['id']), '', 'application/json', 'GET'); $this->assertFalse(empty($ret)); $fetched = json_decode($ret, true); $fetched = $fetched['entry'][0]; $this->assertEquals('http://changed.com/tn.png', $fetched['thumbnailUrl'], "thumbnailUrl should be same."); $this->assertEquals('image/png', $fetched['mimeType'], "mimeType should be same."); $this->assertEquals('IMAGE', $fetched['type'], "type should be same."); $ret = $this->curlRest($url . '/' . urlencode($mediaItem['id']), '', 'application/json', 'DELETE'); $this->assertTrue(empty($ret), "Delete the created mediaItem failed. Response: $ret"); $ret = $this->curlRest($url . '/' . urlencode($mediaItem['id']), '', 'application/json', 'GET'); $fetched = json_decode($ret, true); $fetched = $fetched['entry']; $this->assertTrue(empty($fetched)); } public function testLifeCycleInJson() { $postData = '{ "id" : "11223344", "thumbnailUrl" : "http://www.libpng.org/pub/png/img_png/pngnow.png", "mimeType" : "image/png", "type" : "image", "url" : "http://www.google.com/intl/en_ALL/images/logo.gif", "albumId" : "' . $this->album['id'] . '" }'; $this->verifyLifeCycle($postData, 'application/json'); } public function testLifeCycleInXml() { $postData = ' 11223344 http://www.libpng.org/pub/png/img_png/pngnow.png image/png image http://www.google.com/intl/en_ALL/images/logo.gif ' . $this->album['id'] . ' '; $this->verifyLifeCycle($postData, 'application/xml'); } public function testLifeCycleInAtom() { $postData = ' 11223344 http://www.libpng.org/pub/png/img_png/pngnow.png image/png image http://www.google.com/intl/en_ALL/images/logo.gif ' . $this->album['id'] . ' <updated>2003-12-13T18:30:02Z</updated> <author><url>example.org:55443322</url></author> <id>urn:guid:example.org:11223344</id> </entry>'; $this->verifyLifeCycle($postData, 'application/atom+xml'); } public function testLifeCycleWithActivity() { // Creates the media item. $postData = '{ "id" : "11223344", "thumbnailUrl" : "http://www.libpng.org/pub/png/img_png/pngnow.png", "mimeType" : "image/png", "type" : "image", "url" : "http://www.libpng.org/pub/png/img_png/pngnow.png", "albumId" : "' . $this->album['id'] . '" }'; $url = '/mediaitems/1/@self/' . $this->album['id']; $ret = $this->curlRest($url, $postData, 'application/json'); $mediaItem = json_decode($ret, true); $mediaItem = $mediaItem['entry']; // Creates the activity. $activityUrl = '/activities/1/@self'; $randomTitle = "[" . rand(0, 2048) . "] test activity"; $postData = '{ "id" : "http://example.org/activities/example.org:87ead8dead6beef/self/af3778", "title" : "' . $randomTitle . '", "updated" : "2008-02-20T23:35:37.266Z", "body" : "Some details for some activity", "bodyId" : "383777272", "url" : "http://api.example.org/activity/feeds/.../af3778", "userId" : "example.org:34KJDCSKJN2HHF0DW20394", "mediaItems" : [ { "id": ' . $mediaItem['id'] . ', "albumId": "' . $mediaItem['albumId'] . '" } ] }'; $ret = $this->curlRest($activityUrl, $postData, 'application/json'); $this->assertTrue(empty($ret), "Create activity failed. Response: $ret"); // Verifyies data was written correctly $ret = $this->curlRest($activityUrl . '?count=20', '', 'application/json', 'GET'); $retDecoded = json_decode($ret, true); $this->assertTrue($ret != $retDecoded && $ret != null, "Invalid json string in return: $ret"); // Sees if we can find our just created activity $activityId = null; foreach ($retDecoded['entry'] as $entry) { if ($entry['title'] == $randomTitle) { $activityId = $entry['id']; break; } } $this->assertNotNull($activityId, "Couldn't find created activity."); $ret = $this->curlRest($activityUrl . "/@app/$activityId", '', 'application/json', 'DELETE'); $this->assertTrue(empty($ret), "Delete activity failed. Repsonse: $ret"); $ret = $this->curlRest($url . '/' . urlencode($mediaItem['id']), '', 'application/json', 'DELETE'); $this->assertTrue(empty($ret), "Delete the created mediaItem failed. Response: $ret"); } }