X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=tests%2FActivityParseTests.php;h=27b751b75e92ceb78ff225fbca79d72d525a6f7f;hb=50070c9b0a0ea792044c8080da08720176866a85;hp=b6980a6bb96a9f521ca9b9a5206af7cafa6c4de8;hpb=7e2af3dcae956c7490df74be8d94fa09a4bab673;p=quix0rs-gnu-social.git
diff --git a/tests/ActivityParseTests.php b/tests/ActivityParseTests.php
index b6980a6bb9..27b751b75e 100644
--- a/tests/ActivityParseTests.php
+++ b/tests/ActivityParseTests.php
@@ -8,7 +8,8 @@ if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
// XXX: we should probably have some common source for this stuff
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
-define('STATUSNET', true);
+define('GNUSOCIAL', true);
+define('STATUSNET', true); // compatibility
require_once INSTALLDIR . '/lib/common.php';
@@ -22,14 +23,26 @@ class ActivityParseTests extends PHPUnit_Framework_TestCase
$this->assertFalse(empty($act));
- $this->assertEquals($act->time, 1243860840);
- $this->assertEquals($act->verb, ActivityVerb::POST);
+ $this->assertEquals(1243860840, $act->time);
+ $this->assertEquals(ActivityVerb::POST, $act->verb);
- $this->assertFalse(empty($act->object));
- $this->assertEquals($act->object->title, 'Punctuation Changeset');
- $this->assertEquals($act->object->type, 'http://versioncentral.example.org/activity/changeset');
- $this->assertEquals($act->object->summary, 'Fixing punctuation because it makes it more readable.');
- $this->assertEquals($act->object->id, 'tag:versioncentral.example.org,2009:/change/1643245');
+ $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()
@@ -46,22 +59,22 @@ class ActivityParseTests extends PHPUnit_Framework_TestCase
$act = new Activity($entry, $feed);
$this->assertFalse(empty($act));
- $this->assertEquals($act->time, 1071340202);
- $this->assertEquals($act->link, 'http://example.org/2003/12/13/atom03.html');
+ $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($act->actor->type, ActivityObject::PERSON);
- $this->assertEquals($act->actor->title, 'John Doe');
- $this->assertEquals($act->actor->id, 'mailto:johndoe@example.com');
+ $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->object));
- $this->assertEquals($act->object->type, ActivityObject::NOTE);
- $this->assertEquals($act->object->id, 'urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a');
- $this->assertEquals($act->object->title, 'Atom-Powered Robots Run Amok');
- $this->assertEquals($act->object->summary, 'Some text.');
- $this->assertEquals($act->object->link, 'http://example.org/2003/12/13/atom03.html');
+ $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));
@@ -88,10 +101,10 @@ class ActivityParseTests extends PHPUnit_Framework_TestCase
$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->assertEquals(array('http://example.net/user/1'), array_keys($act->context->attention));
- $this->assertFalse(empty($act->object));
- $this->assertEquals($act->object->content,
+ $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. #thetime');
$this->assertFalse(empty($act->actor));
@@ -170,6 +183,251 @@ class ActivityParseTests extends PHPUnit_Framework_TestCase
$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("<b>but this is not HTML!</b>",
+ "<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("<b>This is not some XHTML either!</b>
",
+ "<b>This is not some XHTML either!</b>"));
+ 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 <b>escaped non-HTML.</b>",
+ "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 <b>double-escaped text</b>",
+ "Some <b>double-escaped text</b>"));
+ 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));
+ }
+ }
+
+ public function testExample10()
+ {
+ global $_example10;
+ $dom = new DOMDocument();
+ $dom->loadXML($_example10);
+
+ // example 10 is a PuSH item of a post on a group feed, as generated
+ // by 0.9.7 code after migration away from to
+ $feed = $dom->documentElement;
+ $entry = $dom->getElementsByTagName('entry')->item(0);
+ $expected = 'http://lazarus.local/mublog/user/557';
+
+ // Reading just the entry alone should pick up its own
+ // as the actor.
+ $act = new Activity($entry);
+ $this->assertEquals($act->actor->id, $expected);
+
+ // Reading the entry in feed context used to be buggy, picking up
+ // the feed's which referred to the group.
+ // It should now be returning the expected author entry...
+ $act = new Activity($entry, $feed);
+ $this->assertEquals($act->actor->id, $expected);
+ }
+
+ public function testBookmarkRelated()
+ {
+ global $_example11;
+ $dom = new DOMDocument();
+ $dom->loadXML($_example11);
+
+ $feed = $dom->documentElement;
+ $entry = $dom->getElementsByTagName('entry')->item(0);
+
+ $expected = 'http://blog.teambox.com/open-source-companies';
+
+ $links = ActivityUtils::getLinks($entry, 'related');
+
+ $this->assertFalse(empty($links));
+ $this->assertTrue(is_array($links));
+ $this->assertEquals(count($links), 1);
+
+ $url = $links[0]->getAttribute('href');
+
+ $this->assertEquals($url, $expected);
+ }
}
$_example1 = <<
-
+
@<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>
@@ -423,3 +681,336 @@ $_example6 = <<
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;
+
+// Sample PuSH entry from a group feed in 0.9.7
+// Old has been removed from entries in this version.
+// A bug in the order of input processing meant that we were incorrectly
+// reading the feed's instead of the entry's ,
+// causing the entry to get rejected as malformed (groups can't post on
+// their own; we want to see the actual author's info here).
+$_example10 = <<
+
+ StatusNet
+ http://lazarus.local/mublog/api/statusnet/groups/timeline/22.atom
+ grouptest316173 timeline
+ Updates from grouptest316173 on Blaguette!
+ http://lazarus.local/mublog/theme/default/default-avatar-profile.png
+ 2011-01-06T22:44:18+00:00
+
+ http://activitystrea.ms/schema/1.0/group
+ http://lazarus.local/mublog/group/22/id
+ grouptest316173
+
+
+
+
+ grouptest316173
+ grouptest316173
+
+
+ http://activitystrea.ms/schema/1.0/group
+ http://lazarus.local/mublog/group/22/id
+ grouptest316173
+
+
+
+
+ grouptest316173
+ grouptest316173
+
+
+
+
+
+
+
+
+
+ http://activitystrea.ms/schema/1.0/note
+ http://lazarus.local/mublog/notice/1243
+ Group post from local to !grouptest316173, should go out over push.
+ Group post from local to !<span class="vcard"><a href="http://lazarus.local/mublog/group/22/id" class="url"><span class="fn nickname">grouptest316173</span></a></span>, should go out over push.
+
+ http://activitystrea.ms/schema/1.0/post
+ 2011-01-06T22:44:18+00:00
+ 2011-01-06T22:44:18+00:00
+
+ http://activitystrea.ms/schema/1.0/person
+ http://lazarus.local/mublog/user/557
+ Pubtest316173 Smith
+
+
+
+
+ pubtest316173
+ Pubtest316173 Smith
+ Stub account for OStatus tests.
+
+ homepage
+ http://example.org/pubtest316173
+ true
+
+
+
+
+
+
+
+
+
+
+
+EXAMPLE10;
+
+$_example11 = <<
+
+ StatusNet
+ http://freelish.us/api/statuses/user_timeline/1.atom
+ demon timeline
+ Updates from demon on freelish.us!
+ http://avatar.status.net/f/freelishus/1-96-20110331163048.jpeg
+ 2011-05-30T09:36:03-04:00
+
+ http://activitystrea.ms/schema/1.0/person
+ http://freelishus.status.net/user/1
+ demon
+
+
+
+
+
+ 45.50884 -73.58781
+ demon
+ Evan Prodromou
+ Montreal hacker and entrepreneur.
+
+ Montreal, Quebec
+
+
+
+ homepage
+ http://evan.status.net/
+ true
+
+
+
+
+
+ http://activitystrea.ms/schema/1.0/person
+ http://freelishus.status.net/user/1
+ Evan Prodromou
+
+
+
+
+
+ 45.50884 -73.58781
+ demon
+ Evan Prodromou
+ Montreal hacker and entrepreneur.
+
+ Montreal, Quebec
+
+
+
+ homepage
+ http://evan.status.net/
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+ http://activitystrea.ms/schema/1.0/bookmark
+ http://freelish.us/bookmark/9e930c3e-7ed9-47de-aba5-df6c60cec542
+ Why you should build an open-source startup | Teambox Blog
+
+
+ http://activitystrea.ms/schema/1.0/post
+ 2011-05-26T20:36:25+00:00
+ 2011-05-26T20:36:25+00:00
+
+
+
+
+
+
+
+
+
+EXAMPLE11;