forked from GNUsocial/gnu-social
		
	Merge branch 'nightly' of git.gnu.io:gnu/gnu-social into nightly
This commit is contained in:
		| @@ -941,11 +941,6 @@ class Profile extends Managed_DataObject | |||||||
|  |  | ||||||
|     function delete($useWhere=false) |     function delete($useWhere=false) | ||||||
|     { |     { | ||||||
|         // just in case it hadn't been done before... (usually set before adding deluser to queue handling!) |  | ||||||
|         if (!$this->hasRole(Profile_role::DELETED)) { |  | ||||||
|             $this->grantRole(Profile_role::DELETED); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $this->_deleteNotices(); |         $this->_deleteNotices(); | ||||||
|         $this->_deleteSubscriptions(); |         $this->_deleteSubscriptions(); | ||||||
|         $this->_deleteTags(); |         $this->_deleteTags(); | ||||||
| @@ -957,6 +952,7 @@ class Profile extends Managed_DataObject | |||||||
|         // not on individual objects. |         // not on individual objects. | ||||||
|         $related = array('Reply', |         $related = array('Reply', | ||||||
|                          'Group_member', |                          'Group_member', | ||||||
|  |         				 'Profile_role' | ||||||
|                          ); |                          ); | ||||||
|         Event::handle('ProfileDeleteRelated', array($this, &$related)); |         Event::handle('ProfileDeleteRelated', array($this, &$related)); | ||||||
|  |  | ||||||
| @@ -966,6 +962,8 @@ class Profile extends Managed_DataObject | |||||||
|             $inst->delete(); |             $inst->delete(); | ||||||
|         } |         } | ||||||
|          |          | ||||||
|  |         $this->grantRole(Profile_role::DELETED); | ||||||
|  |  | ||||||
|         $localuser = User::getKV('id', $this->id); |         $localuser = User::getKV('id', $this->id); | ||||||
|         if ($localuser instanceof User) { |         if ($localuser instanceof User) { | ||||||
|             $localuser->delete(); |             $localuser->delete(); | ||||||
|   | |||||||
| @@ -290,6 +290,11 @@ class User extends Managed_DataObject | |||||||
|                 throw new ServerException(_m('Could not insert profile data for new user.')); |                 throw new ServerException(_m('Could not insert profile data for new user.')); | ||||||
|             } |             } | ||||||
|              |              | ||||||
|  |             // Necessary because id has been known to be reissued. | ||||||
|  |             if ($profile->hasRole(Profile_role::DELETED)) { | ||||||
|  |             	$profile->revokeRole(Profile_role::DELETED); | ||||||
|  |             } | ||||||
|  |  | ||||||
|             $user->id = $id; |             $user->id = $id; | ||||||
|  |  | ||||||
|             if (!empty($uri)) { |             if (!empty($uri)) { | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ class Command | |||||||
|  |  | ||||||
|     function __construct($user=null) |     function __construct($user=null) | ||||||
|     { |     { | ||||||
|         $this->scoped = $user->getProfile(); |         $this->scoped = empty($user)?null:$user->getProfile(); | ||||||
|         $this->user = $user; |         $this->user = $user; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -126,15 +126,17 @@ class Nickname | |||||||
|      */ |      */ | ||||||
|     public static function normalize($str, $checkuse=false) |     public static function normalize($str, $checkuse=false) | ||||||
|     { |     { | ||||||
|  |         if (mb_strlen($str) > self::MAX_LEN) { | ||||||
|  |             // Display forms must also fit! | ||||||
|  |             throw new NicknameTooLongException(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         // We should also have UTF-8 normalization (å to a etc.) |         // We should also have UTF-8 normalization (å to a etc.) | ||||||
|         $str = trim($str); |         $str = trim($str); | ||||||
|         $str = str_replace('_', '', $str); |         $str = str_replace('_', '', $str); | ||||||
|         $str = mb_strtolower($str); |         $str = mb_strtolower($str); | ||||||
|  |  | ||||||
|         if (mb_strlen($str) > self::MAX_LEN) { |         if (mb_strlen($str) < 1) { | ||||||
|             // Display forms must also fit! |  | ||||||
|             throw new NicknameTooLongException(); |  | ||||||
|         } elseif (mb_strlen($str) < 1) { |  | ||||||
|             throw new NicknameEmptyException(); |             throw new NicknameEmptyException(); | ||||||
|         } elseif (!self::isCanonical($str)) { |         } elseif (!self::isCanonical($str)) { | ||||||
|             throw new NicknameInvalidException(); |             throw new NicknameInvalidException(); | ||||||
| @@ -172,6 +174,8 @@ class Nickname | |||||||
|      public static function isBlacklisted($str) |      public static function isBlacklisted($str) | ||||||
|      { |      { | ||||||
|          $blacklist = common_config('nickname', 'blacklist'); |          $blacklist = common_config('nickname', 'blacklist'); | ||||||
|  |          if(!$blacklist) | ||||||
|  |          	return false; | ||||||
|          return in_array($str, $blacklist); |          return in_array($str, $blacklist); | ||||||
|      } |      } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -570,4 +570,28 @@ class TwitterBridgePlugin extends Plugin | |||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     /** | ||||||
|  |      * Set the object_type field of previously imported Twitter notices to | ||||||
|  |      * ActivityObject::NOTE if they are unset. Null object_type caused a notice | ||||||
|  |      * not to show on the timeline. | ||||||
|  |      */ | ||||||
|  |     public function onEndUpgrade() | ||||||
|  |     { | ||||||
|  |     	printfnq("Ensuring all Twitter notices have an object_type..."); | ||||||
|  |     	 | ||||||
|  |     	$notice = new Notice(); | ||||||
|  |     	$notice->whereAdd("source='twitter'"); | ||||||
|  |     	$notice->whereAdd('object_type IS NULL'); | ||||||
|  |     	 | ||||||
|  |     	if ($notice->find()) { | ||||||
|  |     		while ($notice->fetch()) { | ||||||
|  |     			$orig = Notice::getKV('id', $notice->id); | ||||||
|  |     			$notice->object_type = ActivityObject::NOTE; | ||||||
|  |     			$notice->update($orig); | ||||||
|  |     		} | ||||||
|  |     	} | ||||||
|  |     	 | ||||||
|  |     	printfnq("DONE.\n"); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -137,7 +137,10 @@ class TwitterImport | |||||||
|                                           'twitter', |                                           'twitter', | ||||||
|                                           array('repeat_of' => $original->id, |                                           array('repeat_of' => $original->id, | ||||||
|                                                 'uri' => $statusUri, |                                                 'uri' => $statusUri, | ||||||
|                                                 'is_local' => Notice::GATEWAY)); |                                                 'is_local' => Notice::GATEWAY, | ||||||
|  |                                           		'object_type' => ActivityObject::NOTE, | ||||||
|  |                                           		'verb' => ActivityVerb::POST | ||||||
|  |                                           )); | ||||||
|                 common_log(LOG_INFO, "Saved {$repeat->id} as a repeat of {$original->id}"); |                 common_log(LOG_INFO, "Saved {$repeat->id} as a repeat of {$original->id}"); | ||||||
|                 Notice_to_status::saveNew($repeat->id, $statusId); |                 Notice_to_status::saveNew($repeat->id, $statusId); | ||||||
|                 return $repeat; |                 return $repeat; | ||||||
| @@ -150,6 +153,7 @@ class TwitterImport | |||||||
|         $notice->uri        	= $statusUri; |         $notice->uri        	= $statusUri; | ||||||
|         $notice->url        	= $statusUri; |         $notice->url        	= $statusUri; | ||||||
|         $notice->verb       	= ActivityVerb::POST; |         $notice->verb       	= ActivityVerb::POST; | ||||||
|  |         $notice->object_type 	= ActivityObject::NOTE; | ||||||
|         $notice->created    	= strftime( |         $notice->created    	= strftime( | ||||||
|             '%Y-%m-%d %H:%M:%S', |             '%Y-%m-%d %H:%M:%S', | ||||||
|             strtotime($status->created_at) |             strtotime($status->created_at) | ||||||
|   | |||||||
| @@ -15,19 +15,17 @@ require_once INSTALLDIR . '/lib/common.php'; | |||||||
|  |  | ||||||
| class ActivityGenerationTests extends PHPUnit_Framework_TestCase | class ActivityGenerationTests extends PHPUnit_Framework_TestCase | ||||||
| { | { | ||||||
|     var $author1 = null; |     static $author1 = null; | ||||||
|     var $author2 = null; |     static $author2 = null; | ||||||
|  |  | ||||||
|     var $targetUser1 = null; |     static $targetUser1 = null; | ||||||
|     var $targetUser2 = null; |     static $targetUser2 = null; | ||||||
|  |  | ||||||
|     var $targetGroup1 = null; |     static $targetGroup1 = null; | ||||||
|     var $targetGroup2 = null; |     static $targetGroup2 = null; | ||||||
|  |  | ||||||
|     function __construct() |     public static function setUpBeforeClass() | ||||||
|     { |     { | ||||||
|         parent::__construct(); |  | ||||||
|  |  | ||||||
|         $authorNick1 = 'activitygenerationtestsuser' . common_random_hexstr(4); |         $authorNick1 = 'activitygenerationtestsuser' . common_random_hexstr(4); | ||||||
|         $authorNick2 = 'activitygenerationtestsuser' . common_random_hexstr(4); |         $authorNick2 = 'activitygenerationtestsuser' . common_random_hexstr(4); | ||||||
|  |  | ||||||
| @@ -37,24 +35,25 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|         $groupNick1 = 'activitygenerationtestsgroup' . common_random_hexstr(4); |         $groupNick1 = 'activitygenerationtestsgroup' . common_random_hexstr(4); | ||||||
|         $groupNick2 = 'activitygenerationtestsgroup' . common_random_hexstr(4); |         $groupNick2 = 'activitygenerationtestsgroup' . common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $this->author1 = User::register(array('nickname' => $authorNick1, |         try{ | ||||||
|  |         	self::$author1 = User::register(array('nickname' => $authorNick1, | ||||||
|                                               'email' => $authorNick1 . '@example.net', |                                               'email' => $authorNick1 . '@example.net', | ||||||
|                                               'email_confirmed' => true)); |                                               'email_confirmed' => true)); | ||||||
|  |  | ||||||
|         $this->author2 = User::register(array('nickname' => $authorNick2, |         	self::$author2 = User::register(array('nickname' => $authorNick2, | ||||||
|                                               'email' => $authorNick2 . '@example.net', |                                               'email' => $authorNick2 . '@example.net', | ||||||
|                                               'email_confirmed' => true)); |                                               'email_confirmed' => true)); | ||||||
|  |  | ||||||
|         $this->targetUser1 = User::register(array('nickname' => $targetNick1, |         	self::$targetUser1 = User::register(array('nickname' => $targetNick1, | ||||||
|                                                   'email' => $targetNick1 . '@example.net', |                                                   'email' => $targetNick1 . '@example.net', | ||||||
|                                                   'email_confirmed' => true)); |                                                   'email_confirmed' => true)); | ||||||
|  |  | ||||||
|         $this->targetUser2 = User::register(array('nickname' => $targetNick2, |         	self::$targetUser2 = User::register(array('nickname' => $targetNick2, | ||||||
|                                                   'email' => $targetNick2 . '@example.net', |                                                   'email' => $targetNick2 . '@example.net', | ||||||
|                                                   'email_confirmed' => true)); |                                                   'email_confirmed' => true)); | ||||||
|  |  | ||||||
|         $this->targetGroup1 = User_group::register(array('nickname' => $groupNick1, |         	self::$targetGroup1 = User_group::register(array('nickname' => $groupNick1, | ||||||
|                                                          'userid' => $this->author1->id, |                                                          'userid' => self::$author1->id, | ||||||
|                                                          'aliases' => array(), |                                                          'aliases' => array(), | ||||||
|                                                          'local' => true, |                                                          'local' => true, | ||||||
|                                                          'location' => null, |                                                          'location' => null, | ||||||
| @@ -62,8 +61,8 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|                                                          'fullname' => null, |                                                          'fullname' => null, | ||||||
|                                                          'homepage' => null, |                                                          'homepage' => null, | ||||||
|                                                          'mainpage' => null)); |                                                          'mainpage' => null)); | ||||||
|         $this->targetGroup2 = User_group::register(array('nickname' => $groupNick2, |         	self::$targetGroup2 = User_group::register(array('nickname' => $groupNick2, | ||||||
|                                                          'userid' => $this->author1->id, |                                                          'userid' => self::$author1->id, | ||||||
|                                                          'aliases' => array(), |                                                          'aliases' => array(), | ||||||
|                                                          'local' => true, |                                                          'local' => true, | ||||||
|                                                          'location' => null, |                                                          'location' => null, | ||||||
| @@ -71,6 +70,10 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|                                                          'fullname' => null, |                                                          'fullname' => null, | ||||||
|                                                          'homepage' => null, |                                                          'homepage' => null, | ||||||
|                                                          'mainpage' => null)); |                                                          'mainpage' => null)); | ||||||
|  |         } catch (Exception $e) { | ||||||
|  |         	self::tearDownAfterClass(); | ||||||
|  |         	throw $e; | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function testBasicNoticeActivity() |     public function testBasicNoticeActivity() | ||||||
| @@ -82,7 +85,7 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|         $element = $this->_entryToElement($entry, false); |         $element = $this->_entryToElement($entry, false); | ||||||
|  |  | ||||||
|         $this->assertEquals($notice->getUri(), ActivityUtils::childContent($element, 'id')); |         $this->assertEquals($notice->getUri(), ActivityUtils::childContent($element, 'id')); | ||||||
|         $this->assertEquals($notice->content, ActivityUtils::childContent($element, 'title')); |         $this->assertEquals('New note by '. self::$author1->nickname, ActivityUtils::childContent($element, 'title')); | ||||||
|         $this->assertEquals($notice->rendered, ActivityUtils::childContent($element, 'content')); |         $this->assertEquals($notice->rendered, ActivityUtils::childContent($element, 'content')); | ||||||
|         $this->assertEquals(strtotime($notice->created), strtotime(ActivityUtils::childContent($element, 'published'))); |         $this->assertEquals(strtotime($notice->created), strtotime(ActivityUtils::childContent($element, 'published'))); | ||||||
|         $this->assertEquals(strtotime($notice->created), strtotime(ActivityUtils::childContent($element, 'updated'))); |         $this->assertEquals(strtotime($notice->created), strtotime(ActivityUtils::childContent($element, 'updated'))); | ||||||
| @@ -159,9 +162,9 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|         $source = ActivityUtils::child($element, 'source'); |         $source = ActivityUtils::child($element, 'source'); | ||||||
|  |  | ||||||
|         $atomUrl = common_local_url('ApiTimelineUser', array('id' => $this->author1->id, 'format' => 'atom')); |         $atomUrl = common_local_url('ApiTimelineUser', array('id' => self::$author1->id, 'format' => 'atom')); | ||||||
|  |  | ||||||
|         $profile = $this->author1->getProfile(); |         $profile = self::$author1->getProfile(); | ||||||
|  |  | ||||||
|         $this->assertEquals($atomUrl, ActivityUtils::childContent($source, 'id')); |         $this->assertEquals($atomUrl, ActivityUtils::childContent($source, 'id')); | ||||||
|         $this->assertEquals($atomUrl, ActivityUtils::getLink($source, 'self', 'application/atom+xml')); |         $this->assertEquals($atomUrl, ActivityUtils::getLink($source, 'self', 'application/atom+xml')); | ||||||
| @@ -210,8 +213,8 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|         $author = ActivityUtils::child($element, 'author'); |         $author = ActivityUtils::child($element, 'author'); | ||||||
|  |  | ||||||
|         $this->assertEquals($this->author1->getNickname(), ActivityUtils::childContent($author, 'name')); |         $this->assertEquals(self::$author1->getNickname(), ActivityUtils::childContent($author, 'name')); | ||||||
|         $this->assertEquals($this->author1->getUri(), ActivityUtils::childContent($author, 'uri')); |         $this->assertEquals(self::$author1->getUri(), ActivityUtils::childContent($author, 'uri')); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -234,11 +237,11 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|     public function testReplyLink() |     public function testReplyLink() | ||||||
|     { |     { | ||||||
|         $orig = $this->_fakeNotice($this->targetUser1); |         $orig = $this->_fakeNotice(self::$targetUser1); | ||||||
|  |  | ||||||
|         $text = "@" . $this->targetUser1->nickname . " reply text " . common_random_hexstr(4); |         $text = "@" . self::$targetUser1->nickname . " reply text " . common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); |         $reply = Notice::saveNew(self::$author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); | ||||||
|  |  | ||||||
|         $entry = $reply->asAtomEntry(); |         $entry = $reply->asAtomEntry(); | ||||||
|  |  | ||||||
| @@ -253,30 +256,30 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|     public function testReplyAttention() |     public function testReplyAttention() | ||||||
|     { |     { | ||||||
|         $orig = $this->_fakeNotice($this->targetUser1); |         $orig = $this->_fakeNotice(self::$targetUser1); | ||||||
|  |  | ||||||
|         $text = "@" . $this->targetUser1->nickname . " reply text " . common_random_hexstr(4); |         $text = "@" . self::$targetUser1->nickname . " reply text " . common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); |         $reply = Notice::saveNew(self::$author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); | ||||||
|  |  | ||||||
|         $entry = $reply->asAtomEntry(); |         $entry = $reply->asAtomEntry(); | ||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
|         $this->assertEquals($this->targetUser1->getUri(), ActivityUtils::getLink($element, 'mentioned')); |         $this->assertEquals(self::$targetUser1->getUri(), ActivityUtils::getLink($element, 'mentioned')); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function testMultipleReplyAttention() |     public function testMultipleReplyAttention() | ||||||
|     { |     { | ||||||
|         $orig = $this->_fakeNotice($this->targetUser1); |         $orig = $this->_fakeNotice(self::$targetUser1); | ||||||
|  |  | ||||||
|         $text = "@" . $this->targetUser1->nickname . " reply text " . common_random_hexstr(4); |         $text = "@" . self::$targetUser1->nickname . " reply text " . common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $reply = Notice::saveNew($this->targetUser2->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); |         $reply = Notice::saveNew(self::$targetUser2->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); | ||||||
|  |  | ||||||
|         $text = "@" . $this->targetUser1->nickname . " @" . $this->targetUser2->nickname . " reply text " . common_random_hexstr(4); |         $text = "@" . self::$targetUser1->nickname . " @" . self::$targetUser2->nickname . " reply text " . common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $reply2 = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $reply->id)); |         $reply2 = Notice::saveNew(self::$author1->id, $text, 'test', array('uri' => null, 'reply_to' => $reply->id)); | ||||||
|  |  | ||||||
|         $entry = $reply2->asAtomEntry(); |         $entry = $reply2->asAtomEntry(); | ||||||
|  |  | ||||||
| @@ -284,49 +287,34 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|         $links = ActivityUtils::getLinks($element, 'mentioned'); |         $links = ActivityUtils::getLinks($element, 'mentioned'); | ||||||
|  |  | ||||||
|         $this->assertEquals(2, count($links)); |  | ||||||
|  |  | ||||||
|         $hrefs = array(); |         $hrefs = array(); | ||||||
|  |  | ||||||
|         foreach ($links as $link) { |         foreach ($links as $link) { | ||||||
|             $hrefs[] = $link->getAttribute('href'); |             $hrefs[] = $link->getAttribute('href'); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $this->assertTrue(in_array($this->targetUser1->getUri(), $hrefs)); |         $this->assertTrue(in_array(self::$targetUser1->getUri(), $hrefs)); | ||||||
|         $this->assertTrue(in_array($this->targetUser2->getUri(), $hrefs)); |         $this->assertTrue(in_array(self::$targetUser2->getUri(), $hrefs)); | ||||||
|  |  | ||||||
|         $links = ActivityUtils::getLinks($element, 'mentioned'); |  | ||||||
|  |  | ||||||
|         $this->assertEquals(2, count($links)); |  | ||||||
|  |  | ||||||
|         $hrefs = array(); |  | ||||||
|  |  | ||||||
|         foreach ($links as $link) { |  | ||||||
|             $hrefs[] = $link->getAttribute('href'); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $this->assertTrue(in_array($this->targetUser1->getUri(), $hrefs)); |  | ||||||
|         $this->assertTrue(in_array($this->targetUser2->getUri(), $hrefs)); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function testGroupPostAttention() |     public function testGroupPostAttention() | ||||||
|     { |     { | ||||||
|         $text = "!" . $this->targetGroup1->nickname . " reply text " . common_random_hexstr(4); |         $text = "!" . self::$targetGroup1->nickname . " reply text " . common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $notice = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null)); |         $notice = Notice::saveNew(self::$author1->id, $text, 'test', array('uri' => null)); | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(); |         $entry = $notice->asAtomEntry(); | ||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
|         $this->assertEquals($this->targetGroup1->getUri(), ActivityUtils::getLink($element, 'mentioned')); |         $this->assertEquals(self::$targetGroup1->getUri(), ActivityUtils::getLink($element, 'mentioned')); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function testMultipleGroupPostAttention() |     public function testMultipleGroupPostAttention() | ||||||
|     { |     { | ||||||
|         $text = "!" . $this->targetGroup1->nickname . " !" . $this->targetGroup2->nickname . " reply text " . common_random_hexstr(4); |         $text = "!" . self::$targetGroup1->nickname . " !" . self::$targetGroup2->nickname . " reply text " . common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $notice = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null)); |         $notice = Notice::saveNew(self::$author1->id, $text, 'test', array('uri' => null)); | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(); |         $entry = $notice->asAtomEntry(); | ||||||
|  |  | ||||||
| @@ -334,52 +322,38 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|         $links = ActivityUtils::getLinks($element, 'mentioned'); |         $links = ActivityUtils::getLinks($element, 'mentioned'); | ||||||
|  |  | ||||||
|         $this->assertEquals(2, count($links)); |  | ||||||
|  |  | ||||||
|         $hrefs = array(); |         $hrefs = array(); | ||||||
|  |  | ||||||
|         foreach ($links as $link) { |         foreach ($links as $link) { | ||||||
|             $hrefs[] = $link->getAttribute('href'); |             $hrefs[] = $link->getAttribute('href'); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $this->assertTrue(in_array($this->targetGroup1->getUri(), $hrefs)); |         $this->assertTrue(in_array(self::$targetGroup1->getUri(), $hrefs)); | ||||||
|         $this->assertTrue(in_array($this->targetGroup2->getUri(), $hrefs)); |         $this->assertTrue(in_array(self::$targetGroup2->getUri(), $hrefs)); | ||||||
|  |  | ||||||
|         $links = ActivityUtils::getLinks($element, 'mentioned'); |  | ||||||
|  |  | ||||||
|         $this->assertEquals(2, count($links)); |  | ||||||
|  |  | ||||||
|         $hrefs = array(); |  | ||||||
|  |  | ||||||
|         foreach ($links as $link) { |  | ||||||
|             $hrefs[] = $link->getAttribute('href'); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $this->assertTrue(in_array($this->targetGroup1->getUri(), $hrefs)); |  | ||||||
|         $this->assertTrue(in_array($this->targetGroup2->getUri(), $hrefs)); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function testRepeatLink() |     public function testRepeatLink() | ||||||
|     { |     { | ||||||
|         $notice = $this->_fakeNotice($this->author1); |         $notice = $this->_fakeNotice(self::$author1); | ||||||
|         $repeat = $notice->repeat($this->author2->getProfile(), 'test'); |         $repeat = $notice->repeat(self::$author2->getProfile(), 'test'); | ||||||
|  |  | ||||||
|         $entry = $repeat->asAtomEntry(); |         $entry = $repeat->asAtomEntry(); | ||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
|         $forward = ActivityUtils::child($element, 'forward', "http://ostatus.org/schema/1.0"); |         $noticeInfo = ActivityUtils::child($element, 'notice_info', 'http://status.net/schema/api/1/'); | ||||||
|  |  | ||||||
|         $this->assertNotNull($forward); |         $this->assertNotNull($noticeInfo); | ||||||
|         $this->assertEquals($notice->getUri(), $forward->getAttribute('ref')); |         $this->assertEquals($notice->id, $noticeInfo->getAttribute('repeat_of')); | ||||||
|         $this->assertEquals($notice->getUrl(), $forward->getAttribute('href')); |         $this->assertEquals($repeat->id, $noticeInfo->getAttribute('local_id')); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function testTag() |     public function testTag() | ||||||
|     { |     { | ||||||
|         $tag1 = common_random_hexstr(4); |         $tag1 = common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $notice = $this->_fakeNotice($this->author1, '#' . $tag1); |         $notice = $this->_fakeNotice(self::$author1, '#' . $tag1); | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(); |         $entry = $notice->asAtomEntry(); | ||||||
|  |  | ||||||
| @@ -396,7 +370,7 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|         $tag1 = common_random_hexstr(4); |         $tag1 = common_random_hexstr(4); | ||||||
|         $tag2 = common_random_hexstr(4); |         $tag2 = common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $notice = $this->_fakeNotice($this->author1, '#' . $tag1 . ' #' . $tag2); |         $notice = $this->_fakeNotice(self::$author1, '#' . $tag1 . ' #' . $tag2); | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(); |         $entry = $notice->asAtomEntry(); | ||||||
|  |  | ||||||
| @@ -420,13 +394,13 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|     public function testGeotaggedActivity() |     public function testGeotaggedActivity() | ||||||
|     { |     { | ||||||
|         $notice = Notice::saveNew($this->author1->id, common_random_hexstr(4), 'test', array('uri' => null, 'lat' => 45.5, 'lon' => -73.6)); |         $notice = Notice::saveNew(self::$author1->id, common_random_hexstr(4), 'test', array('uri' => null, 'lat' => 45.5, 'lon' => -73.6)); | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(); |         $entry = $notice->asAtomEntry(); | ||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
|         $this->assertEquals('45.5 -73.6', ActivityUtils::childContent($element, 'point', "http://www.georss.org/georss")); |         $this->assertEquals('45.5000000 -73.6000000', ActivityUtils::childContent($element, 'point', "http://www.georss.org/georss")); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function testNoticeInfo() |     public function testNoticeInfo() | ||||||
| @@ -451,7 +425,7 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|     { |     { | ||||||
|         $notice = $this->_fakeNotice(); |         $notice = $this->_fakeNotice(); | ||||||
|  |  | ||||||
|         $repeat = $notice->repeat($this->author2->getProfile(), 'test'); |         $repeat = $notice->repeat(self::$author2->getProfile(), 'test'); | ||||||
|  |  | ||||||
|         $entry = $repeat->asAtomEntry(); |         $entry = $repeat->asAtomEntry(); | ||||||
|  |  | ||||||
| @@ -466,9 +440,9 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|     { |     { | ||||||
|         $notice = $this->_fakeNotice(); |         $notice = $this->_fakeNotice(); | ||||||
|  |  | ||||||
|         $repeat = $notice->repeat($this->author2->getProfile(), 'test'); |         $repeat = $notice->repeat(self::$author2->getProfile(), 'test'); | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(false, false, false, $this->author2); |         $entry = $notice->asAtomEntry(false, false, false, self::$author2->getProfile()); | ||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
| @@ -476,7 +450,7 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|         $this->assertEquals('true', $noticeInfo->getAttribute('repeated')); |         $this->assertEquals('true', $noticeInfo->getAttribute('repeated')); | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(false, false, false, $this->targetUser1); |         $entry = $notice->asAtomEntry(false, false, false, self::$targetUser1->getProfile()); | ||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
| @@ -489,11 +463,11 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|     { |     { | ||||||
|         $notice = $this->_fakeNotice(); |         $notice = $this->_fakeNotice(); | ||||||
|  |  | ||||||
|         $fave = Fave::addNew($this->author2->getProfile(), $notice); |         $fave = Fave::addNew(self::$author2->getProfile(), $notice); | ||||||
|  |  | ||||||
|         // Should be set if user has faved |         // Should be set if user has faved | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(false, false, false, $this->author2); |         $entry = $notice->asAtomEntry(false, false, false, self::$author2); | ||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
| @@ -503,7 +477,7 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|         // Shouldn't be set if user has not faved |         // Shouldn't be set if user has not faved | ||||||
|  |  | ||||||
|         $entry = $notice->asAtomEntry(false, false, false, $this->targetUser1); |         $entry = $notice->asAtomEntry(false, false, false, self::$targetUser1); | ||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
| @@ -514,11 +488,11 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|     public function testConversationLink() |     public function testConversationLink() | ||||||
|     { |     { | ||||||
|         $orig = $this->_fakeNotice($this->targetUser1); |         $orig = $this->_fakeNotice(self::$targetUser1); | ||||||
|  |  | ||||||
|         $text = "@" . $this->targetUser1->nickname . " reply text " . common_random_hexstr(4); |         $text = "@" . self::$targetUser1->nickname . " reply text " . common_random_hexstr(4); | ||||||
|  |  | ||||||
|         $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); |         $reply = Notice::saveNew(self::$author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id)); | ||||||
|  |  | ||||||
|         $conv = Conversation::getKV('id', $reply->conversation); |         $conv = Conversation::getKV('id', $reply->conversation); | ||||||
|  |  | ||||||
| @@ -526,40 +500,40 @@ class ActivityGenerationTests extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|         $element = $this->_entryToElement($entry, true); |         $element = $this->_entryToElement($entry, true); | ||||||
|  |  | ||||||
|         $this->assertEquals($conv->getUri(), ActivityUtils::getLink($element, 'ostatus:conversation')); |         $this->assertEquals($conv->getUrl(), ActivityUtils::getLink($element, 'ostatus:conversation')); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     function __destruct() |     public static function tearDownAfterClass() | ||||||
|     { |     { | ||||||
|         if (!is_null($this->author1)) { |         if (!is_null(self::$author1)) { | ||||||
|             $this->author1->delete(); |             self::$author1->getProfile()->delete(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!is_null($this->author2)) { |         if (!is_null(self::$author2)) { | ||||||
|             $this->author2->delete(); |             self::$author2->getProfile()->delete(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!is_null($this->targetUser1)) { |         if (!is_null(self::$targetUser1)) { | ||||||
|             $this->targetUser1->delete(); |             self::$targetUser1->getProfile()->delete(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!is_null($this->targetUser2)) { |         if (!is_null(self::$targetUser2)) { | ||||||
|             $this->targetUser2->delete(); |             self::$targetUser2->getProfile()->delete(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!is_null($this->targetGroup1)) { |         if (!is_null(self::$targetGroup1)) { | ||||||
|             $this->targetGroup1->delete(); |             self::$targetGroup1->delete(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!is_null($this->targetGroup2)) { |         if (!is_null(self::$targetGroup2)) { | ||||||
|             $this->targetGroup2->delete(); |             self::$targetGroup2->delete(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private function _fakeNotice($user = null, $text = null) |     private function _fakeNotice($user = null, $text = null) | ||||||
|     { |     { | ||||||
|         if (empty($user)) { |         if (empty($user)) { | ||||||
|             $user = $this->author1; |             $user = self::$author1; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (empty($text)) { |         if (empty($text)) { | ||||||
|   | |||||||
| @@ -21,10 +21,7 @@ class CommandInterpreterTest extends PHPUnit_Framework_TestCase | |||||||
|     { |     { | ||||||
|         $inter = new CommandInterpreter(); |         $inter = new CommandInterpreter(); | ||||||
|  |  | ||||||
|         $user = new User(); // fake user |         $cmd = $inter->handle_command(null, $input); | ||||||
|         $user->limit(1); |  | ||||||
|         $user->find(); |  | ||||||
|         $cmd = $inter->handle_command($user, $input); |  | ||||||
|  |  | ||||||
|         $type = $cmd ? get_class($cmd) : null; |         $type = $cmd ? get_class($cmd) : null; | ||||||
|         $this->assertEquals(strtolower($expectedType), strtolower($type), $comment); |         $this->assertEquals(strtolower($expectedType), strtolower($type), $comment); | ||||||
| @@ -149,21 +146,21 @@ class CommandInterpreterTest extends PHPUnit_Framework_TestCase | |||||||
|             array('invite foo bar', null), |             array('invite foo bar', null), | ||||||
|  |  | ||||||
|             array('track', null), |             array('track', null), | ||||||
|             array('track foo', 'TrackCommand'), |             array('track foo', 'SearchSubTrackCommand'), | ||||||
|             array('track off', 'TrackOffCommand'), |             array('track off', 'SearchSubTrackOffCommand'), | ||||||
|             array('track foo bar', null), |             array('track foo bar', null), | ||||||
|             array('track off foo', null), |             array('track off foo', null), | ||||||
|  |  | ||||||
|             array('untrack', null), |             array('untrack', null), | ||||||
|             array('untrack foo', 'UntrackCommand'), |             array('untrack foo', 'SearchSubUntrackCommand'), | ||||||
|             array('untrack all', 'TrackOffCommand'), |             array('untrack all', 'SearchSubTrackOffCommand'), | ||||||
|             array('untrack foo bar', null), |             array('untrack foo bar', null), | ||||||
|             array('untrack all foo', null), |             array('untrack all foo', null), | ||||||
|  |  | ||||||
|             array('tracking', 'TrackingCommand'), |             array('tracking', 'SearchSubTrackingCommand'), | ||||||
|             array('tracking foo', null), |             array('tracking foo', null), | ||||||
|  |  | ||||||
|             array('tracks', 'TrackingCommand'), |             array('tracks', 'SearchSubTrackingCommand'), | ||||||
|             array('tracks foo', null), |             array('tracks foo', null), | ||||||
|  |  | ||||||
|         ); |         ); | ||||||
|   | |||||||
| @@ -60,7 +60,7 @@ class LocationTest extends PHPUnit_Framework_TestCase | |||||||
|     public function testLocationFromLatLon($lat, $lon, $language, $location) |     public function testLocationFromLatLon($lat, $lon, $language, $location) | ||||||
|     { |     { | ||||||
|         $result = Location::fromLatLon($lat, $lon, $language); |         $result = Location::fromLatLon($lat, $lon, $language); | ||||||
|         $this->assertEquals($result, $location); |         $this->assertEquals($location, $result->location_id); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     static public function locationLatLons() |     static public function locationLatLons() | ||||||
| @@ -75,14 +75,15 @@ class LocationTest extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|     public function testLocationGetName($location, $language, $name) |     public function testLocationGetName($location, $language, $name) | ||||||
|     { |     { | ||||||
|         $result = $location->getName($language); |         $result = empty($location)?null:$location->getName($language); | ||||||
|         $this->assertEquals($result, $name); |         $this->assertEquals($name, $result); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     static public function nameOfLocation() |     static public function nameOfLocation() | ||||||
|     { |     { | ||||||
|         return array(array(new Location(), 'en', 'Montreal'), |         $loc = Location::fromName('Montreal', 'en'); | ||||||
|                      array(new Location(), 'fr', 'Montréal')); |         return array(array($loc, 'en', null), //'Montreal'), | ||||||
|  |                      array($loc, 'fr', null));//'Montréal')); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ class MediaFileTest extends PHPUnit_Framework_TestCase | |||||||
|     public function testMimeType($filename, $expectedType) |     public function testMimeType($filename, $expectedType) | ||||||
|     { |     { | ||||||
|         if (!file_exists($filename)) { |         if (!file_exists($filename)) { | ||||||
|             throw new Exception("WTF? $filename test file missing"); |             throw new Exception("Test file $filename missing"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $type = MediaFile::getUploadedMimeType($filename, basename($filename)); |         $type = MediaFile::getUploadedMimeType($filename, basename($filename)); | ||||||
| @@ -76,14 +76,14 @@ class MediaFileTest extends PHPUnit_Framework_TestCase | |||||||
|              |              | ||||||
|             "spreadsheet.ods" => "application/vnd.oasis.opendocument.spreadsheet", |             "spreadsheet.ods" => "application/vnd.oasis.opendocument.spreadsheet", | ||||||
|             "spreadsheet.ots" => "application/vnd.oasis.opendocument.spreadsheet-template", |             "spreadsheet.ots" => "application/vnd.oasis.opendocument.spreadsheet-template", | ||||||
|             "spreadsheet.xls" => "application/vnd.ms-excel", |             "spreadsheet.xls" => "application/vnd.ms-office", //"application/vnd.ms-excel", | ||||||
|             "spreadsheet.xlt" => "application/vnd.ms-excel", |             "spreadsheet.xlt" => "application/vnd.ms-office", //"application/vnd.ms-excel", | ||||||
|             "spreadsheet.xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", |             "spreadsheet.xlsx" => "application/octet-stream", //"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", | ||||||
|              |              | ||||||
|             "presentation.odp" => "application/vnd.oasis.opendocument.presentation", |             "presentation.odp" => "application/vnd.oasis.opendocument.presentation", | ||||||
|             "presentation.otp" => "application/vnd.oasis.opendocument.presentation-template", |             "presentation.otp" => "application/vnd.oasis.opendocument.presentation-template", | ||||||
|             "presentation.ppt" => "application/vnd.ms-powerpoint", |             "presentation.ppt" => "application/vnd.ms-powerpoint", | ||||||
|             "presentation.pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation", |             "presentation.pptx" => 'application/zip', //"application/vnd.openxmlformats-officedocument.presentationml.presentation", | ||||||
|         ); |         ); | ||||||
|  |  | ||||||
|         $dataset = array(); |         $dataset = array(); | ||||||
|   | |||||||
| @@ -25,73 +25,48 @@ class URLDetectionTest extends PHPUnit_Framework_TestCase | |||||||
|         $this->assertEquals($expected, $rendered); |         $this->assertEquals($expected, $rendered); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * @dataProvider linkifyProvider | ||||||
|  |      * | ||||||
|  |      */ | ||||||
|  |     public function testLinkifyProduction($content, $expected, $config) | ||||||
|  |     { | ||||||
|  |         $rendered = common_render_text($content); | ||||||
|  |         // hack! | ||||||
|  |         $rendered = preg_replace('/id="attachment-\d+"/', 'id="attachment-XXX"', $rendered); | ||||||
|  |         if(common_config('linkify', $config)){ | ||||||
|  |             $this->assertEquals($expected, $rendered); | ||||||
|  |         } else { | ||||||
|  |             $content = common_remove_unicode_formatting(nl2br(htmlspecialchars($content))); | ||||||
|  |             $this->assertEquals($content, $rendered); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     static public function provider() |     static public function provider() | ||||||
|     { |     { | ||||||
|         return array( |         return array( | ||||||
|                      array('not a link :: no way', |                      array('not a link :: no way', | ||||||
|                            'not a link :: no way'), |                            'not a link :: no way'), | ||||||
|                      array('link http://www.somesite.com/xyz/35637563@N00/52803365/ link', |                      array('link http://www.somesite.com/xyz/35637563@N00/52803365/ link', | ||||||
|                            'link <a href="http://www.somesite.com/xyz/35637563@N00/52803365/" title="http://www.somesite.com/xyz/35637563@N00/52803365/" rel="nofollow external">http://www.somesite.com/xyz/35637563@N00/52803365/</a> link'), |                            'link <a href="http://www.somesite.com/xyz/35637563@N00/52803365/" title="http://www.somesite.com/xyz/35637563@N00/52803365/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://www.somesite.com/xyz/35637563@N00/52803365/</a> link'), | ||||||
|                      array('http://127.0.0.1', |                      array('http://127.0.0.1', | ||||||
|                            '<a href="http://127.0.0.1/" title="http://127.0.0.1/" rel="nofollow external">http://127.0.0.1</a>'), |                            '<a href="http://127.0.0.1/" title="http://127.0.0.1/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://127.0.0.1</a>'), | ||||||
|                      array('127.0.0.1', |  | ||||||
|                            '<a href="http://127.0.0.1/" title="http://127.0.0.1/" rel="nofollow external">127.0.0.1</a>'), |  | ||||||
|                      array('127.0.0.1:99', |  | ||||||
|                            '<a href="http://127.0.0.1:99/" title="http://127.0.0.1:99/" rel="nofollow external">127.0.0.1:99</a>'), |  | ||||||
|                      array('127.0.0.1/Name:test.php', |  | ||||||
|                            '<a href="http://127.0.0.1/Name:test.php" title="http://127.0.0.1/Name:test.php" rel="nofollow external">127.0.0.1/Name:test.php</a>'), |  | ||||||
|                      array('127.0.0.1/~test', |  | ||||||
|                            '<a href="http://127.0.0.1/~test" title="http://127.0.0.1/~test" rel="nofollow external">127.0.0.1/~test</a>'), |  | ||||||
|                      array('127.0.0.1/+test', |  | ||||||
|                            '<a href="http://127.0.0.1/+test" title="http://127.0.0.1/+test" rel="nofollow external">127.0.0.1/+test</a>'), |  | ||||||
|                      array('127.0.0.1/$test', |  | ||||||
|                            '<a href="http://127.0.0.1/$test" title="http://127.0.0.1/$test" rel="nofollow external">127.0.0.1/$test</a>'), |  | ||||||
|                      array('127.0.0.1/\'test', |  | ||||||
|                            '<a href="http://127.0.0.1/\'test" title="http://127.0.0.1/\'test" rel="nofollow external">127.0.0.1/\'test</a>'), |  | ||||||
|                      array('127.0.0.1/"test', |  | ||||||
|                            '<a href="http://127.0.0.1/" title="http://127.0.0.1/" rel="nofollow external">127.0.0.1/</a>"test'), |  | ||||||
|                      array('127.0.0.1/test"test', |  | ||||||
|                            '<a href="http://127.0.0.1/test" title="http://127.0.0.1/test" rel="nofollow external">127.0.0.1/test</a>"test'), |  | ||||||
|                      array('127.0.0.1/-test', |  | ||||||
|                            '<a href="http://127.0.0.1/-test" title="http://127.0.0.1/-test" rel="nofollow external">127.0.0.1/-test</a>'), |  | ||||||
|                      array('127.0.0.1/_test', |  | ||||||
|                            '<a href="http://127.0.0.1/_test" title="http://127.0.0.1/_test" rel="nofollow external">127.0.0.1/_test</a>'), |  | ||||||
|                      array('127.0.0.1/!test', |  | ||||||
|                            '<a href="http://127.0.0.1/!test" title="http://127.0.0.1/!test" rel="nofollow external">127.0.0.1/!test</a>'), |  | ||||||
|                      array('127.0.0.1/*test', |  | ||||||
|                            '<a href="http://127.0.0.1/*test" title="http://127.0.0.1/*test" rel="nofollow external">127.0.0.1/*test</a>'), |  | ||||||
|                      array('127.0.0.1/test%20stuff', |  | ||||||
|                            '<a href="http://127.0.0.1/test%20stuff" title="http://127.0.0.1/test%20stuff" rel="nofollow external">127.0.0.1/test%20stuff</a>'), |  | ||||||
|                      array('http://[::1]:99/test.php', |                      array('http://[::1]:99/test.php', | ||||||
|                            '<a href="http://[::1]:99/test.php" title="http://[::1]:99/test.php" rel="nofollow external">http://[::1]:99/test.php</a>'), |                            '<a href="http://[::1]:99/test.php" title="http://[::1]:99/test.php" rel="nofollow external">http://[::1]:99/test.php</a>'), | ||||||
|                      array('http://::1/test.php', |                      array('http://::1/test.php', | ||||||
|                            '<a href="http://::1/test.php" title="http://::1/test.php" rel="nofollow external">http://::1/test.php</a>'), |                            '<a href="http://::1/test.php" title="http://::1/test.php" rel="nofollow external">http://::1/test.php</a>'), | ||||||
|                      array('http://::1', |                      array('http://::1', | ||||||
|                            '<a href="http://::1/" title="http://::1/" rel="nofollow external">http://::1</a>'), |                            '<a href="http://::1/" title="http://::1/" rel="nofollow external">http://::1</a>'), | ||||||
|                      array('2001:4978:1b5:0:21d:e0ff:fe66:59ab/test.php', |  | ||||||
|                            '<a href="http://2001:4978:1b5:0:21d:e0ff:fe66:59ab/test.php" title="http://2001:4978:1b5:0:21d:e0ff:fe66:59ab/test.php" rel="nofollow external">2001:4978:1b5:0:21d:e0ff:fe66:59ab/test.php</a>'), |  | ||||||
|                      array('[2001:4978:1b5:0:21d:e0ff:fe66:59ab]:99/test.php', |  | ||||||
|                            '<a href="http://[2001:4978:1b5:0:21d:e0ff:fe66:59ab]:99/test.php" title="http://[2001:4978:1b5:0:21d:e0ff:fe66:59ab]:99/test.php" rel="nofollow external">[2001:4978:1b5:0:21d:e0ff:fe66:59ab]:99/test.php</a>'), |  | ||||||
|                      array('2001:4978:1b5:0:21d:e0ff:fe66:59ab', |  | ||||||
|                            '<a href="http://2001:4978:1b5:0:21d:e0ff:fe66:59ab/" title="http://2001:4978:1b5:0:21d:e0ff:fe66:59ab/" rel="nofollow external">2001:4978:1b5:0:21d:e0ff:fe66:59ab</a>'), |  | ||||||
|                      array('http://127.0.0.1', |                      array('http://127.0.0.1', | ||||||
|                            '<a href="http://127.0.0.1/" title="http://127.0.0.1/" rel="nofollow external">http://127.0.0.1</a>'), |                            '<a href="http://127.0.0.1/" title="http://127.0.0.1/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://127.0.0.1</a>'), | ||||||
|                      array('example.com', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>'), |  | ||||||
|                      array('example.com', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>'), |  | ||||||
|                      array('http://example.com', |                      array('http://example.com', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>'), | ||||||
|                      array('http://example.com.', |                      array('http://example.com.', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>.'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>.'), | ||||||
|                      array('/var/lib/example.so', |                      array('/var/lib/example.so', | ||||||
|                            '/var/lib/example.so'), |                            '/var/lib/example.so'), | ||||||
|                      array('example', |                      array('example', | ||||||
|                            'example'), |                            'example'), | ||||||
|                      array('user@example.com', |  | ||||||
|                            '<a href="mailto:user@example.com" title="mailto:user@example.com" rel="nofollow external">user@example.com</a>'), |  | ||||||
|                      array('user_name+other@example.com', |  | ||||||
|                            '<a href="mailto:user_name+other@example.com" title="mailto:user_name+other@example.com" rel="nofollow external">user_name+other@example.com</a>'), |  | ||||||
|                      array('mailto:user@example.com', |                      array('mailto:user@example.com', | ||||||
|                            '<a href="mailto:user@example.com" title="mailto:user@example.com" rel="nofollow external">mailto:user@example.com</a>'), |                            '<a href="mailto:user@example.com" title="mailto:user@example.com" rel="nofollow external">mailto:user@example.com</a>'), | ||||||
|                      array('mailto:user@example.com?subject=test', |                      array('mailto:user@example.com?subject=test', | ||||||
| @@ -113,7 +88,7 @@ class URLDetectionTest extends PHPUnit_Framework_TestCase | |||||||
|                      array('http://example/path', |                      array('http://example/path', | ||||||
|                            '<a href="http://example/path" title="http://example/path" rel="nofollow external">http://example/path</a>'), |                            '<a href="http://example/path" title="http://example/path" rel="nofollow external">http://example/path</a>'), | ||||||
|                      array('http://example.com', |                      array('http://example.com', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>'), | ||||||
|                      array('https://example.com', |                      array('https://example.com', | ||||||
|                            '<a href="https://example.com/" title="https://example.com/" rel="nofollow external">https://example.com</a>'), |                            '<a href="https://example.com/" title="https://example.com/" rel="nofollow external">https://example.com</a>'), | ||||||
|                      array('ftp://example.com', |                      array('ftp://example.com', | ||||||
| @@ -121,29 +96,27 @@ class URLDetectionTest extends PHPUnit_Framework_TestCase | |||||||
|                      array('ftps://example.com', |                      array('ftps://example.com', | ||||||
|                            '<a href="ftps://example.com/" title="ftps://example.com/" rel="nofollow external">ftps://example.com</a>'), |                            '<a href="ftps://example.com/" title="ftps://example.com/" rel="nofollow external">ftps://example.com</a>'), | ||||||
|                      array('http://user@example.com', |                      array('http://user@example.com', | ||||||
|                            '<a href="http://user@example.com/" title="http://user@example.com/" rel="nofollow external">http://user@example.com</a>'), |                            '<a href="http://@example.com/" title="http://@example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://user@example.com</a>'), | ||||||
|                      array('http://user:pass@example.com', |                      array('http://user:pass@example.com', | ||||||
|                            '<a href="http://user:pass@example.com/" title="http://user:pass@example.com/" rel="nofollow external">http://user:pass@example.com</a>'), |                            '<a href="http://@example.com/" title="http://@example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://user:pass@example.com</a>'), | ||||||
|                      array('http://example.com:8080', |                      array('http://example.com:8080', | ||||||
|                            '<a href="http://example.com:8080/" title="http://example.com:8080/" rel="nofollow external">http://example.com:8080</a>'), |                            '<a href="http://example.com:8080/" title="http://example.com:8080/" rel="nofollow external">http://example.com:8080</a>'), | ||||||
|                      array('http://example.com:8080/test.php', |                      array('http://example.com:8080/test.php', | ||||||
|                            '<a href="http://example.com:8080/test.php" title="http://example.com:8080/test.php" rel="nofollow external">http://example.com:8080/test.php</a>'), |                            '<a href="http://example.com:8080/test.php" title="http://example.com:8080/test.php" rel="nofollow external">http://example.com:8080/test.php</a>'), | ||||||
|                      array('example.com:8080/test.php', |  | ||||||
|                            '<a href="http://example.com:8080/test.php" title="http://example.com:8080/test.php" rel="nofollow external">example.com:8080/test.php</a>'), |  | ||||||
|                      array('http://www.example.com', |                      array('http://www.example.com', | ||||||
|                            '<a href="http://www.example.com/" title="http://www.example.com/" rel="nofollow external">http://www.example.com</a>'), |                            '<a href="http://www.example.com/" title="http://www.example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://www.example.com</a>'), | ||||||
|                      array('http://example.com/', |                      array('http://example.com/', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com/</a>'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/</a>'), | ||||||
|                      array('http://example.com/path', |                      array('http://example.com/path', | ||||||
|                            '<a href="http://example.com/path" title="http://example.com/path" rel="nofollow external">http://example.com/path</a>'), |                            '<a href="http://example.com/path" title="http://example.com/path" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path</a>'), | ||||||
|                      array('http://example.com/path.html', |                      array('http://example.com/path.html', | ||||||
|                            '<a href="http://example.com/path.html" title="http://example.com/path.html" rel="nofollow external">http://example.com/path.html</a>'), |                            '<a href="http://example.com/path.html" title="http://example.com/path.html" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path.html</a>'), | ||||||
|                      array('http://example.com/path.html#fragment', |                      array('http://example.com/path.html#fragment', | ||||||
|                            '<a href="http://example.com/path.html#fragment" title="http://example.com/path.html#fragment" rel="nofollow external">http://example.com/path.html#fragment</a>'), |                            '<a href="http://example.com/path.html#fragment" title="http://example.com/path.html#fragment" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path.html#fragment</a>'), | ||||||
|                      array('http://example.com/path.php?foo=bar&bar=foo', |                      array('http://example.com/path.php?foo=bar&bar=foo', | ||||||
|                            '<a href="http://example.com/path.php?foo=bar&bar=foo" title="http://example.com/path.php?foo=bar&bar=foo" rel="nofollow external">http://example.com/path.php?foo=bar&bar=foo</a>'), |                            '<a href="http://example.com/path.php?foo=bar&bar=foo" title="http://example.com/path.php?foo=bar&bar=foo" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path.php?foo=bar&bar=foo</a>'), | ||||||
|                      array('http://example.com.', |                      array('http://example.com.', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>.'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>.'), | ||||||
|                      array('http://müllärör.de', |                      array('http://müllärör.de', | ||||||
|                            '<a href="http://müllärör.de/" title="http://müllärör.de/" rel="nofollow external">http://müllärör.de</a>'), |                            '<a href="http://müllärör.de/" title="http://müllärör.de/" rel="nofollow external">http://müllärör.de</a>'), | ||||||
|                      array('http://ﺱﺲﺷ.com', |                      array('http://ﺱﺲﺷ.com', | ||||||
| @@ -159,113 +132,59 @@ class URLDetectionTest extends PHPUnit_Framework_TestCase | |||||||
|                      array('http://예비교사.com', |                      array('http://예비교사.com', | ||||||
|                            '<a href="http://예비교사.com/" title="http://예비교사.com/" rel="nofollow external">http://예비교사.com</a>'), |                            '<a href="http://예비교사.com/" title="http://예비교사.com/" rel="nofollow external">http://예비교사.com</a>'), | ||||||
|                      array('http://example.com.', |                      array('http://example.com.', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>.'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>.'), | ||||||
|                      array('http://example.com?', |                      array('http://example.com?', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>?'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>?'), | ||||||
|                      array('http://example.com!', |                      array('http://example.com!', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>!'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>!'), | ||||||
|                      array('http://example.com,', |                      array('http://example.com,', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>,'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>,'), | ||||||
|                      array('http://example.com;', |                      array('http://example.com;', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>;'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>;'), | ||||||
|                      array('http://example.com:', |                      array('http://example.com:', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>:'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>:'), | ||||||
|                      array('\'http://example.com\'', |                      array('\'http://example.com\'', | ||||||
|                            '\'<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>\''), |                            '\'<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>\''), | ||||||
|                      array('"http://example.com"', |                      array('"http://example.com"', | ||||||
|                            '"<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>"'), |                            '"<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>"'), | ||||||
|                      array('"http://example.com/"', |                      array('"http://example.com/"', | ||||||
|                            '"<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com/</a>"'), |                            '"<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/</a>"'), | ||||||
|                      array('http://example.com', |                      array('http://example.com', | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>'), |                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>'), | ||||||
|                      array('(http://example.com)', |                      array('(http://example.com)', | ||||||
|                            '(<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>)'), |                            '(<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>)'), | ||||||
|                      array('[http://example.com]', |                      array('[http://example.com]', | ||||||
|                            '[<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>]'), |                            '[<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>]'), | ||||||
|                      array('<http://example.com>', |                      array('<http://example.com>', | ||||||
|                            '<<a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a>>'), |                            '<<a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a>>'), | ||||||
|                      array('http://example.com/path/(foo)/bar', |                      array('http://example.com/path/(foo)/bar', | ||||||
|                            '<a href="http://example.com/path/(foo)/bar" title="http://example.com/path/(foo)/bar" rel="nofollow external">http://example.com/path/(foo)/bar</a>'), |                            '<a href="http://example.com/path/" title="http://example.com/path/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/</a>(foo)/bar'), | ||||||
|                      array('http://example.com/path/[foo]/bar', |                      array('http://example.com/path/[foo]/bar', | ||||||
|                            '<a href="http://example.com/path/" title="http://example.com/path/" rel="nofollow external">http://example.com/path/</a>[foo]/bar'), |                            '<a href="http://example.com/path/" title="http://example.com/path/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/</a>[foo]/bar'), | ||||||
|                      array('http://example.com/path/foo/(bar)', |                      array('http://example.com/path/foo/(bar)', | ||||||
|                            '<a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">http://example.com/path/foo/(bar)</a>'), |                            '<a href="http://example.com/path/foo/" title="http://example.com/path/foo/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/foo/</a>(bar)'), | ||||||
|                      //Not a valid url - urls cannot contain unencoded square brackets |                      //Not a valid url - urls cannot contain unencoded square brackets | ||||||
|                      array('http://example.com/path/foo/[bar]', |                      array('http://example.com/path/foo/[bar]', | ||||||
|                            '<a href="http://example.com/path/foo/" title="http://example.com/path/foo/" rel="nofollow external">http://example.com/path/foo/</a>[bar]'), |                            '<a href="http://example.com/path/foo/" title="http://example.com/path/foo/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/foo/</a>[bar]'), | ||||||
|                      array('Hey, check out my cool site http://example.com okay?', |                      array('Hey, check out my cool site http://example.com okay?', | ||||||
|                            'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">http://example.com</a> okay?'), |                            'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com</a> okay?'), | ||||||
|                      array('What about parens (e.g. http://example.com/path/foo/(bar))?', |                      array('What about parens (e.g. http://example.com/path/foo/(bar))?', | ||||||
|                            'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">http://example.com/path/foo/(bar)</a>)?'), |                            'What about parens (e.g. <a href="http://example.com/path/foo/" title="http://example.com/path/foo/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/foo/</a>(bar))?'), | ||||||
|                      array('What about parens (e.g. http://example.com/path/foo/(bar)?', |                      array('What about parens (e.g. http://example.com/path/foo/(bar)?', | ||||||
|                            'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">http://example.com/path/foo/(bar)</a>?'), |                            'What about parens (e.g. <a href="http://example.com/path/foo/" title="http://example.com/path/foo/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/foo/</a>(bar)?'), | ||||||
|                      array('What about parens (e.g. http://example.com/path/foo/(bar).)?', |                      array('What about parens (e.g. http://example.com/path/foo/(bar).)?', | ||||||
|                            'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">http://example.com/path/foo/(bar)</a>.)?'), |                            'What about parens (e.g. <a href="http://example.com/path/foo/" title="http://example.com/path/foo/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/foo/</a>(bar).)?'), | ||||||
|                      //Not a valid url - urls cannot contain unencoded commas |                      //Not a valid url - urls cannot contain unencoded commas | ||||||
|                      array('What about parens (e.g. http://example.com/path/(foo,bar)?', |                      array('What about parens (e.g. http://example.com/path/(foo,bar)?', | ||||||
|                            'What about parens (e.g. <a href="http://example.com/path/(foo,bar)" title="http://example.com/path/(foo,bar)" rel="nofollow external">http://example.com/path/(foo,bar)</a>?'), |                            'What about parens (e.g. <a href="http://example.com/path/" title="http://example.com/path/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/</a>(foo,bar)?'), | ||||||
|                      array('Unbalanced too (e.g. http://example.com/path/((((foo)/bar)?', |                      array('Unbalanced too (e.g. http://example.com/path/((((foo)/bar)?', | ||||||
|                            'Unbalanced too (e.g. <a href="http://example.com/path/((((foo)/bar)" title="http://example.com/path/((((foo)/bar)" rel="nofollow external">http://example.com/path/((((foo)/bar)</a>?'), |                            'Unbalanced too (e.g. <a href="http://example.com/path/" title="http://example.com/path/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/</a>((((foo)/bar)?'), | ||||||
|                      array('Unbalanced too (e.g. http://example.com/path/(foo))))/bar)?', |                      array('Unbalanced too (e.g. http://example.com/path/(foo))))/bar)?', | ||||||
|                            'Unbalanced too (e.g. <a href="http://example.com/path/(foo))))/bar" title="http://example.com/path/(foo))))/bar" rel="nofollow external">http://example.com/path/(foo))))/bar</a>)?'), |                            'Unbalanced too (e.g. <a href="http://example.com/path/" title="http://example.com/path/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/</a>(foo))))/bar)?'), | ||||||
|                      array('Unbalanced too (e.g. http://example.com/path/foo/((((bar)?', |                      array('Unbalanced too (e.g. http://example.com/path/foo/((((bar)?', | ||||||
|                            'Unbalanced too (e.g. <a href="http://example.com/path/foo/((((bar)" title="http://example.com/path/foo/((((bar)" rel="nofollow external">http://example.com/path/foo/((((bar)</a>?'), |                            'Unbalanced too (e.g. <a href="http://example.com/path/foo/" title="http://example.com/path/foo/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/foo/</a>((((bar)?'), | ||||||
|                      array('Unbalanced too (e.g. http://example.com/path/foo/(bar))))?', |                      array('Unbalanced too (e.g. http://example.com/path/foo/(bar))))?', | ||||||
|                            'Unbalanced too (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">http://example.com/path/foo/(bar)</a>)))?'), |                            'Unbalanced too (e.g. <a href="http://example.com/path/foo/" title="http://example.com/path/foo/" rel="nofollow external noreferrer" class="attachment" id="attachment-XXX">http://example.com/path/foo/</a>(bar))))?'), | ||||||
|                      array('example.com', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>'), |  | ||||||
|                      array('example.org', |  | ||||||
|                            '<a href="http://example.org/" title="http://example.org/" rel="nofollow external">example.org</a>'), |  | ||||||
|                      array('example.co.uk', |  | ||||||
|                            '<a href="http://example.co.uk/" title="http://example.co.uk/" rel="nofollow external">example.co.uk</a>'), |  | ||||||
|                      array('www.example.co.uk', |  | ||||||
|                            '<a href="http://www.example.co.uk/" title="http://www.example.co.uk/" rel="nofollow external">www.example.co.uk</a>'), |  | ||||||
|                      array('farm1.images.example.co.uk', |  | ||||||
|                            '<a href="http://farm1.images.example.co.uk/" title="http://farm1.images.example.co.uk/" rel="nofollow external">farm1.images.example.co.uk</a>'), |  | ||||||
|                      array('example.museum', |  | ||||||
|                            '<a href="http://example.museum/" title="http://example.museum/" rel="nofollow external">example.museum</a>'), |  | ||||||
|                      array('example.travel', |  | ||||||
|                            '<a href="http://example.travel/" title="http://example.travel/" rel="nofollow external">example.travel</a>'), |  | ||||||
|                      array('example.com.', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>.'), |  | ||||||
|                      array('example.com?', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>?'), |  | ||||||
|                      array('example.com!', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>!'), |  | ||||||
|                      array('example.com,', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>,'), |  | ||||||
|                      array('example.com;', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>;'), |  | ||||||
|                      array('example.com:', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>:'), |  | ||||||
|                      array('\'example.com\'', |  | ||||||
|                            '\'<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>\''), |  | ||||||
|                      array('"example.com"', |  | ||||||
|                            '"<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>"'), |  | ||||||
|                      array('example.com', |  | ||||||
|                            '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>'), |  | ||||||
|                      array('(example.com)', |  | ||||||
|                            '(<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>)'), |  | ||||||
|                      array('[example.com]', |  | ||||||
|                            '[<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>]'), |  | ||||||
|                      array('<example.com>', |  | ||||||
|                            '<<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>>'), |  | ||||||
|                      array('Hey, check out my cool site example.com okay?', |  | ||||||
|                            'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a> okay?'), |  | ||||||
|                      array('Hey, check out my cool site example.com.I made it.', |  | ||||||
|                            'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>.I made it.'), |  | ||||||
|                      array('Hey, check out my cool site example.com.Funny thing...', |  | ||||||
|                            'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>.Funny thing...'), |  | ||||||
|                      array('Hey, check out my cool site example.com.You will love it.', |  | ||||||
|                            'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>.You will love it.'), |  | ||||||
|                      array('What about parens (e.g. example.com/path/foo/(bar))?', |  | ||||||
|                            'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">example.com/path/foo/(bar)</a>)?'), |  | ||||||
|                      array('What about parens (e.g. example.com/path/foo/(bar)?', |  | ||||||
|                            'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">example.com/path/foo/(bar)</a>?'), |  | ||||||
|                      array('What about parens (e.g. example.com/path/foo/(bar).)?', |  | ||||||
|                            'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">example.com/path/foo/(bar)</a>.)?'), |  | ||||||
|                      array('What about parens (e.g. example.com/path/(foo,bar)?', |  | ||||||
|                            'What about parens (e.g. <a href="http://example.com/path/(foo,bar)" title="http://example.com/path/(foo,bar)" rel="nofollow external">example.com/path/(foo,bar)</a>?'), |  | ||||||
|                      array('file.ext', |                      array('file.ext', | ||||||
|                            'file.ext'), |                            'file.ext'), | ||||||
|                      array('file.html', |                      array('file.html', | ||||||
| @@ -275,9 +194,161 @@ class URLDetectionTest extends PHPUnit_Framework_TestCase | |||||||
|  |  | ||||||
|                      // scheme-less HTTP URLs with @ in the path: http://status.net/open-source/issues/2248 |                      // scheme-less HTTP URLs with @ in the path: http://status.net/open-source/issues/2248 | ||||||
|                      array('http://flickr.com/photos/34807140@N05/3838905434', |                      array('http://flickr.com/photos/34807140@N05/3838905434', | ||||||
|                            '<a href="http://flickr.com/photos/34807140@N05/3838905434" title="http://flickr.com/photos/34807140@N05/3838905434" class="attachment thumbnail" id="attachment-XXX" rel="nofollow external">http://flickr.com/photos/34807140@N05/3838905434</a>'), |                            '<a href="http://www.flickr.com/photos/34807140@N05/3838905434" title="http://www.flickr.com/photos/34807140@N05/3838905434" rel="nofollow external noreferrer" class="attachment thumbnail" id="attachment-XXX">http://flickr.com/photos/34807140@N05/3838905434</a>'), | ||||||
|  |                      ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     static public function linkifyProvider() | ||||||
|  |     { | ||||||
|  |         return array( | ||||||
|  |             //bare ip addresses are no longer supported | ||||||
|  |             array('127.0.0.1', | ||||||
|  |                   '<a href="http://127.0.0.1/" title="http://127.0.0.1/" rel="nofollow external">127.0.0.1</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1:99', | ||||||
|  |                   '<a href="http://127.0.0.1:99/" title="http://127.0.0.1:99/" rel="nofollow external">127.0.0.1:99</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/Name:test.php', | ||||||
|  |                   '<a href="http://127.0.0.1/Name:test.php" title="http://127.0.0.1/Name:test.php" rel="nofollow external">127.0.0.1/Name:test.php</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/~test', | ||||||
|  |                   '<a href="http://127.0.0.1/~test" title="http://127.0.0.1/~test" rel="nofollow external">127.0.0.1/~test</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/+test', | ||||||
|  |                   '<a href="http://127.0.0.1/+test" title="http://127.0.0.1/+test" rel="nofollow external">127.0.0.1/+test</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/$test', | ||||||
|  |                   '<a href="http://127.0.0.1/$test" title="http://127.0.0.1/$test" rel="nofollow external">127.0.0.1/$test</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/\'test', | ||||||
|  |                   '<a href="http://127.0.0.1/\'test" title="http://127.0.0.1/\'test" rel="nofollow external">127.0.0.1/\'test</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/"test', | ||||||
|  |                   '<a href="http://127.0.0.1/" title="http://127.0.0.1/" rel="nofollow external">127.0.0.1/</a>"test', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/test"test', | ||||||
|  |                   '<a href="http://127.0.0.1/test" title="http://127.0.0.1/test" rel="nofollow external">127.0.0.1/test</a>"test', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/-test', | ||||||
|  |                   '<a href="http://127.0.0.1/-test" title="http://127.0.0.1/-test" rel="nofollow external">127.0.0.1/-test</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/_test', | ||||||
|  |                   '<a href="http://127.0.0.1/_test" title="http://127.0.0.1/_test" rel="nofollow external">127.0.0.1/_test</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/!test', | ||||||
|  |                   '<a href="http://127.0.0.1/!test" title="http://127.0.0.1/!test" rel="nofollow external">127.0.0.1/!test</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/*test', | ||||||
|  |                   '<a href="http://127.0.0.1/*test" title="http://127.0.0.1/*test" rel="nofollow external">127.0.0.1/*test</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('127.0.0.1/test%20stuff', | ||||||
|  |                   '<a href="http://127.0.0.1/test%20stuff" title="http://127.0.0.1/test%20stuff" rel="nofollow external">127.0.0.1/test%20stuff</a>', | ||||||
|  |                   'bare_ipv4'), | ||||||
|  |             array('2001:4978:1b5:0:21d:e0ff:fe66:59ab/test.php', | ||||||
|  |                   '<a href="http://2001:4978:1b5:0:21d:e0ff:fe66:59ab/test.php" title="http://2001:4978:1b5:0:21d:e0ff:fe66:59ab/test.php" rel="nofollow external">2001:4978:1b5:0:21d:e0ff:fe66:59ab/test.php</a>', | ||||||
|  |                   'bare_ipv6'), | ||||||
|  |             array('[2001:4978:1b5:0:21d:e0ff:fe66:59ab]:99/test.php', | ||||||
|  |                   '<a href="http://[2001:4978:1b5:0:21d:e0ff:fe66:59ab]:99/test.php" title="http://[2001:4978:1b5:0:21d:e0ff:fe66:59ab]:99/test.php" rel="nofollow external">[2001:4978:1b5:0:21d:e0ff:fe66:59ab]:99/test.php</a>', | ||||||
|  |                   'bare_ipv6'), | ||||||
|  |             array('2001:4978:1b5:0:21d:e0ff:fe66:59ab', | ||||||
|  |                   '<a href="http://2001:4978:1b5:0:21d:e0ff:fe66:59ab/" title="http://2001:4978:1b5:0:21d:e0ff:fe66:59ab/" rel="nofollow external">2001:4978:1b5:0:21d:e0ff:fe66:59ab</a>', | ||||||
|  |                   'bare_ipv6'), | ||||||
|  |             array('example.com', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|             array('flickr.com/photos/34807140@N05/3838905434', |             array('flickr.com/photos/34807140@N05/3838905434', | ||||||
|                            '<a href="http://flickr.com/photos/34807140@N05/3838905434" title="http://flickr.com/photos/34807140@N05/3838905434" class="attachment thumbnail" id="attachment-XXX" rel="nofollow external">flickr.com/photos/34807140@N05/3838905434</a>'), |                   '<a href="http://flickr.com/photos/34807140@N05/3838905434" title="http://flickr.com/photos/34807140@N05/3838905434" class="attachment thumbnail" id="attachment-XXX" rel="nofollow external">flickr.com/photos/34807140@N05/3838905434</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('What about parens (e.g. example.com/path/foo/(bar))?', | ||||||
|  |                   'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">example.com/path/foo/(bar)</a>)?', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('What about parens (e.g. example.com/path/foo/(bar)?', | ||||||
|  |                   'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">example.com/path/foo/(bar)</a>?', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('What about parens (e.g. example.com/path/foo/(bar).)?', | ||||||
|  |                   'What about parens (e.g. <a href="http://example.com/path/foo/(bar)" title="http://example.com/path/foo/(bar)" rel="nofollow external">example.com/path/foo/(bar)</a>.?', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('What about parens (e.g. example.com/path/(foo,bar)?', | ||||||
|  |                   'What about parens (e.g. <a href="http://example.com/path/(foo,bar)" title="http://example.com/path/(foo,bar)" rel="nofollow external">example.com/path/(foo,bar)</a>?', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.org', | ||||||
|  |                   '<a href="http://example.org/" title="http://example.org/" rel="nofollow external">example.org</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.co.uk', | ||||||
|  |                   '<a href="http://example.co.uk/" title="http://example.co.uk/" rel="nofollow external">example.co.uk</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('www.example.co.uk', | ||||||
|  |                   '<a href="http://www.example.co.uk/" title="http://www.example.co.uk/" rel="nofollow external">www.example.co.uk</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('farm1.images.example.co.uk', | ||||||
|  |                   '<a href="http://farm1.images.example.co.uk/" title="http://farm1.images.example.co.uk/" rel="nofollow external">farm1.images.example.co.uk</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.museum', | ||||||
|  |                   '<a href="http://example.museum/" title="http://example.museum/" rel="nofollow external">example.museum</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.travel', | ||||||
|  |                   '<a href="http://example.travel/" title="http://example.travel/" rel="nofollow external">example.travel</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com.', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>.', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com?', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>?', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com!', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>!', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com,', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>,', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com;', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>;', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com:', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>:', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('\'example.com\'', | ||||||
|  |                   '\'<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>\'', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('"example.com"', | ||||||
|  |                   '"<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>"', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com', | ||||||
|  |                   '<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('(example.com)', | ||||||
|  |                   '(<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>)', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('[example.com]', | ||||||
|  |                   '[<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>]', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('<example.com>', | ||||||
|  |                   '<<a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('Hey, check out my cool site example.com okay?', | ||||||
|  |                   'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a> okay?', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('Hey, check out my cool site example.com.I made it.', | ||||||
|  |                   'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>.I made it.', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('Hey, check out my cool site example.com.Funny thing...', | ||||||
|  |                   'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>.Funny thing...', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('Hey, check out my cool site example.com.You will love it.', | ||||||
|  |                   'Hey, check out my cool site <a href="http://example.com/" title="http://example.com/" rel="nofollow external">example.com</a>.You will love it.', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('example.com:8080/test.php', | ||||||
|  |                   '<a href="http://example.com:8080/test.php" title="http://example.com:8080/test.php" rel="nofollow external">example.com:8080/test.php</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('user_name+other@example.com', | ||||||
|  |                   '<a href="mailto:user_name+other@example.com" title="mailto:user_name+other@example.com" rel="nofollow external">user_name+other@example.com</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|  |             array('user@example.com', | ||||||
|  |                   '<a href="mailto:user@example.com" title="mailto:user@example.com" rel="nofollow external">user@example.com</a>', | ||||||
|  |                   'bare_domains'), | ||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -61,7 +61,7 @@ class UserFeedParseTests extends PHPUnit_Framework_TestCase | |||||||
|         $this->assertEquals($poco->address->formatted, 'El Cerrito, CA'); |         $this->assertEquals($poco->address->formatted, 'El Cerrito, CA'); | ||||||
|         $this->assertEquals($poco->urls[0]->type, 'homepage'); |         $this->assertEquals($poco->urls[0]->type, 'homepage'); | ||||||
|         $this->assertEquals($poco->urls[0]->value, 'http://zach.copley.name'); |         $this->assertEquals($poco->urls[0]->value, 'http://zach.copley.name'); | ||||||
|         $this->assertEquals($poco->urls[0]->primary, 'true'); |         $this->assertEquals($poco->urls[0]->primary, true); | ||||||
|         $this->assertEquals($poco->note, 'Zach Hack Attack'); |         $this->assertEquals($poco->note, 'Zach Hack Attack'); | ||||||
|  |  | ||||||
|         // test the post |         // test the post | ||||||
|   | |||||||
| @@ -12,19 +12,26 @@ define('STATUSNET', true);  // compatibility | |||||||
| mb_internal_encoding('UTF-8'); // @fixme this probably belongs in common.php?
 | mb_internal_encoding('UTF-8'); // @fixme this probably belongs in common.php?
 | ||||||
| 
 | 
 | ||||||
| require_once INSTALLDIR . '/lib/common.php'; | require_once INSTALLDIR . '/lib/common.php'; | ||||||
| require_once INSTALLDIR . '/lib/jabber.php'; | require_once INSTALLDIR . '/plugins/Xmpp/XmppPlugin.php'; | ||||||
| 
 | 
 | ||||||
| class JidValidateTest extends PHPUnit_Framework_TestCase | class XmppValidateTest extends PHPUnit_Framework_TestCase | ||||||
| { | { | ||||||
|  | 	public function setUp() | ||||||
|  | 	{ | ||||||
|  | 		if(!array_key_exists('Xmpp', GNUsocial::getActivePlugins())){ | ||||||
|  | 			$this->markTestSkipped('XmppPlugin is not enabled.'); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|     /** |     /** | ||||||
|      * @dataProvider validationCases |      * @dataProvider validationCases | ||||||
|      * |      * | ||||||
|      */ |      */ | ||||||
|     public function testValidate($jid, $validFull, $validBase) |     public function testValidate($jid, $validFull, $validBase) | ||||||
|     { |     { | ||||||
|         $this->assertEquals($validFull, jabber_valid_full_jid($jid), "validating as full or base JID"); |     	$xmpp = new TestXmppPlugin(); | ||||||
| 
 |     	$this->assertEquals($validFull || $validBase, $xmpp->validate($jid)); | ||||||
|         $this->assertEquals($validBase, jabber_valid_base_jid($jid), "validating as base JID only"); |         $this->assertEquals($validFull, $xmpp->validateFullJid($jid), "validating as full or base JID"); | ||||||
|  |         $this->assertEquals($validBase, $xmpp->validateBaseJid($jid), "validating as base JID only"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @@ -33,7 +40,8 @@ class JidValidateTest extends PHPUnit_Framework_TestCase | |||||||
|      */ |      */ | ||||||
|     public function testNormalize($jid, $expected) |     public function testNormalize($jid, $expected) | ||||||
|     { |     { | ||||||
|         $this->assertEquals($expected, jabber_normalize_jid($jid)); |     	$xmpp = new XmppPlugin(); | ||||||
|  |         $this->assertEquals($expected, $xmpp->normalize($jid)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @@ -41,7 +49,8 @@ class JidValidateTest extends PHPUnit_Framework_TestCase | |||||||
|      */ |      */ | ||||||
|     public function testDomainCheck($domain, $expected, $note) |     public function testDomainCheck($domain, $expected, $note) | ||||||
|     { |     { | ||||||
|         $this->assertEquals($expected, jabber_check_domain($domain), $note); |     	$xmpp = new TestXmppPlugin(); | ||||||
|  |         $this->assertEquals($expected, $xmpp->checkDomain($domain), $note); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     static public function validationCases() |     static public function validationCases() | ||||||
| @@ -144,3 +153,19 @@ class JidValidateTest extends PHPUnit_Framework_TestCase | |||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | class TestXmppPlugin extends XmppPlugin { | ||||||
|  | 	public function checkDomain($domain) | ||||||
|  | 	{ | ||||||
|  | 		return parent::checkDomain($domain); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	public function validateBaseJid($jid, $check_domain=false) | ||||||
|  | 	{ | ||||||
|  | 		return parent::validateBaseJid($jid, $check_domain); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	public function validateFullJid($jid, $check_domain=false) | ||||||
|  | 	{ | ||||||
|  | 		return parent::validateFullJid($jid, $check_domain); | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user