X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FOStatus%2Ftests%2Fremote-tests.php;h=1dce588dfe70d3c69888636983dc8bb5d294a131;hb=a0db913ea44c7b6edda06bd6bf1062dcad150270;hp=64c60a8a4cd76d2f5d619d72a2aa40af04bde905;hpb=78ed0348b0eaaebf7a51d55adc7e746cc5b43bbf;p=quix0rs-gnu-social.git diff --git a/plugins/OStatus/tests/remote-tests.php b/plugins/OStatus/tests/remote-tests.php index 64c60a8a4c..1dce588dfe 100644 --- a/plugins/OStatus/tests/remote-tests.php +++ b/plugins/OStatus/tests/remote-tests.php @@ -4,7 +4,7 @@ if (php_sapi_name() != 'cli') { die('not for web'); } -define('TIMEOUT', 60); // ssslllloowwwww salmon if queues are off +define('HTTP_TIMEOUT', 60); // ssslllloowwwww salmon if queues are off define('INSTALLDIR', dirname(dirname(dirname(dirname(__FILE__))))); set_include_path(INSTALLDIR . '/extlib' . PATH_SEPARATOR . get_include_path()); @@ -63,14 +63,17 @@ class OStatusTester extends TestBase /** * @param string $a base URL of test site A (eg http://localhost/mublog) * @param string $b base URL of test site B (eg http://localhost/mublog2) + * @param int $timeout HTTP timeout value (needs to be long if Salmon is slow) */ - function __construct($a, $b) { + function __construct($a, $b, $timeout=60) { $this->a = $a; $this->b = $b; $base = 'test' . mt_rand(1, 1000000); - $this->pub = new SNTestClient($this->a, 'pub' . $base, 'pw-' . mt_rand(1, 1000000)); - $this->sub = new SNTestClient($this->b, 'sub' . $base, 'pw-' . mt_rand(1, 1000000)); + $this->pub = new SNTestClient($this->a, 'pub' . $base, 'pw-' . mt_rand(1, 1000000), $timeout); + $this->sub = new SNTestClient($this->b, 'sub' . $base, 'pw-' . mt_rand(1, 1000000), $timeout); + + $this->group = 'group' . $base; } function run() @@ -162,15 +165,49 @@ class OStatusTester extends TestBase $this->assertFalse($this->pub->hasSubscriber($this->sub->getProfileUri())); } + function testCreateGroup() + { + $this->groupUrl = $this->pub->createGroup($this->group); + $this->assertTrue(!empty($this->groupUrl)); + } + + function testJoinGroup() + { + #$this->assertFalse($this->sub->inGroup($this->groupUrl)); + $this->sub->joinGroup($this->groupUrl); + #$this->assertTrue($this->sub->inGroup($this->groupUrl)); + } + + function testLocalGroupPost() + { + $post = $this->pub->post("Group post from local to !{$this->group}, should go out over push."); + $this->assertNotEqual('', $post); + $this->sub->assertReceived($post); + } + + function testRemoteGroupPost() + { + $post = $this->sub->post("Group post from remote to !{$this->group}, should come in over salmon."); + $this->assertNotEqual('', $post); + $this->pub->assertReceived($post); + } + + function testLeaveGroup() + { + #$this->assertTrue($this->sub->inGroup($this->groupUrl)); + $this->sub->leaveGroup($this->groupUrl); + #$this->assertFalse($this->sub->inGroup($this->groupUrl)); + } } class SNTestClient extends TestBase { - function __construct($base, $username, $password) + function __construct($base, $username, $password, $timeout=60) { $this->basepath = $base; $this->username = $username; $this->password = $password; + $this->timeout = $timeout; $this->fullname = ucfirst($username) . ' Smith'; $this->homepage = 'http://example.org/' . $username; @@ -190,7 +227,7 @@ class SNTestClient extends TestBase { $url = $this->basepath . '/' . $path; - $http = new HTTP_Request2($url, 'POST', array('timeout' => TIMEOUT)); + $http = new HTTP_Request2($url, 'POST', array('timeout' => $this->timeout)); if ($auth) { $http->setAuth($this->username, $this->password, HTTP_Request2::AUTH_BASIC); } @@ -217,7 +254,7 @@ class SNTestClient extends TestBase protected function web($path, $form, $params=array()) { $url = $this->basepath . '/' . $path; - $http = new HTTP_Request2($url, 'GET', array('timeout' => TIMEOUT)); + $http = new HTTP_Request2($url, 'GET', array('timeout' => $this->timeout)); $response = $http->send(); $dom = $this->checkWeb($url, 'GET', $response); @@ -532,12 +569,88 @@ class SNTestClient extends TestBase return false; } + /** + * Create a group on this site. + * + * @param string $nickname + * @param array $options + * @return string: profile URL for the group + */ + function createGroup($nickname, $options=array()) { + $this->log("Creating group as %s on %s: %s", + $this->username, + $this->basepath, + $nickname); + + $data = $this->api('statusnet/groups/create', 'json', + array_merge(array('nickname' => $nickname), $options)); + $url = $data['url']; + + if ($url) { + $this->log(' created as %s', $url); + } else { + $this->log(' failed? %s', var_export($data, true)); + } + return $url; + } + + function groupInfo($nickname) { + $data = $this->api('statusnet/groups/show', 'json', array( + 'id' => $nickname + )); + } + + /** + * Join a group. + * + * @param string $group nickname or URL + */ + function joinGroup($group) { + $this->post('join ' . $group); + } + + /** + * Leave a group. + * + * @param string $group nickname or URL + */ + function leaveGroup($group) { + $this->post('drop ' . $group); + } + + /** + * + * @param string $nickname + * @return + */ + function inGroup($nickname) { + // @todo + } } -$args = array_slice($_SERVER['argv'], 1); +// @fixme switch to commandline.inc? +$timeout = HTTP_TIMEOUT; + +$args = array(); +$options = array(); +foreach (array_slice($_SERVER['argv'], 1) as $arg) { + if (substr($arg, 0, 2) == '--') { + $bits = explode('=', substr($arg, 2), 2); + if (count($bits == 2)) { + list($key, $val) = $bits; + $options[$key] = $val; + } else { + list($key) = $bits; + $options[$key] = true; + } + } else { + $args[] = $arg; + } +} if (count($args) < 2) { print << +remote-tests.php [options] + --timeout=## change HTTP timeout from default {$timeout}s url1: base URL of a StatusNet instance url2: base URL of another StatusNet instance @@ -551,6 +664,9 @@ exit(1); $a = $args[0]; $b = $args[1]; +if (isset($options['timeout'])) { + $timeout = intval($options['timeout']); +} -$tester = new OStatusTester($a, $b); +$tester = new OStatusTester($a, $b, $timeout); $tester->run();