From: Joas Schilling Date: Wed, 7 Jan 2015 09:34:42 +0000 (+0100) Subject: Extend Test\TestCase and do not use uniqid() X-Git-Tag: v8.0.0alpha2~36^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fb37b3c68779f60b959115dd70e9c46f21b88dc2;p=nextcloud-server.git Extend Test\TestCase and do not use uniqid() --- diff --git a/apps/provisioning_api/tests/AppsTest.php b/apps/provisioning_api/tests/AppsTest.php deleted file mode 100644 index c68259d1756..00000000000 --- a/apps/provisioning_api/tests/AppsTest.php +++ /dev/null @@ -1,108 +0,0 @@ - - * @author Thomas Müller - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see . - * - */ - -class Test_Provisioning_Api_Apps extends PHPUnit_Framework_TestCase { - - private $users = array(); - - function setUp() { - OC_Group::createGroup('admin'); - } - /** - * Generates a temp user - * @param $num int number of users to generate - */ - function generateUsers($num=1) { - for($i=0; $i<$num; $i++) { - $user = uniqid(); - \OC_User::createUser($user, 'password'); - $this->users[] = $user; - $users[] = $user; - } - return count($users) == 1 ? reset($users) : $users; - } - - function testGetAppInfo() { - - $result = \OCA\provisioning_API\Apps::getAppInfo(array('appid' => 'provisioning_api')); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - - } - - function testGetAppInfoOnBadAppID() { - - $result = \OCA\provisioning_API\Apps::getAppInfo(array('appid' => 'not_provisioning_api')); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertEquals(\OC_API::RESPOND_NOT_FOUND, $result->getStatusCode()); - - } - - public function testGetApps() { - - $user = $this->generateUsers(); - \OC_Group::addToGroup($user, 'admin'); - \OC_User::setUserId($user); - - $result = \OCA\provisioning_API\Apps::getApps(array()); - - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals(count(\OC_App::listAllApps()), count($data['apps'])); - - } - - public function testGetAppsEnabled() { - - $_GET['filter'] = 'enabled'; - $result = \OCA\provisioning_API\Apps::getApps(array('filter' => 'enabled')); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals(count(\OC_App::getEnabledApps()), count($data['apps'])); - - } - - public function testGetAppsDisabled() { - - $_GET['filter'] = 'disabled'; - $result = \OCA\provisioning_API\Apps::getApps(array('filter' => 'disabled')); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $apps = \OC_App::listAllApps(); - $list = array(); - foreach($apps as $app) { - $list[] = $app['id']; - } - $disabled = array_diff($list, \OC_App::getEnabledApps()); - $this->assertEquals(count($disabled), count($data['apps'])); - - } - - function tearDown() { - OC_Group::deleteGroup('admin'); - } - -} diff --git a/apps/provisioning_api/tests/appstest.php b/apps/provisioning_api/tests/appstest.php new file mode 100644 index 00000000000..1d5642b6302 --- /dev/null +++ b/apps/provisioning_api/tests/appstest.php @@ -0,0 +1,84 @@ + + * @author Thomas Müller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * + */ + +namespace OCA\Provisioning_API\Tests; + +class AppsTest extends TestCase { + public function testGetAppInfo() { + $result = \OCA\provisioning_API\Apps::getAppInfo(array('appid' => 'provisioning_api')); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + + } + + public function testGetAppInfoOnBadAppID() { + + $result = \OCA\provisioning_API\Apps::getAppInfo(array('appid' => 'not_provisioning_api')); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertEquals(\OC_API::RESPOND_NOT_FOUND, $result->getStatusCode()); + + } + + public function testGetApps() { + + $user = $this->generateUsers(); + \OC_Group::addToGroup($user, 'admin'); + \OC_User::setUserId($user); + + $result = \OCA\provisioning_API\Apps::getApps(array()); + + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals(count(\OC_App::listAllApps()), count($data['apps'])); + + } + + public function testGetAppsEnabled() { + + $_GET['filter'] = 'enabled'; + $result = \OCA\provisioning_API\Apps::getApps(array('filter' => 'enabled')); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals(count(\OC_App::getEnabledApps()), count($data['apps'])); + + } + + public function testGetAppsDisabled() { + + $_GET['filter'] = 'disabled'; + $result = \OCA\provisioning_API\Apps::getApps(array('filter' => 'disabled')); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $apps = \OC_App::listAllApps(); + $list = array(); + foreach($apps as $app) { + $list[] = $app['id']; + } + $disabled = array_diff($list, \OC_App::getEnabledApps()); + $this->assertEquals(count($disabled), count($data['apps'])); + + } +} diff --git a/apps/provisioning_api/tests/groupsTest.php b/apps/provisioning_api/tests/groupsTest.php deleted file mode 100644 index 280e4792ff7..00000000000 --- a/apps/provisioning_api/tests/groupsTest.php +++ /dev/null @@ -1,174 +0,0 @@ - - * @author Thomas Müller - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see . - * - */ - -class Test_Provisioning_Api_Groups extends PHPUnit_Framework_TestCase { - - private $users = array(); - - public function setUp() { - // These seems to be deleted by another test. - OC_Group::createGroup('admin'); - } - - /** - * Generates a temp user - * @param $num int number of users to generate - */ - function generateUsers($num=1) { - for($i=0; $i<$num; $i++) { - $user = uniqid(); - \OC_User::createUser($user, 'password'); - $this->users[] = $user; - $users[] = $user; - } - return count($users) == 1 ? reset($users) : $users; - } - - function testGetGroupAsUser() { - - $users = $this->generateUsers(2); - \OC_User::setUserId($users[0]); - - $group = uniqid(); - \OC_Group::createGroup($group); - \OC_Group::addToGroup($users[1], $group); - - $result = \OCA\provisioning_api\Groups::getGroup(array( - 'groupid' => $group, - )); - - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertEquals(\OC_API::RESPOND_UNAUTHORISED, $result->getStatusCode()); - - } - - function testGetGroupAsSubadmin() { - - $users = $this->generateUsers(2); - \OC_User::setUserId($users[0]); - - $group = uniqid(); - \OC_Group::createGroup($group); - \OC_Group::addToGroup($users[0], $group); - \OC_Group::addToGroup($users[1], $group); - - \OC_SubAdmin::createSubAdmin($users[0], $group); - - $result = \OCA\provisioning_api\Groups::getGroup(array( - 'groupid' => $group, - )); - - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertEquals(array('users' => $users), $result->getData()); - - } - - function testGetGroupAsIrrelevantSubadmin() { - - $users = $this->generateUsers(2); - \OC_User::setUserId($users[0]); - - $group = uniqid(); - \OC_Group::createGroup($group); - $group2 = uniqid(); - \OC_Group::createGroup($group2); - \OC_Group::addToGroup($users[1], $group); - \OC_Group::addToGroup($users[0], $group2); - - \OC_SubAdmin::createSubAdmin($users[0], $group2); - - $result = \OCA\provisioning_api\Groups::getGroup(array( - 'groupid' => $group, - )); - - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertEquals(\OC_API::RESPOND_UNAUTHORISED, $result->getStatusCode()); - - } - - function testGetGroupAsAdmin() { - - $users = $this->generateUsers(2); - \OC_User::setUserId($users[0]); - - $group = uniqid(); - \OC_Group::createGroup($group); - - \OC_Group::addToGroup($users[1], $group); - \OC_Group::addToGroup($users[0], 'admin'); - - $result = \OCA\provisioning_api\Groups::getGroup(array( - 'groupid' => $group, - )); - - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertEquals(array('users' => array($users[1])), $result->getData()); - - } - - function testGetSubAdminsOfGroup() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $group1 = uniqid(); - OC_Group::createGroup($group1); - OC_SubAdmin::createSubAdmin($user2, $group1); - $result = \OCA\provisioning_api\Groups::getSubAdminsOfGroup(array( - 'groupid' => $group1, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals($user2, reset($data)); - OC_Group::deleteGroup($group1); - - $user1 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $result = \OCA\provisioning_api\Groups::getSubAdminsOfGroup(array( - 'groupid' => uniqid(), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertEquals(101, $result->getStatusCode()); - } - - /** - * Remove all the temporary users - */ - function tearDown() { - foreach($this->users as $user) { - \OC_User::deleteUser($user); - } - OC_Group::deleteGroup('admin'); - } - - -} diff --git a/apps/provisioning_api/tests/groupstest.php b/apps/provisioning_api/tests/groupstest.php new file mode 100644 index 00000000000..a25ebfbacfe --- /dev/null +++ b/apps/provisioning_api/tests/groupstest.php @@ -0,0 +1,142 @@ + + * @author Thomas Müller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * + */ + +namespace OCA\Provisioning_API\Tests; + +class GroupsTest extends TestCase { + public function testGetGroupAsUser() { + + $users = $this->generateUsers(2); + \OC_User::setUserId($users[0]); + + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + \OC_Group::addToGroup($users[1], $group); + + $result = \OCA\provisioning_api\Groups::getGroup(array( + 'groupid' => $group, + )); + + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertEquals(\OC_API::RESPOND_UNAUTHORISED, $result->getStatusCode()); + + } + + public function testGetGroupAsSubadmin() { + + $users = $this->generateUsers(2); + \OC_User::setUserId($users[0]); + + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + \OC_Group::addToGroup($users[0], $group); + \OC_Group::addToGroup($users[1], $group); + + \OC_SubAdmin::createSubAdmin($users[0], $group); + + $result = \OCA\provisioning_api\Groups::getGroup(array( + 'groupid' => $group, + )); + + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertEquals(array('users' => $users), $result->getData()); + + } + + public function testGetGroupAsIrrelevantSubadmin() { + + $users = $this->generateUsers(2); + \OC_User::setUserId($users[0]); + + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + $group2 = $this->getUniqueID(); + \OC_Group::createGroup($group2); + \OC_Group::addToGroup($users[1], $group); + \OC_Group::addToGroup($users[0], $group2); + + \OC_SubAdmin::createSubAdmin($users[0], $group2); + + $result = \OCA\provisioning_api\Groups::getGroup(array( + 'groupid' => $group, + )); + + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertEquals(\OC_API::RESPOND_UNAUTHORISED, $result->getStatusCode()); + + } + + public function testGetGroupAsAdmin() { + + $users = $this->generateUsers(2); + \OC_User::setUserId($users[0]); + + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + + \OC_Group::addToGroup($users[1], $group); + \OC_Group::addToGroup($users[0], 'admin'); + + $result = \OCA\provisioning_api\Groups::getGroup(array( + 'groupid' => $group, + )); + + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertEquals(array('users' => array($users[1])), $result->getData()); + + } + + public function testGetSubAdminsOfGroup() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_SubAdmin::createSubAdmin($user2, $group1); + $result = \OCA\provisioning_api\Groups::getSubAdminsOfGroup(array( + 'groupid' => $group1, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals($user2, reset($data)); + \OC_Group::deleteGroup($group1); + + $user1 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $result = \OCA\provisioning_api\Groups::getSubAdminsOfGroup(array( + 'groupid' => $this->getUniqueID(), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertEquals(101, $result->getStatusCode()); + } +} diff --git a/apps/provisioning_api/tests/testcase.php b/apps/provisioning_api/tests/testcase.php new file mode 100644 index 00000000000..d6e196bcdcf --- /dev/null +++ b/apps/provisioning_api/tests/testcase.php @@ -0,0 +1,61 @@ + + * @author Thomas Müller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * + */ + +namespace OCA\Provisioning_API\Tests; + +abstract class TestCase extends \Test\TestCase { + protected $users = array(); + + protected function setUp() { + parent::setUp(); + \OC_Group::createGroup('admin'); + } + + /** + * Generates a temp user + * @param int $num number of users to generate + * @return array + */ + protected function generateUsers($num = 1) { + $users = array(); + for ($i = 0; $i < $num; $i++) { + $user = $this->getUniqueID(); + \OC_User::createUser($user, 'password'); + $this->users[] = $user; + $users[] = $user; + } + return count($users) == 1 ? reset($users) : $users; + } + + protected function tearDown() { + foreach($this->users as $user) { + \OC_User::deleteUser($user); + } + + \OC_Group::deleteGroup('admin'); + + parent::tearDown(); + } +} diff --git a/apps/provisioning_api/tests/usersTest.php b/apps/provisioning_api/tests/usersTest.php deleted file mode 100644 index 381baa633e4..00000000000 --- a/apps/provisioning_api/tests/usersTest.php +++ /dev/null @@ -1,799 +0,0 @@ - - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see . - * - */ - -class Test_Provisioning_Api_Users extends PHPUnit_Framework_TestCase { - - private $users = array(); - - public function setUp() { - OC_Group::createGroup('admin'); - } - - /** - * Generates a temp user - * @param $num int number of users to generate - */ - function generateUsers($num=1) { - $users = array(); - for($i=0; $i<$num; $i++) { - $user = uniqid(); - \OC_User::createUser($user, 'password'); - $this->users[] = $user; - $users[] = $user; - } - return count($users) == 1 ? reset($users) : $users; - } - - function resetParams() { - $_GET = null; - $_POST = null; - } - - // Test getting the list of users - function testGetUsers() { - $result = \OCA\provisioning_API\Users::getUsers(array()); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $count = $result->getData(); - $count = count($count['users']); - $this->assertEquals(count(\OC_User::getUsers()), $count); - - $user = $this->generateUsers(); - $_GET['search'] = $user; - $result = \OCA\provisioning_API\Users::getUsers(array()); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals($user, reset($data['users'])); - - // Add several users - $this->generateUsers(10); - $this->resetParams(); - $_GET['limit'] = 2; - $result = \OCA\provisioning_API\Users::getUsers(array()); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $count = $result->getData(); - $count = count($count['users']); - $this->assertEquals(2, $count); - - $this->resetParams(); - $_GET['limit'] = 1; - $_GET['offset'] = 1; - $result = \OCA\provisioning_API\Users::getUsers(array()); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals(\OC_User::getUsers('', 1, 1), $data['users']); - } - - function testAddUser() { - $this->resetParams(); - $_POST['userid'] = uniqid(); - $_POST['password'] = 'password'; - $result = \OCA\provisioning_API\Users::addUser(array()); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertTrue(\OC_User::userExists($_POST['userid'])); - $this->assertEquals($_POST['userid'], \OC_User::checkPassword($_POST['userid'], $_POST['password'])); - $this->users[] = $_POST['userid']; - } - - function testGetUserOnSelf() { - $user = $this->generateUsers(); - \OC_User::setUserId($user); - $params['userid'] = $user; - $result = \OCA\provisioning_API\Users::getUser($params); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - } - - function testGetUserOnNonExistingUser() { - $user = $this->generateUsers(); - \OC_Group::addToGroup($user, 'admin'); - \OC_User::setUserId($user); - $params = array(); - $params['userid'] = uniqid(); - while(\OC_User::userExists($params['userid'])) { - $params['userid'] = uniqid(); - } - $result = \OCA\provisioning_API\Users::getUser($params); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertEquals(\OC_API::RESPOND_NOT_FOUND, $result->getStatusCode()); - - } - - function testGetUserOnOtherUser() { - $users = $this->generateUsers(2); - $params['userid'] = $users[0]; - \OC_User::setUserId($users[1]); - $result = \OCA\provisioning_API\Users::getUser($params); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - - // Now as as admin - $users = $this->generateUsers(2); - $params['userid'] = $users[0]; - \OC_Group::addToGroup($users[1], 'admin'); - \OC_User::setUserId($users[1]); - $result = \OCA\provisioning_API\Users::getUser($params); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals(\OC::$server->getConfig()->getUserValue($users[0], 'core', 'enabled', 'true'), $data['enabled']); - } - - function testEditOwnDisplayName() { - - // Test editing own name - $user = $this->generateUsers(); - \OC_User::setUserId($user); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $user, - '_put' => array( - 'key' => 'display', - 'value' => 'newname', - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertEquals('newname', \OC_User::getDisplayName($user)); - - } - - function testAdminEditDisplayNameOfUser() { - - // Test admin editing users name - $user = $this->generateUsers(); - \OC_Group::addToGroup($user, 'admin'); - \OC_User::setUserId($user); - $user2 = $this->generateUsers(); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $user2, - '_put' => array( - 'key' => 'display', - 'value' => 'newname', - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertEquals('newname', \OC_User::getDisplayName($user2)); - - } - - function testUserEditOtherUserDisplayName() { - - // Test editing other users name - $user = $this->generateUsers(); - \OC_User::setUserId($user); - $user2 = $this->generateUsers(); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $user2, - '_put' => array( - 'key' => 'display', - 'value' => 'newname', - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - - } - - function testEditOwnQuota() { - $user = $this->generateUsers(); - \OC_User::setUserId($user); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $user, - '_put' => array( - 'key' => 'quota', - 'value' => '20G', - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - } - - function testAdminEditOwnQuota() { - $user = $this->generateUsers(); - \OC_Group::addToGroup($user, 'admin'); - \OC_User::setUserId($user); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $user, - '_put' => array( - 'key' => 'quota', - 'value' => '20G', - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - } - - function testAdminEditOtherUserQuota() { - $user = $this->generateUsers(); - \OC_Group::addToGroup($user, 'admin'); - \OC_User::setUserId($user); - $user2 = $this->generateUsers(); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $user2, - '_put' => array( - 'key' => 'quota', - 'value' => '20G', - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - } - - function testUserEditOtherUserQuota() { - $user = $this->generateUsers(); - \OC_User::setUserId($user); - $user2 = $this->generateUsers(); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $user2, - '_put' => array( - 'key' => 'quota', - 'value' => '20G', - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - } - - function testUserEditOwnEmail() { - $user = $this->generateUsers(); - $email = 'test@example.com'; - \OC_User::setUserId($user); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $user, - '_put' => array( - 'key' => 'email', - 'value' => $email, - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertEquals($email, \OC::$server->getConfig()->getUserValue($user, 'settings', 'email', null)); - } - - function testUserEditOtherUserEmailAsUser() { - $users = $this->generateUsers(2); - $email = 'test@example.com'; - \OC_User::setUserId($users[0]); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $users[1], - '_put' => array( - 'key' => 'email', - 'value' => $email, - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - } - - function testUserEditOtherUserEmailAsAdmin() { - $users = $this->generateUsers(2); - $email = 'test@example.com'; - \OC_User::setUserId($users[0]); - \OC_Group::addToGroup($users[0], 'admin'); - $result = \OCA\provisioning_API\Users::editUser( - array( - 'userid' => $users[1], - '_put' => array( - 'key' => 'email', - 'value' => $email, - ), - ) - ); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertEquals($email, \OC::$server->getConfig()->getUserValue($users[1], 'settings', 'email', null)); - } - - function testDeleteSelf() { - $user = $this->generateUsers(); - OC_User::setUserId($user); - $result = \OCA\provisioning_API\Users::deleteUser(array( - 'userid' => $user, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - } - - function testDeleteOtherAsUser() { - $user = $this->generateUsers(); - OC_User::setUserId($user); - $user2 = $this->generateUsers(); - $result = \OCA\provisioning_API\Users::deleteUser(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - } - - function testDeleteOtherAsSubAdmin() { - $user = $this->generateUsers(); - OC_User::setUserId($user); - $user2 = $this->generateUsers(); - $group = uniqid(); - OC_Group::createGroup($group); - OC_Group::addToGroup($user, $group); - OC_Group::addToGroup($user2, $group); - OC_SubAdmin::createSubAdmin($user, $group); - $result = \OCA\provisioning_API\Users::deleteUser(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - OC_Group::deleteGroup($group); - } - - function testDeleteOtherAsIrelevantSubAdmin() { - $user = $this->generateUsers(); - OC_User::setUserId($user); - $user2 = $this->generateUsers(); - $group = uniqid(); - $group2 = uniqid(); - OC_Group::createGroup($group); - OC_Group::createGroup($group2); - OC_Group::addToGroup($user, $group); - OC_Group::addToGroup($user2, $group2); - OC_SubAdmin::createSubAdmin($user, $group); - $result = \OCA\provisioning_API\Users::deleteUser(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - OC_Group::deleteGroup($group); - OC_Group::deleteGroup($group2); - } - - function testDeleteOtherAsAdmin() { - $user = $this->generateUsers(); - OC_Group::addToGroup($user, 'admin'); - OC_User::setUserId($user); - $user2 = $this->generateUsers(); - $result = \OCA\provisioning_API\Users::deleteUser(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - } - - function testDeleteSelfAsAdmin() { - $user = $this->generateUsers(); - OC_Group::addToGroup($user, 'admin'); - OC_User::setUserId($user); - $result = \OCA\provisioning_API\Users::deleteUser(array( - 'userid' => $user, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - } - - function testGetUsersGroupsOnSelf() { - $user = $this->generateUsers(); - OC_User::setUserId($user); - $group = uniqid(); - OC_Group::createGroup($group); - OC_Group::addToGroup($user, $group); - $result = \OCA\provisioning_API\Users::getUsersGroups(array( - 'userid' => $user, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals($group, reset($data['groups'])); - $this->assertEquals(1, count($data['groups'])); - OC_Group::deleteGroup($group); - } - - function testGetUsersGroupOnOther() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - $group = uniqid(); - OC_Group::createGroup($group); - OC_Group::addToGroup($user2, $group); - $result = \OCA\provisioning_API\Users::getUsersGroups(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - OC_Group::deleteGroup($group); - } - - function testGetUsersGroupOnOtherAsAdmin() { - $user1 = $this->generateUsers(); - OC_Group::addToGroup($user1, 'admin'); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - $group = uniqid(); - OC_Group::createGroup($group); - OC_Group::addToGroup($user2, $group); - $result = \OCA\provisioning_API\Users::getUsersGroups(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals($group, reset($data['groups'])); - $this->assertEquals(1, count($data['groups'])); - OC_Group::deleteGroup($group); - } - - function testGetUsersGroupsOnOtherAsSubAdmin() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - $group1 = uniqid(); - $group2 = uniqid(); - OC_Group::createGroup($group1); - OC_Group::createGroup($group2); - OC_Group::addToGroup($user2, $group1); - OC_Group::addToGroup($user2, $group2); - OC_Group::addToGroup($user1, $group1); - OC_SubAdmin::createSubAdmin($user1, $group1); - $result = \OCA\provisioning_API\Users::getUsersGroups(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals($group1, reset($data['groups'])); - $this->assertEquals(1, count($data['groups'])); - OC_Group::deleteGroup($group1); - OC_Group::deleteGroup($group2); - } - - function testGetUsersGroupsOnOtherAsIrelevantSubAdmin() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - $group1 = uniqid(); - $group2 = uniqid(); - OC_Group::createGroup($group1); - OC_Group::createGroup($group2); - OC_Group::addToGroup($user2, $group2); - OC_Group::addToGroup($user1, $group1); - OC_SubAdmin::createSubAdmin($user1, $group1); - $result = \OCA\provisioning_API\Users::getUsersGroups(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - OC_Group::deleteGroup($group1); - OC_Group::deleteGroup($group2); - } - - function testAddToGroup() { - $user = $this->generateUsers(); - $group = uniqid(); - OC_Group::createGroup($group); - OC_User::setUserId($user); - $_POST['groupid'] = $group; - $result = \OCA\provisioning_API\Users::addToGroup(array( - 'userid' => $user, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertFalse(OC_Group::inGroup($user, $group)); - OC_Group::deleteGroup($group); - } - - function testAddToGroupAsAdmin() { - $user = $this->generateUsers(); - OC_Group::addToGroup($user, 'admin'); - $group = uniqid(); - OC_Group::createGroup($group); - $user2 = $this->generateUsers(); - OC_User::setUserId($user); - $_POST['groupid'] = $group; - $result = \OCA\provisioning_API\Users::addToGroup(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertTrue(OC_Group::inGroup($user2, $group)); - OC_Group::deleteGroup($group); - } - - function testAddToGroupAsSubAdmin() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - $group1 = uniqid(); - OC_Group::createGroup($group1); - OC_SubAdmin::createSubAdmin($user1, $group1); - $_POST['groupid'] = $group1; - $result = \OCA\provisioning_API\Users::addToGroup(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertFalse(OC_Group::inGroup($user2, $group1)); - OC_Group::deleteGroup($group1); - } - - function testAddToGroupAsIrelevantSubAdmin() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - $group1 = uniqid(); - $group2 = uniqid(); - OC_Group::createGroup($group1); - OC_Group::createGroup($group2); - OC_SubAdmin::createSubAdmin($user1, $group1); - $_POST['groupid'] = $group2; - $result = \OCA\provisioning_API\Users::addToGroup(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertFalse(OC_Group::inGroup($user2, $group2)); - OC_Group::deleteGroup($group1); - OC_Group::deleteGroup($group2); - } - - // test delete /cloud/users/{userid}/groups - function testRemoveFromGroupAsSelf() { - $user1 = $this->generateUsers(); - OC_User::setUserId($user1); - $group1 = uniqid(); - OC_Group::createGroup($group1); - OC_Group::addToGroup($user1, $group1); - $result = \OCA\provisioning_api\Users::removeFromGroup(array( - 'userid' => $user1, - '_delete' => array( - 'groupid' => $group1, - ), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertTrue(OC_Group::inGroup($user1, $group1)); - OC_Group::deleteGroup($group1); - } - - function testRemoveFromGroupAsAdmin() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - $group1 = uniqid(); - OC_Group::createGroup($group1); - OC_Group::addToGroup($user2, $group1); - OC_Group::addToGroup($user1, 'admin'); - $result = \OCA\provisioning_api\Users::removeFromGroup(array( - 'userid' => $user2, - '_delete' => array( - 'groupid' => $group1, - ), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertFalse(OC_Group::inGroup($user2, $group1)); - OC_Group::deleteGroup($group1); - } - - function testRemoveFromGroupAsSubAdmin() { - $user1 = $this->generateUsers(); - OC_User::setUserId($user1); - $user2 = $this->generateUsers(); - $group1 = uniqid(); - OC_Group::createGroup($group1); - OC_Group::addToGroup($user1, $group1); - OC_Group::addToGroup($user2, $group1); - OC_SubAdmin::createSubAdmin($user1, $group1); - $result = \OCA\provisioning_api\Users::removeFromGroup(array( - 'userid' => $user2, - '_delete' => array( - 'groupid' => $group1, - ), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertFalse(OC_Group::inGroup($user2, $group1)); - OC_Group::deleteGroup($group1); - } - - function testRemoveFromGroupAsIrelevantSubAdmin() { - $user1 = $this->generateUsers(); - OC_User::setUserId($user1); - $user2 = $this->generateUsers(); - $group1 = uniqid(); - $group2 = uniqid(); - OC_Group::createGroup($group1); - OC_Group::createGroup($group2); - OC_Group::addToGroup($user1, $group1); - OC_Group::addToGroup($user2, $group2); - OC_SubAdmin::createSubAdmin($user1, $group1); - $result = \OCA\provisioning_api\Users::removeFromGroup(array( - 'userid' => $user2, - '_delete' => array( - 'groupid' => $group2, - ), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertTrue(OC_Group::inGroup($user2, $group2)); - OC_Group::deleteGroup($group1); - OC_Group::deleteGroup($group2); - } - - function testCreateSubAdmin() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $group1 = uniqid(); - OC_Group::createGroup($group1); - $_POST['groupid'] = $group1; - $result = \OCA\provisioning_api\Users::addSubAdmin(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertTrue(OC_SubAdmin::isSubAdminofGroup($user2, $group1)); - OC_Group::deleteGroup($group1); - - $this->resetParams(); - - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $_POST['groupid'] = 'admin'; - $result = \OCA\provisioning_api\Users::addSubAdmin(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertEquals(103, $result->getStatusCode()); - $this->assertFalse($result->succeeded()); - - $this->resetParams(); - - $user1 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $group1 = uniqid(); - OC_Group::createGroup($group1); - $_POST['groupid'] = $group1; - $result = \OCA\provisioning_api\Users::addSubAdmin(array( - 'userid' => uniqid(), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertEquals(101, $result->getStatusCode()); - OC_Group::deleteGroup($group1); - } - - function testRemoveSubAdmin() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $group1 = uniqid(); - OC_Group::createGroup($group1); - OC_SubAdmin::createSubAdmin($user2, $group1); - $result = \OCA\provisioning_api\Users::removeSubAdmin(array( - 'userid' => $user2, - '_delete' => array( - 'groupid' => $group1, - ), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $this->assertTrue(!OC_SubAdmin::isSubAdminofGroup($user2, $group1)); - OC_Group::deleteGroup($group1); - - $user1 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $result = \OCA\provisioning_api\Users::removeSubAdmin(array( - 'userid' => uniqid(), - '_delete' => array( - 'groupid' => $group1, - ), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertEquals(101, $result->getStatusCode()); - $this->assertFalse($result->succeeded()); - - $this->resetParams(); - - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $group1 = uniqid(); - OC_Group::createGroup($group1); - $_POST['groupid'] = $group1; - $result = \OCA\provisioning_api\Users::removeSubAdmin(array( - 'userid' => $user2, - '_delete' => array( - 'groupid' => $group1, - ), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertEquals(102, $result->getStatusCode()); - OC_Group::deleteGroup($group1); - } - - function testGetSubAdminGroups() { - $user1 = $this->generateUsers(); - $user2 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $group1 = uniqid(); - OC_Group::createGroup($group1); - OC_SubAdmin::createSubAdmin($user2, $group1); - $result = \OCA\provisioning_api\Users::getUserSubAdminGroups(array( - 'userid' => $user2, - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertTrue($result->succeeded()); - $data = $result->getData(); - $this->assertEquals($group1, reset($data)); - OC_Group::deleteGroup($group1); - - $user1 = $this->generateUsers(); - OC_User::setUserId($user1); - OC_Group::addToGroup($user1, 'admin'); - $group1 = uniqid(); - $result = \OCA\provisioning_api\Users::getUserSubAdminGroups(array( - 'userid' => uniqid(), - )); - $this->assertInstanceOf('OC_OCS_Result', $result); - $this->assertFalse($result->succeeded()); - $this->assertEquals(101, $result->getStatusCode()); - } - - // Remove all the temporary users - function tearDown() { - foreach($this->users as $user) { - \OC_User::deleteUser($user); - } - OC_Group::deleteGroup('admin'); - } - -} diff --git a/apps/provisioning_api/tests/userstest.php b/apps/provisioning_api/tests/userstest.php new file mode 100644 index 00000000000..917d06a8348 --- /dev/null +++ b/apps/provisioning_api/tests/userstest.php @@ -0,0 +1,770 @@ + + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see . + * + */ + +namespace OCA\Provisioning_API\Tests; + +class UsersTest extends TestCase { + protected function resetParams() { + $_GET = null; + $_POST = null; + } + + // Test getting the list of users + public function testGetUsers() { + $result = \OCA\provisioning_API\Users::getUsers(array()); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $count = $result->getData(); + $count = count($count['users']); + $this->assertEquals(count(\OC_User::getUsers()), $count); + + $user = $this->generateUsers(); + $_GET['search'] = $user; + $result = \OCA\provisioning_API\Users::getUsers(array()); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals($user, reset($data['users'])); + + // Add several users + $this->generateUsers(10); + $this->resetParams(); + $_GET['limit'] = 2; + $result = \OCA\provisioning_API\Users::getUsers(array()); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $count = $result->getData(); + $count = count($count['users']); + $this->assertEquals(2, $count); + + $this->resetParams(); + $_GET['limit'] = 1; + $_GET['offset'] = 1; + $result = \OCA\provisioning_API\Users::getUsers(array()); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals(\OC_User::getUsers('', 1, 1), $data['users']); + } + + public function testAddUser() { + $this->resetParams(); + $_POST['userid'] = $this->getUniqueID(); + $_POST['password'] = 'password'; + $result = \OCA\provisioning_API\Users::addUser(array()); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertTrue(\OC_User::userExists($_POST['userid'])); + $this->assertEquals($_POST['userid'], \OC_User::checkPassword($_POST['userid'], $_POST['password'])); + $this->users[] = $_POST['userid']; + } + + public function testGetUserOnSelf() { + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $params['userid'] = $user; + $result = \OCA\provisioning_API\Users::getUser($params); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + } + + public function testGetUserOnNonExistingUser() { + $user = $this->generateUsers(); + \OC_Group::addToGroup($user, 'admin'); + \OC_User::setUserId($user); + $params = array(); + $params['userid'] = $this->getUniqueID(); + while(\OC_User::userExists($params['userid'])) { + $params['userid'] = $this->getUniqueID(); + } + $result = \OCA\provisioning_API\Users::getUser($params); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertEquals(\OC_API::RESPOND_NOT_FOUND, $result->getStatusCode()); + + } + + public function testGetUserOnOtherUser() { + $users = $this->generateUsers(2); + $params['userid'] = $users[0]; + \OC_User::setUserId($users[1]); + $result = \OCA\provisioning_API\Users::getUser($params); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + + // Now as as admin + $users = $this->generateUsers(2); + $params['userid'] = $users[0]; + \OC_Group::addToGroup($users[1], 'admin'); + \OC_User::setUserId($users[1]); + $result = \OCA\provisioning_API\Users::getUser($params); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals(\OC::$server->getConfig()->getUserValue($users[0], 'core', 'enabled', 'true'), $data['enabled']); + } + + public function testEditOwnDisplayName() { + + // Test editing own name + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $user, + '_put' => array( + 'key' => 'display', + 'value' => 'newname', + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertEquals('newname', \OC_User::getDisplayName($user)); + + } + + public function testAdminEditDisplayNameOfUser() { + + // Test admin editing users name + $user = $this->generateUsers(); + \OC_Group::addToGroup($user, 'admin'); + \OC_User::setUserId($user); + $user2 = $this->generateUsers(); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $user2, + '_put' => array( + 'key' => 'display', + 'value' => 'newname', + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertEquals('newname', \OC_User::getDisplayName($user2)); + + } + + public function testUserEditOtherUserDisplayName() { + + // Test editing other users name + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $user2 = $this->generateUsers(); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $user2, + '_put' => array( + 'key' => 'display', + 'value' => 'newname', + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + + } + + public function testEditOwnQuota() { + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $user, + '_put' => array( + 'key' => 'quota', + 'value' => '20G', + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + } + + public function testAdminEditOwnQuota() { + $user = $this->generateUsers(); + \OC_Group::addToGroup($user, 'admin'); + \OC_User::setUserId($user); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $user, + '_put' => array( + 'key' => 'quota', + 'value' => '20G', + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + } + + public function testAdminEditOtherUserQuota() { + $user = $this->generateUsers(); + \OC_Group::addToGroup($user, 'admin'); + \OC_User::setUserId($user); + $user2 = $this->generateUsers(); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $user2, + '_put' => array( + 'key' => 'quota', + 'value' => '20G', + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + } + + public function testUserEditOtherUserQuota() { + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $user2 = $this->generateUsers(); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $user2, + '_put' => array( + 'key' => 'quota', + 'value' => '20G', + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + } + + public function testUserEditOwnEmail() { + $user = $this->generateUsers(); + $email = 'test@example.com'; + \OC_User::setUserId($user); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $user, + '_put' => array( + 'key' => 'email', + 'value' => $email, + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertEquals($email, \OC::$server->getConfig()->getUserValue($user, 'settings', 'email', null)); + } + + public function testUserEditOtherUserEmailAsUser() { + $users = $this->generateUsers(2); + $email = 'test@example.com'; + \OC_User::setUserId($users[0]); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $users[1], + '_put' => array( + 'key' => 'email', + 'value' => $email, + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + } + + public function testUserEditOtherUserEmailAsAdmin() { + $users = $this->generateUsers(2); + $email = 'test@example.com'; + \OC_User::setUserId($users[0]); + \OC_Group::addToGroup($users[0], 'admin'); + $result = \OCA\provisioning_API\Users::editUser( + array( + 'userid' => $users[1], + '_put' => array( + 'key' => 'email', + 'value' => $email, + ), + ) + ); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertEquals($email, \OC::$server->getConfig()->getUserValue($users[1], 'settings', 'email', null)); + } + + public function testDeleteSelf() { + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $result = \OCA\provisioning_API\Users::deleteUser(array( + 'userid' => $user, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + } + + public function testDeleteOtherAsUser() { + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $user2 = $this->generateUsers(); + $result = \OCA\provisioning_API\Users::deleteUser(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + } + + public function testDeleteOtherAsSubAdmin() { + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $user2 = $this->generateUsers(); + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + \OC_Group::addToGroup($user, $group); + \OC_Group::addToGroup($user2, $group); + \OC_SubAdmin::createSubAdmin($user, $group); + $result = \OCA\provisioning_API\Users::deleteUser(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + \OC_Group::deleteGroup($group); + } + + public function testDeleteOtherAsIrelevantSubAdmin() { + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $user2 = $this->generateUsers(); + $group = $this->getUniqueID(); + $group2 = $this->getUniqueID(); + \OC_Group::createGroup($group); + \OC_Group::createGroup($group2); + \OC_Group::addToGroup($user, $group); + \OC_Group::addToGroup($user2, $group2); + \OC_SubAdmin::createSubAdmin($user, $group); + $result = \OCA\provisioning_API\Users::deleteUser(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + \OC_Group::deleteGroup($group); + \OC_Group::deleteGroup($group2); + } + + public function testDeleteOtherAsAdmin() { + $user = $this->generateUsers(); + \OC_Group::addToGroup($user, 'admin'); + \OC_User::setUserId($user); + $user2 = $this->generateUsers(); + $result = \OCA\provisioning_API\Users::deleteUser(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + } + + public function testDeleteSelfAsAdmin() { + $user = $this->generateUsers(); + \OC_Group::addToGroup($user, 'admin'); + \OC_User::setUserId($user); + $result = \OCA\provisioning_API\Users::deleteUser(array( + 'userid' => $user, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + } + + public function testGetUsersGroupsOnSelf() { + $user = $this->generateUsers(); + \OC_User::setUserId($user); + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + \OC_Group::addToGroup($user, $group); + $result = \OCA\provisioning_API\Users::getUsersGroups(array( + 'userid' => $user, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals($group, reset($data['groups'])); + $this->assertEquals(1, count($data['groups'])); + \OC_Group::deleteGroup($group); + } + + public function testGetUsersGroupOnOther() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + \OC_Group::addToGroup($user2, $group); + $result = \OCA\provisioning_API\Users::getUsersGroups(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + \OC_Group::deleteGroup($group); + } + + public function testGetUsersGroupOnOtherAsAdmin() { + $user1 = $this->generateUsers(); + \OC_Group::addToGroup($user1, 'admin'); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + \OC_Group::addToGroup($user2, $group); + $result = \OCA\provisioning_API\Users::getUsersGroups(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals($group, reset($data['groups'])); + $this->assertEquals(1, count($data['groups'])); + \OC_Group::deleteGroup($group); + } + + public function testGetUsersGroupsOnOtherAsSubAdmin() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + $group1 = $this->getUniqueID(); + $group2 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_Group::createGroup($group2); + \OC_Group::addToGroup($user2, $group1); + \OC_Group::addToGroup($user2, $group2); + \OC_Group::addToGroup($user1, $group1); + \OC_SubAdmin::createSubAdmin($user1, $group1); + $result = \OCA\provisioning_API\Users::getUsersGroups(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals($group1, reset($data['groups'])); + $this->assertEquals(1, count($data['groups'])); + \OC_Group::deleteGroup($group1); + \OC_Group::deleteGroup($group2); + } + + public function testGetUsersGroupsOnOtherAsIrelevantSubAdmin() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + $group1 = $this->getUniqueID(); + $group2 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_Group::createGroup($group2); + \OC_Group::addToGroup($user2, $group2); + \OC_Group::addToGroup($user1, $group1); + \OC_SubAdmin::createSubAdmin($user1, $group1); + $result = \OCA\provisioning_API\Users::getUsersGroups(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + \OC_Group::deleteGroup($group1); + \OC_Group::deleteGroup($group2); + } + + public function testAddToGroup() { + $user = $this->generateUsers(); + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + \OC_User::setUserId($user); + $_POST['groupid'] = $group; + $result = \OCA\provisioning_API\Users::addToGroup(array( + 'userid' => $user, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertFalse(\OC_Group::inGroup($user, $group)); + \OC_Group::deleteGroup($group); + } + + public function testAddToGroupAsAdmin() { + $user = $this->generateUsers(); + \OC_Group::addToGroup($user, 'admin'); + $group = $this->getUniqueID(); + \OC_Group::createGroup($group); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user); + $_POST['groupid'] = $group; + $result = \OCA\provisioning_API\Users::addToGroup(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertTrue(\OC_Group::inGroup($user2, $group)); + \OC_Group::deleteGroup($group); + } + + public function testAddToGroupAsSubAdmin() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_SubAdmin::createSubAdmin($user1, $group1); + $_POST['groupid'] = $group1; + $result = \OCA\provisioning_API\Users::addToGroup(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertFalse(\OC_Group::inGroup($user2, $group1)); + \OC_Group::deleteGroup($group1); + } + + public function testAddToGroupAsIrelevantSubAdmin() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + $group1 = $this->getUniqueID(); + $group2 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_Group::createGroup($group2); + \OC_SubAdmin::createSubAdmin($user1, $group1); + $_POST['groupid'] = $group2; + $result = \OCA\provisioning_API\Users::addToGroup(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertFalse(\OC_Group::inGroup($user2, $group2)); + \OC_Group::deleteGroup($group1); + \OC_Group::deleteGroup($group2); + } + + // test delete /cloud/users/{userid}/groups + public function testRemoveFromGroupAsSelf() { + $user1 = $this->generateUsers(); + \OC_User::setUserId($user1); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_Group::addToGroup($user1, $group1); + $result = \OCA\provisioning_api\Users::removeFromGroup(array( + 'userid' => $user1, + '_delete' => array( + 'groupid' => $group1, + ), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertTrue(\OC_Group::inGroup($user1, $group1)); + \OC_Group::deleteGroup($group1); + } + + public function testRemoveFromGroupAsAdmin() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_Group::addToGroup($user2, $group1); + \OC_Group::addToGroup($user1, 'admin'); + $result = \OCA\provisioning_api\Users::removeFromGroup(array( + 'userid' => $user2, + '_delete' => array( + 'groupid' => $group1, + ), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertFalse(\OC_Group::inGroup($user2, $group1)); + \OC_Group::deleteGroup($group1); + } + + public function testRemoveFromGroupAsSubAdmin() { + $user1 = $this->generateUsers(); + \OC_User::setUserId($user1); + $user2 = $this->generateUsers(); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_Group::addToGroup($user1, $group1); + \OC_Group::addToGroup($user2, $group1); + \OC_SubAdmin::createSubAdmin($user1, $group1); + $result = \OCA\provisioning_api\Users::removeFromGroup(array( + 'userid' => $user2, + '_delete' => array( + 'groupid' => $group1, + ), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertFalse(\OC_Group::inGroup($user2, $group1)); + \OC_Group::deleteGroup($group1); + } + + public function testRemoveFromGroupAsIrelevantSubAdmin() { + $user1 = $this->generateUsers(); + \OC_User::setUserId($user1); + $user2 = $this->generateUsers(); + $group1 = $this->getUniqueID(); + $group2 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_Group::createGroup($group2); + \OC_Group::addToGroup($user1, $group1); + \OC_Group::addToGroup($user2, $group2); + \OC_SubAdmin::createSubAdmin($user1, $group1); + $result = \OCA\provisioning_api\Users::removeFromGroup(array( + 'userid' => $user2, + '_delete' => array( + 'groupid' => $group2, + ), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertTrue(\OC_Group::inGroup($user2, $group2)); + \OC_Group::deleteGroup($group1); + \OC_Group::deleteGroup($group2); + } + + public function testCreateSubAdmin() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + $_POST['groupid'] = $group1; + $result = \OCA\provisioning_api\Users::addSubAdmin(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertTrue(\OC_SubAdmin::isSubAdminofGroup($user2, $group1)); + \OC_Group::deleteGroup($group1); + + $this->resetParams(); + + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $_POST['groupid'] = 'admin'; + $result = \OCA\provisioning_api\Users::addSubAdmin(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertEquals(103, $result->getStatusCode()); + $this->assertFalse($result->succeeded()); + + $this->resetParams(); + + $user1 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + $_POST['groupid'] = $group1; + $result = \OCA\provisioning_api\Users::addSubAdmin(array( + 'userid' => $this->getUniqueID(), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertEquals(101, $result->getStatusCode()); + \OC_Group::deleteGroup($group1); + } + + public function testRemoveSubAdmin() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_SubAdmin::createSubAdmin($user2, $group1); + $result = \OCA\provisioning_api\Users::removeSubAdmin(array( + 'userid' => $user2, + '_delete' => array( + 'groupid' => $group1, + ), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $this->assertTrue(!\OC_SubAdmin::isSubAdminofGroup($user2, $group1)); + \OC_Group::deleteGroup($group1); + + $user1 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $result = \OCA\provisioning_api\Users::removeSubAdmin(array( + 'userid' => $this->getUniqueID(), + '_delete' => array( + 'groupid' => $group1, + ), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertEquals(101, $result->getStatusCode()); + $this->assertFalse($result->succeeded()); + + $this->resetParams(); + + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + $_POST['groupid'] = $group1; + $result = \OCA\provisioning_api\Users::removeSubAdmin(array( + 'userid' => $user2, + '_delete' => array( + 'groupid' => $group1, + ), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertEquals(102, $result->getStatusCode()); + \OC_Group::deleteGroup($group1); + } + + public function testGetSubAdminGroups() { + $user1 = $this->generateUsers(); + $user2 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $group1 = $this->getUniqueID(); + \OC_Group::createGroup($group1); + \OC_SubAdmin::createSubAdmin($user2, $group1); + $result = \OCA\provisioning_api\Users::getUserSubAdminGroups(array( + 'userid' => $user2, + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertTrue($result->succeeded()); + $data = $result->getData(); + $this->assertEquals($group1, reset($data)); + \OC_Group::deleteGroup($group1); + + $user1 = $this->generateUsers(); + \OC_User::setUserId($user1); + \OC_Group::addToGroup($user1, 'admin'); + $group1 = $this->getUniqueID(); + $result = \OCA\provisioning_api\Users::getUserSubAdminGroups(array( + 'userid' => $this->getUniqueID(), + )); + $this->assertInstanceOf('OC_OCS_Result', $result); + $this->assertFalse($result->succeeded()); + $this->assertEquals(101, $result->getStatusCode()); + } +}