From 9ec2850c78e673a4aa1c4af97aa5be4414bd438f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Thu, 19 Nov 2015 15:35:58 +0100 Subject: [PATCH] Use mocks when testing isSharingDisabledForUser --- lib/private/files/storage/common.php | 2 +- lib/private/group/manager.php | 3 ++ lib/private/share/share.php | 2 +- lib/private/util.php | 22 +++++++---- lib/public/util.php | 6 ++- tests/lib/util.php | 58 +++++++++++++++------------- 6 files changed, 56 insertions(+), 37 deletions(-) diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index 77a70226b3..8e4958a930 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -137,7 +137,7 @@ abstract class Common implements Storage { } public function isSharable($path) { - if (\OC_Util::isSharingDisabledForUser()) { + if (\OCP\Util::isSharingDisabledForUser()) { return false; } diff --git a/lib/private/group/manager.php b/lib/private/group/manager.php index 73ff0e537c..40018370af 100644 --- a/lib/private/group/manager.php +++ b/lib/private/group/manager.php @@ -214,6 +214,9 @@ class Manager extends PublicEmitter implements IGroupManager { * @return \OC\Group\Group[] */ public function getUserGroups($user) { + if (is_null($user)) { + return false; + } return $this->getUserIdGroups($user->getUID()); } diff --git a/lib/private/share/share.php b/lib/private/share/share.php index 4503818a9e..d377708a26 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -1811,7 +1811,7 @@ class Share extends Constants { } } // Check if resharing is allowed, if not remove share permission - if (isset($row['permissions']) && (!self::isResharingAllowed() | \OC_Util::isSharingDisabledForUser())) { + if (isset($row['permissions']) && (!self::isResharingAllowed() | \OCP\Util::isSharingDisabledForUser())) { $row['permissions'] &= ~\OCP\Constants::PERMISSION_SHARE; } // Add display names to result diff --git a/lib/private/util.php b/lib/private/util.php index 4c151d6363..8e3a030251 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -54,6 +54,11 @@ * along with this program. If not, see * */ + +use OCP\IConfig; +use OCP\IGroupManager; +use OCP\IUser; + class OC_Util { public static $scripts = array(); public static $styles = array(); @@ -218,20 +223,21 @@ class OC_Util { /** * check if sharing is disabled for the current user - * - * @return boolean + * @param IConfig $config + * @param IGroupManager $groupManager + * @param IUser|null $user + * @return bool */ - public static function isSharingDisabledForUser() { - if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_exclude_groups', 'no') === 'yes') { - $user = \OCP\User::getUser(); - $groupsList = \OC::$server->getAppConfig()->getValue('core', 'shareapi_exclude_groups_list', ''); + public static function isSharingDisabledForUser(IConfig $config, IGroupManager $groupManager, $user) { + if ($config->getAppValue('core', 'shareapi_exclude_groups', 'no') === 'yes') { + $groupsList = $config->getAppValue('core', 'shareapi_exclude_groups_list', ''); $excludedGroups = json_decode($groupsList); if (is_null($excludedGroups)) { $excludedGroups = explode(',', $groupsList); $newValue = json_encode($excludedGroups); - \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', $newValue); + $config->setAppValue('core', 'shareapi_exclude_groups_list', $newValue); } - $usersGroups = \OC_Group::getUserGroups($user); + $usersGroups = $groupManager->getUserGroups($user); if (!empty($usersGroups)) { $remainingGroups = array_diff($usersGroups, $excludedGroups); // if the user is only in groups which are disabled for sharing then diff --git a/lib/public/util.php b/lib/public/util.php index 76b61347d4..07bc47c18b 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -173,7 +173,11 @@ class Util { * @since 7.0.0 */ public static function isSharingDisabledForUser() { - return \OC_Util::isSharingDisabledForUser(); + return \OC_Util::isSharingDisabledForUser( + \OC::$server->getConfig(), + \OC::$server->getGroupManager(), + \OC::$server->getUserSession()->getUser() + ); } /** diff --git a/tests/lib/util.php b/tests/lib/util.php index 9974e799d0..cb575976f3 100644 --- a/tests/lib/util.php +++ b/tests/lib/util.php @@ -289,38 +289,44 @@ class Test_Util extends \Test\TestCase { * @param bool $expected expected result */ function testIsSharingDisabledForUser($groups, $membership, $excludedGroups, $expected) { - $uid = "user1"; - \OC_User::setUserId($uid); + $config = $this->getMockBuilder('OCP\IConfig')->disableOriginalConstructor()->getMock(); + $groupManager = $this->getMockBuilder('OCP\IGroupManager')->disableOriginalConstructor()->getMock(); + $user = $this->getMockBuilder('OCP\IUser')->disableOriginalConstructor()->getMock(); - \OC_User::createUser($uid, "passwd"); + $config + ->expects($this->at(0)) + ->method('getAppValue') + ->with('core', 'shareapi_exclude_groups', 'no') + ->will($this->returnValue('yes')); + $config + ->expects($this->at(1)) + ->method('getAppValue') + ->with('core', 'shareapi_exclude_groups_list') + ->will($this->returnValue(json_encode($excludedGroups))); - foreach ($groups as $group) { - \OC_Group::createGroup($group); - } + $groupManager + ->expects($this->at(0)) + ->method('getUserGroups') + ->with($user) + ->will($this->returnValue($membership)); - foreach ($membership as $group) { - \OC_Group::addToGroup($uid, $group); - } +// $uid = "user1"; +// \OC_User::setUserId($uid); +// +// \OC_User::createUser($uid, "passwd"); +// +// foreach ($groups as $group) { +// \OC_Group::createGroup($group); +// } +// +// foreach ($membership as $group) { +// \OC_Group::addToGroup($uid, $group); +// } +// - $appConfig = \OC::$server->getAppConfig(); - $appConfig->setValue('core', 'shareapi_exclude_groups_list', json_encode($excludedGroups)); - $appConfig->setValue('core', 'shareapi_exclude_groups', 'yes'); - - $result = \OCP\Util::isSharingDisabledForUser(); + $result = \OC_Util::isSharingDisabledForUser($config, $groupManager, $user); $this->assertSame($expected, $result); - - // cleanup - \OC_User::deleteUser($uid); - \OC_User::setUserId(''); - - foreach ($groups as $group) { - \OC_Group::deleteGroup($group); - } - - $appConfig->setValue('core', 'shareapi_exclude_groups_list', ''); - $appConfig->setValue('core', 'shareapi_exclude_groups', 'no'); - } public function dataProviderForTestIsSharingDisabledForUser() {