documentElement); $this->assertFalse(empty($act)); $this->assertEquals(1243860840, $act->time); $this->assertEquals(ActivityVerb::POST, $act->verb); $this->assertFalse(empty($act->objects[0])); $this->assertEquals('Punctuation Changeset', $act->objects[0]->title); $this->assertEquals('http://versioncentral.example.org/activity/changeset', $act->objects[0]->type); $this->assertEquals('Fixing punctuation because it makes it more readable.', $act->objects[0]->summary); $this->assertEquals('tag:versioncentral.example.org,2009:/change/1643245', $act->objects[0]->id); } public function testExample2() { global $_example2; $dom = DOMDocument::loadXML($_example2); $act = new Activity($dom->documentElement); $this->assertFalse(empty($act)); // Did we handle correctly with a typical payload? $this->assertEquals("

Geraldine posted a Photo on PhotoPanic

\n " . "", trim($act->content)); } public function testExample3() { global $_example3; $dom = DOMDocument::loadXML($_example3); $feed = $dom->documentElement; $entries = $feed->getElementsByTagName('entry'); $entry = $entries->item(0); $act = new Activity($entry, $feed); $this->assertFalse(empty($act)); $this->assertEquals(1071340202, $act->time); $this->assertEquals('http://example.org/2003/12/13/atom03.html', $act->link); $this->assertEquals($act->verb, ActivityVerb::POST); $this->assertFalse(empty($act->actor)); $this->assertEquals(ActivityObject::PERSON, $act->actor->type); $this->assertEquals('John Doe', $act->actor->title); $this->assertEquals('mailto:johndoe@example.com', $act->actor->id); $this->assertFalse(empty($act->objects[0])); $this->assertEquals(ActivityObject::NOTE, $act->objects[0]->type); $this->assertEquals('urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a', $act->objects[0]->id); $this->assertEquals('Atom-Powered Robots Run Amok', $act->objects[0]->title); $this->assertEquals('Some text.', $act->objects[0]->summary); $this->assertEquals('http://example.org/2003/12/13/atom03.html', $act->objects[0]->link); $this->assertFalse(empty($act->context)); $this->assertTrue(empty($act->target)); $this->assertEquals($act->entry, $entry); $this->assertEquals($act->feed, $feed); } public function testExample4() { global $_example4; $dom = DOMDocument::loadXML($_example4); $entry = $dom->documentElement; $act = new Activity($entry); $this->assertFalse(empty($act)); $this->assertEquals(1266547958, $act->time); $this->assertEquals('http://example.net/notice/14', $act->link); $this->assertFalse(empty($act->context)); $this->assertEquals('http://example.net/notice/12', $act->context->replyToID); $this->assertEquals('http://example.net/notice/12', $act->context->replyToUrl); $this->assertEquals('http://example.net/conversation/11', $act->context->conversation); $this->assertEquals(array('http://example.net/user/1'), $act->context->attention); $this->assertFalse(empty($act->objects[0])); $this->assertEquals($act->objects[0]->content, '@evan now is the time for all good men to come to the aid of their country. #'); $this->assertFalse(empty($act->actor)); } public function testExample5() { global $_example5; $dom = DOMDocument::loadXML($_example5); $feed = $dom->documentElement; // @todo Test feed elements $entries = $feed->getElementsByTagName('entry'); $entry = $entries->item(0); $act = new Activity($entry, $feed); // Post $this->assertEquals($act->verb, ActivityVerb::POST); $this->assertFalse(empty($act->context)); // Actor w/Portable Contacts stuff $this->assertFalse(empty($act->actor)); $this->assertEquals($act->actor->type, ActivityObject::PERSON); $this->assertEquals($act->actor->title, 'Test User'); $this->assertEquals($act->actor->id, 'http://example.net/mysite/user/3'); $this->assertEquals($act->actor->link, 'http://example.net/mysite/testuser'); $avatars = $act->actor->avatarLinks; $this->assertEquals( $avatars[0]->url, 'http://example.net/mysite/avatar/3-96-20100224004207.jpeg' ); $this->assertEquals($act->actor->displayName, 'Test User'); $poco = $act->actor->poco; $this->assertEquals($poco->preferredUsername, 'testuser'); $this->assertEquals($poco->address->formatted, 'San Francisco, CA'); $this->assertEquals($poco->urls[0]->type, 'homepage'); $this->assertEquals($poco->urls[0]->value, 'http://example.com/blog.html'); $this->assertEquals($poco->urls[0]->primary, 'true'); $this->assertEquals($act->actor->geopoint, '37.7749295 -122.4194155'); } public function testExample6() { global $_example6; $dom = DOMDocument::loadXML($_example6); $rss = $dom->documentElement; $channels = $dom->getElementsByTagName('channel'); $channel = $channels->item(0); $items = $channel->getElementsByTagName('item'); $item = $items->item(0); $act = new Activity($item, $channel); $this->assertEquals($act->verb, ActivityVerb::POST); $this->assertEquals($act->id, 'http://en.blog.wordpress.com/?p=3857'); $this->assertEquals($act->link, 'http://en.blog.wordpress.com/2010/03/03/rub-a-dub-dub-in-the-pubsubhubbub/'); $this->assertEquals($act->title, 'Rub-a-Dub-Dub in the PubSubHubbub'); $this->assertEquals($act->time, 1267634892); $actor = $act->actor; $this->assertFalse(empty($actor)); $this->assertEquals($actor->title, "Joseph Scott"); } public function testExample7() { global $_example7; $dom = DOMDocument::loadXML($_example7); $rss = $dom->documentElement; $channels = $dom->getElementsByTagName('channel'); $channel = $channels->item(0); $items = $channel->getElementsByTagName('item'); $item = $items->item(0); $act = new Activity($item, $channel); $this->assertEquals(ActivityVerb::POST, $act->verb); $this->assertEquals('http://evanpro.posterous.com/checking-out-captain-bones', $act->link); $this->assertEquals('http://evanpro.posterous.com/checking-out-captain-bones', $act->id); $this->assertEquals('Checking out captain bones', $act->title); $this->assertEquals(1269095551, $act->time); $actor = $act->actor; $this->assertEquals(ActivityObject::PERSON, $actor->type); $this->assertEquals('http://posterous.com/people/3sDslhaepotz', $actor->id); $this->assertEquals('Evan Prodromou', $actor->title); $this->assertNull($actor->summary); $this->assertNull($actor->content); $this->assertEquals('http://posterous.com/people/3sDslhaepotz', $actor->link); $this->assertNull($actor->source); $this->assertTrue(is_array($actor->avatarLinks)); $this->assertEquals(1, count($actor->avatarLinks)); $this->assertEquals('http://files.posterous.com/user_profile_pics/480326/2009-08-05-142447.jpg', $actor->avatarLinks[0]->url); $this->assertNotNull($actor->poco); $this->assertEquals('evanpro', $actor->poco->preferredUsername); $this->assertEquals('Evan Prodromou', $actor->poco->displayName); $this->assertNull($actor->poco->note); $this->assertNull($actor->poco->address); $this->assertEquals(0, count($actor->poco->urls)); } // Media test - cliqset public function testExample8() { global $_example8; $dom = DOMDocument::loadXML($_example8); $feed = $dom->documentElement; $entries = $feed->getElementsByTagName('entry'); $entry = $entries->item(0); $act = new Activity($entry, $feed); $this->assertFalse(empty($act)); $this->assertEquals($act->time, 1269221753); $this->assertEquals($act->verb, ActivityVerb::POST); $this->assertEquals($act->summary, 'zcopley posted 5 photos on Flickr'); $this->assertFalse(empty($act->objects)); $this->assertEquals(sizeof($act->objects), 5); $this->assertEquals($act->objects[0]->type, ActivityObject::PHOTO); $this->assertEquals($act->objects[0]->title, 'IMG_1368'); $this->assertNull($act->objects[0]->description); $this->assertEquals( $act->objects[0]->thumbnail, 'http://media.cliqset.com/6f6fbee9d7dfbffc73b6ef626275eb5f_thumb.jpg' ); $this->assertEquals( $act->objects[0]->link, 'http://www.flickr.com/photos/zcopley/4452933806/' ); $this->assertEquals($act->objects[1]->type, ActivityObject::PHOTO); $this->assertEquals($act->objects[1]->title, 'IMG_1365'); $this->assertNull($act->objects[1]->description); $this->assertEquals( $act->objects[1]->thumbnail, 'http://media.cliqset.com/b8f3932cd0bba1b27f7c8b3ef986915e_thumb.jpg' ); $this->assertEquals( $act->objects[1]->link, 'http://www.flickr.com/photos/zcopley/4442630390/' ); $this->assertEquals($act->objects[2]->type, ActivityObject::PHOTO); $this->assertEquals($act->objects[2]->title, 'Classic'); $this->assertEquals( $act->objects[2]->description, '-Powered by pikchur.com/n0u' ); $this->assertEquals( $act->objects[2]->thumbnail, 'http://media.cliqset.com/fc54c15f850b7a9a8efa644087a48c91_thumb.jpg' ); $this->assertEquals( $act->objects[2]->link, 'http://www.flickr.com/photos/zcopley/4430754103/' ); $this->assertEquals($act->objects[3]->type, ActivityObject::PHOTO); $this->assertEquals($act->objects[3]->title, 'IMG_1363'); $this->assertNull($act->objects[3]->description); $this->assertEquals( $act->objects[3]->thumbnail, 'http://media.cliqset.com/4b1d307c9217e2114391a8b229d612cb_thumb.jpg' ); $this->assertEquals( $act->objects[3]->link, 'http://www.flickr.com/photos/zcopley/4416969717/' ); $this->assertEquals($act->objects[4]->type, ActivityObject::PHOTO); $this->assertEquals($act->objects[4]->title, 'IMG_1361'); $this->assertNull($act->objects[4]->description); $this->assertEquals( $act->objects[4]->thumbnail, 'http://media.cliqset.com/23d9b4b96b286e0347d36052f22f6e60_thumb.jpg' ); $this->assertEquals( $act->objects[4]->link, 'http://www.flickr.com/photos/zcopley/4417734232/' ); } public function testAtomContent() { $tests = array(array("Some regular plain text.", "Some regular plain text."), array("<b>this is not HTML</b>", "<b>this is not HTML</b>"), array("Some regular plain HTML.", "Some regular plain HTML."), array("<b>this is too HTML</b>", "this is too HTML"), array("&lt;b&gt;but this is not HTML!&lt;/b&gt;", "<b>but this is not HTML!</b>"), array("
Some regular plain XHTML.
", "Some regular plain XHTML."), array("
This is some XHTML!
", "This is some XHTML!"), array("
<b>This is not some XHTML!</b>
", "<b>This is not some XHTML!</b>"), array("
&lt;b&gt;This is not some XHTML either!&lt;/b&gt;
", "&lt;b&gt;This is not some XHTML either!&lt;/b&gt;")); foreach ($tests as $data) { list($source, $output) = $data; $xml = "" . "http://example.com/fakeid" . "Test" . "Atom content tests" . $source . ""; $dom = DOMDocument::loadXML($xml); $act = new Activity($dom->documentElement); $this->assertFalse(empty($act)); $this->assertEquals($output, trim($act->content)); } } public function testRssContent() { $tests = array(array("Some regular plain HTML.", "Some regular plain HTML."), array("Some <b>exciting bold HTML</b>", "Some exciting bold HTML"), array("Some &lt;b&gt;escaped non-HTML.&lt;/b&gt;", "Some <b>escaped non-HTML.</b>"), array("Some plain text.", "Some plain text."), array("Some <b>non-HTML text</b>", "Some <b>non-HTML text</b>"), array("Some &lt;b&gt;double-escaped text&lt;/b&gt;", "Some &lt;b&gt;double-escaped text&lt;/b&gt;")); foreach ($tests as $data) { list($source, $output) = $data; $xml = "" . "http://example.com/fakeid" . "RSS content tests" . $source . ""; $dom = DOMDocument::loadXML($xml); $act = new Activity($dom->documentElement); $this->assertFalse(empty($act)); $this->assertEquals($output, trim($act->content)); } } } $_example1 = << tag:versioncentral.example.org,2009:/commit/1643245 2009-06-01T12:54:00Z Geraldine committed a change to yate Geraldine just committed a change to yate on VersionCentral http://activitystrea.ms/schema/1.0/post http://versioncentral.example.org/activity/commit http://versioncentral.example.org/activity/changeset tag:versioncentral.example.org,2009:/change/1643245 Punctuation Changeset Fixing punctuation because it makes it more readable. EXAMPLE1; $_example2 = << tag:photopanic.example.com,2008:activity01 Geraldine posted a Photo on PhotoPanic 2008-11-02T15:29:00Z http://activitystrea.ms/schema/1.0/post tag:photopanic.example.com,2008:photo01 My Cat 2008-11-02T15:29:00Z tag:atomactivity.example.com,2008:photo Geraldine's Photos <p>Geraldine posted a Photo on PhotoPanic</p> <img src="/geraldine/photo1.jpg"> EXAMPLE2; $_example3 = << Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6 2003-12-13T18:30:02Z John Doe johndoe@example.com Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 2003-12-13T18:30:02Z Some text. EXAMPLE3; $_example4 = << @evan now is the time for all good men to come to the aid of their country. #thetime @evan now is the time for all good men to come to the aid of their country. #thetime spock http://example.net/user/2 http://activitystrea.ms/schema/1.0/person http://example.net/user/2 spock http://example.net/notice/14 2010-02-19T02:52:38+00:00 2010-02-19T02:52:38+00:00 @<span class="vcard"><a href="http://example.net/user/1" class="url"><span class="fn nickname">evan</span></a></span> now is the time for all good men to come to the aid of their country. #<span class="tag"><a href="http://example.net/tag/thetime" rel="tag">thetime</a></span> EXAMPLE4; $_example5 = << 3 testuser timeline Updates from testuser on Zach Dev! http://example.net/mysite/avatar/3-96-20100224004207.jpeg 2010-02-24T06:38:49+00:00 testuser http://example.net/mysite/user/3 http://activitystrea.ms/schema/1.0/person http://example.net/mysite/user/3 Test User 37.7749295 -122.4194155 testuser Test User Just another test user. San Francisco, CA homepage http://example.com/blog.html true Hey man, is that Freedom Code?! #freedom #hippy Hey man, is that Freedom Code?! #freedom #hippy testuser http://example.net/mysite/user/3 http://activitystrea.ms/schema/1.0/person http://example.net/mysite/user/3 Test User 37.7749295 -122.4194155 testuser Test User Just another test user. San Francisco, CA homepage http://example.com/blog.html true http://example.net/mysite/notice/7 2010-02-24T00:53:06+00:00 2010-02-24T00:53:06+00:00 Hey man, is that Freedom Code?! #<span class="tag"><a href="http://example.net/mysite/tag/freedom" rel="tag">freedom</a></span> #<span class="tag"><a href="http://example.net/mysite/tag/hippy" rel="tag">hippy</a></span> 37.8313160 -122.2852473 EXAMPLE5; $_example6 = << WordPress.com News http://en.blog.wordpress.com The latest news on WordPress.com and the WordPress community. Thu, 18 Mar 2010 23:25:35 +0000 http://wordpress.com/ en hourly 1 http://www.gravatar.com/blavatar/e6392390e3bcfadff3671c5a5653d95b?s=96&d=http://s2.wp.com/i/buttonw-com.png WordPress.com News http://en.blog.wordpress.com EXAMPLE6; $_example7 = << evanpro's posterous http://evanpro.posterous.com Most recent posts at evanpro's posterous posterous.com Sat, 20 Mar 2010 07:32:31 -0700 Checking out captain bones http://evanpro.posterous.com/checking-out-captain-bones http://evanpro.posterous.com/checking-out-captain-bones

Bones!

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/480326/2009-08-05-142447.jpg http://posterous.com/people/3sDslhaepotz Evan Prodromou evanpro Evan Prodromou
EXAMPLE7; $_example8 = << Activity Stream for: zcopley http://cliqset.com/feed/atom?uid=zcopley 0 http://activitystrea.ms/schema/1.0/post 2010-03-22T01:35:53.000Z flickr http://flickr.com http://cliqset-services.s3.amazonaws.com/flickr.png http://activitystrea.ms/schema/1.0/photo IMG_1368 http://activitystrea.ms/schema/1.0/photo IMG_1365 http://activitystrea.ms/schema/1.0/photo Classic -Powered by pikchur.com/n0u http://activitystrea.ms/schema/1.0/photo IMG_1363 http://activitystrea.ms/schema/1.0/photo IMG_1361 zcopley posted some photos on Flickr zcopley posted 5 photos on Flickr 2010-03-22T20:46:42.778Z tag:cliqset.com,2010-03-22:/user/zcopley/SVgAZubGhtAnSAee zcopley http://cliqset.com/user/zcopley http://activitystrea.ms/schema/1.0/person zcopley Zach Copley EXAMPLE8; $_example9 = << Google Buzz 2010-03-22T01:55:53.596Z tag:google.com,2009:buzz-feed/public/posted/117848251937215158042 Google - Google Buzz Buzz by Zach Copley from Flickr IMG_1366 2010-03-18T04:29:23.000Z 2010-03-18T05:14:03.325Z tag:google.com,2009:buzz/z12zwdhxowq2d13q204cjr04kzu0cns5gh0 Zach Copley http://www.google.com/profiles/zcopley <div>IMG_1366</div> IMG_1366 IMG_1365 http://activitystrea.ms/schema/1.0/post http://activitystrea.ms/schema/1.0/photo tag:google.com,2009:buzz/z12zwdhxowq2d13q204cjr04kzu0cns5gh0 Buzz by Zach Copley from Flickr <div>IMG_1366</div> 0 EXAMPLE9;