From fa565750d1f94f9d3f7e2229e7ec7aadd0d06063 Mon Sep 17 00:00:00 2001 From: Vinicius Cubas Brand Date: Thu, 2 Nov 2017 20:19:03 -0200 Subject: [PATCH] User_LDAP plugins: smaller fixes Signed-off-by: Vinicius Cubas Brand --- .../composer/composer/autoload_classmap.php | 5 +++ .../composer/composer/autoload_static.php | 5 +++ apps/user_ldap/lib/GroupPluginManager.php | 28 ++++++------ apps/user_ldap/lib/Group_LDAP.php | 22 ++++----- apps/user_ldap/lib/Group_Proxy.php | 2 +- apps/user_ldap/lib/ILDAPGroupPlugin.php | 14 +++--- apps/user_ldap/lib/LDAPProvider.php | 2 + apps/user_ldap/lib/UserPluginManager.php | 10 +++-- apps/user_ldap/tests/GroupLDAPPluginTest.php | 24 +++++----- apps/user_ldap/tests/Group_LDAPTest.php | 24 +++++----- .../Integration/AbstractIntegrationTest.php | 7 +++ .../Lib/User/IntegrationTestUserCleanUp.php | 2 +- apps/user_ldap/tests/LDAPProviderTest.php | 45 +++++++++++++++++++ lib/public/LDAP/ILDAPProvider.php | 7 +++ 14 files changed, 134 insertions(+), 63 deletions(-) diff --git a/apps/user_ldap/composer/composer/autoload_classmap.php b/apps/user_ldap/composer/composer/autoload_classmap.php index 6558af0021..0962fe2c4e 100644 --- a/apps/user_ldap/composer/composer/autoload_classmap.php +++ b/apps/user_ldap/composer/composer/autoload_classmap.php @@ -24,9 +24,13 @@ return array( 'OCA\\User_LDAP\\Exceptions\\ConstraintViolationException' => $baseDir . '/../lib/Exceptions/ConstraintViolationException.php', 'OCA\\User_LDAP\\Exceptions\\NotOnLDAP' => $baseDir . '/../lib/Exceptions/NotOnLDAP.php', 'OCA\\User_LDAP\\FilesystemHelper' => $baseDir . '/../lib/FilesystemHelper.php', + 'OCA\\User_LDAP\\GroupPluginManager' => $baseDir . '/../lib/GroupPluginManager.php', 'OCA\\User_LDAP\\Group_LDAP' => $baseDir . '/../lib/Group_LDAP.php', 'OCA\\User_LDAP\\Group_Proxy' => $baseDir . '/../lib/Group_Proxy.php', 'OCA\\User_LDAP\\Helper' => $baseDir . '/../lib/Helper.php', + 'OCA\\User_LDAP\\IGroupLDAP' => $baseDir . '/../lib/IGroupLDAP.php', + 'OCA\\User_LDAP\\ILDAPGroupPlugin' => $baseDir . '/../lib/ILDAPGroupPlugin.php', + 'OCA\\User_LDAP\\ILDAPUserPlugin' => $baseDir . '/../lib/ILDAPUserPlugin.php', 'OCA\\User_LDAP\\ILDAPWrapper' => $baseDir . '/../lib/ILDAPWrapper.php', 'OCA\\User_LDAP\\IUserLDAP' => $baseDir . '/../lib/IUserLDAP.php', 'OCA\\User_LDAP\\Jobs\\CleanUp' => $baseDir . '/../lib/Jobs/CleanUp.php', @@ -47,6 +51,7 @@ return array( 'OCA\\User_LDAP\\Proxy' => $baseDir . '/../lib/Proxy.php', 'OCA\\User_LDAP\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php', 'OCA\\User_LDAP\\Settings\\Section' => $baseDir . '/../lib/Settings/Section.php', + 'OCA\\User_LDAP\\UserPluginManager' => $baseDir . '/../lib/UserPluginManager.php', 'OCA\\User_LDAP\\User\\DeletedUsersIndex' => $baseDir . '/../lib/User/DeletedUsersIndex.php', 'OCA\\User_LDAP\\User\\IUserTools' => $baseDir . '/../lib/User/IUserTools.php', 'OCA\\User_LDAP\\User\\Manager' => $baseDir . '/../lib/User/Manager.php', diff --git a/apps/user_ldap/composer/composer/autoload_static.php b/apps/user_ldap/composer/composer/autoload_static.php index f80900f790..ece7dd69d2 100644 --- a/apps/user_ldap/composer/composer/autoload_static.php +++ b/apps/user_ldap/composer/composer/autoload_static.php @@ -39,9 +39,13 @@ class ComposerStaticInitUser_LDAP 'OCA\\User_LDAP\\Exceptions\\ConstraintViolationException' => __DIR__ . '/..' . '/../lib/Exceptions/ConstraintViolationException.php', 'OCA\\User_LDAP\\Exceptions\\NotOnLDAP' => __DIR__ . '/..' . '/../lib/Exceptions/NotOnLDAP.php', 'OCA\\User_LDAP\\FilesystemHelper' => __DIR__ . '/..' . '/../lib/FilesystemHelper.php', + 'OCA\\User_LDAP\\GroupPluginManager' => __DIR__ . '/..' . '/../lib/GroupPluginManager.php', 'OCA\\User_LDAP\\Group_LDAP' => __DIR__ . '/..' . '/../lib/Group_LDAP.php', 'OCA\\User_LDAP\\Group_Proxy' => __DIR__ . '/..' . '/../lib/Group_Proxy.php', 'OCA\\User_LDAP\\Helper' => __DIR__ . '/..' . '/../lib/Helper.php', + 'OCA\\User_LDAP\\IGroupLDAP' => __DIR__ . '/..' . '/../lib/IGroupLDAP.php', + 'OCA\\User_LDAP\\ILDAPGroupPlugin' => __DIR__ . '/..' . '/../lib/ILDAPGroupPlugin.php', + 'OCA\\User_LDAP\\ILDAPUserPlugin' => __DIR__ . '/..' . '/../lib/ILDAPUserPlugin.php', 'OCA\\User_LDAP\\ILDAPWrapper' => __DIR__ . '/..' . '/../lib/ILDAPWrapper.php', 'OCA\\User_LDAP\\IUserLDAP' => __DIR__ . '/..' . '/../lib/IUserLDAP.php', 'OCA\\User_LDAP\\Jobs\\CleanUp' => __DIR__ . '/..' . '/../lib/Jobs/CleanUp.php', @@ -62,6 +66,7 @@ class ComposerStaticInitUser_LDAP 'OCA\\User_LDAP\\Proxy' => __DIR__ . '/..' . '/../lib/Proxy.php', 'OCA\\User_LDAP\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php', 'OCA\\User_LDAP\\Settings\\Section' => __DIR__ . '/..' . '/../lib/Settings/Section.php', + 'OCA\\User_LDAP\\UserPluginManager' => __DIR__ . '/..' . '/../lib/UserPluginManager.php', 'OCA\\User_LDAP\\User\\DeletedUsersIndex' => __DIR__ . '/..' . '/../lib/User/DeletedUsersIndex.php', 'OCA\\User_LDAP\\User\\IUserTools' => __DIR__ . '/..' . '/../lib/User/IUserTools.php', 'OCA\\User_LDAP\\User\\Manager' => __DIR__ . '/..' . '/../lib/User/Manager.php', diff --git a/apps/user_ldap/lib/GroupPluginManager.php b/apps/user_ldap/lib/GroupPluginManager.php index 6250ae6be0..50b50315b8 100644 --- a/apps/user_ldap/lib/GroupPluginManager.php +++ b/apps/user_ldap/lib/GroupPluginManager.php @@ -23,19 +23,19 @@ namespace OCA\User_LDAP; -use OC\Group\Backend; +use OCP\GroupInterface; class GroupPluginManager { private $respondToActions = 0; private $which = array( - Backend::CREATE_GROUP => null, - Backend::DELETE_GROUP => null, - Backend::ADD_TO_GROUP => null, - Backend::REMOVE_FROM_GROUP => null, - Backend::COUNT_USERS => null, - Backend::GROUP_DETAILS => null + GroupInterface::CREATE_GROUP => null, + GroupInterface::DELETE_GROUP => null, + GroupInterface::ADD_TO_GROUP => null, + GroupInterface::REMOVE_FROM_GROUP => null, + GroupInterface::COUNT_USERS => null, + GroupInterface::GROUP_DETAILS => null ); /** @@ -63,7 +63,7 @@ class GroupPluginManager { /** * Signal if there is a registered plugin that implements some given actions - * @param int $action Actions defined in \OC\Group\Backend, like Backend::REMOVE_FROM_GROUP + * @param int $actions Actions defined in \OCP\GroupInterface, like GroupInterface::REMOVE_FROM_GROUP * @return bool */ public function implementsActions($actions) { @@ -77,7 +77,7 @@ class GroupPluginManager { * @throws \Exception */ public function createGroup($gid) { - $plugin = $this->which[Backend::CREATE_GROUP]; + $plugin = $this->which[GroupInterface::CREATE_GROUP]; if ($plugin) { return $plugin->createGroup($gid); @@ -92,7 +92,7 @@ class GroupPluginManager { * @throws \Exception */ public function deleteGroup($gid) { - $plugin = $this->which[Backend::DELETE_GROUP]; + $plugin = $this->which[GroupInterface::DELETE_GROUP]; if ($plugin) { return $plugin->deleteGroup($gid); @@ -110,7 +110,7 @@ class GroupPluginManager { * Adds a user to a group. */ public function addToGroup($uid, $gid) { - $plugin = $this->which[Backend::ADD_TO_GROUP]; + $plugin = $this->which[GroupInterface::ADD_TO_GROUP]; if ($plugin) { return $plugin->addToGroup($uid, $gid); @@ -128,7 +128,7 @@ class GroupPluginManager { * removes the user from a group. */ public function removeFromGroup($uid, $gid) { - $plugin = $this->which[Backend::REMOVE_FROM_GROUP]; + $plugin = $this->which[GroupInterface::REMOVE_FROM_GROUP]; if ($plugin) { return $plugin->removeFromGroup($uid, $gid); @@ -144,7 +144,7 @@ class GroupPluginManager { * @throws \Exception */ public function countUsersInGroup($gid, $search = '') { - $plugin = $this->which[Backend::COUNT_USERS]; + $plugin = $this->which[GroupInterface::COUNT_USERS]; if ($plugin) { return $plugin->countUsersInGroup($gid,$search); @@ -159,7 +159,7 @@ class GroupPluginManager { * @throws \Exception */ public function getGroupDetails($gid) { - $plugin = $this->which[Backend::GROUP_DETAILS]; + $plugin = $this->which[GroupInterface::GROUP_DETAILS]; if ($plugin) { return $plugin->getGroupDetails($gid); diff --git a/apps/user_ldap/lib/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php index 39519cc462..09303276c2 100644 --- a/apps/user_ldap/lib/Group_LDAP.php +++ b/apps/user_ldap/lib/Group_LDAP.php @@ -39,7 +39,7 @@ namespace OCA\User_LDAP; use OC\Cache\CappedMemoryCache; -use OC\Group\Backend; +use OCP\GroupInterface; class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLDAP { protected $enabled = false; @@ -865,7 +865,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD * @return int|bool */ public function countUsersInGroup($gid, $search = '') { - if ($this->groupPluginManager->implementsActions(Backend::COUNT_USERS)) { + if ($this->groupPluginManager->implementsActions(GroupInterface::COUNT_USERS)) { return $this->groupPluginManager->countUsersInGroup($gid, $search); } @@ -1076,10 +1076,10 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD * @return boolean * * Returns the supported actions as int to be - * compared with \OC\Group\Backend::CREATE_GROUP etc. + * compared with GroupInterface::CREATE_GROUP etc. */ public function implementsActions($actions) { - return (bool)((\OC\Group\Backend::COUNT_USERS | + return (bool)((GroupInterface::COUNT_USERS | $this->groupPluginManager->getImplementedActions()) & $actions); } @@ -1098,7 +1098,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD * @throws \Exception */ public function createGroup($gid) { - if ($this->groupPluginManager->implementsActions(Backend::CREATE_GROUP)) { + if ($this->groupPluginManager->implementsActions(GroupInterface::CREATE_GROUP)) { if ($dn = $this->groupPluginManager->createGroup($gid)) { //updates group mapping $this->access->dn2ocname($dn, $gid, false); @@ -1116,7 +1116,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD * @throws \Exception */ public function deleteGroup($gid) { - if ($this->groupPluginManager->implementsActions(Backend::DELETE_GROUP)) { + if ($this->groupPluginManager->implementsActions(GroupInterface::DELETE_GROUP)) { if ($ret = $this->groupPluginManager->deleteGroup($gid)) { #delete group in nextcloud internal db $this->access->getGroupMapper()->unmap($gid); @@ -1135,9 +1135,9 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD * @throws \Exception */ public function addToGroup($uid, $gid) { - if ($this->groupPluginManager->implementsActions(Backend::ADD_TO_GROUP)) { + if ($this->groupPluginManager->implementsActions(GroupInterface::ADD_TO_GROUP)) { if ($ret = $this->groupPluginManager->addToGroup($uid, $gid)) { - #$this->access->connection->clearCache(); + $this->access->connection->clearCache(); } return $ret; } @@ -1152,9 +1152,9 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD * @throws \Exception */ public function removeFromGroup($uid, $gid) { - if ($this->groupPluginManager->implementsActions(Backend::REMOVE_FROM_GROUP)) { + if ($this->groupPluginManager->implementsActions(GroupInterface::REMOVE_FROM_GROUP)) { if ($ret = $this->groupPluginManager->removeFromGroup($uid, $gid)) { - #$this->access->connection->clearCache(); + $this->access->connection->clearCache(); } return $ret; } @@ -1168,7 +1168,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD * @throws \Exception */ public function getGroupDetails($gid) { - if ($this->groupPluginManager->implementsActions(Backend::GROUP_DETAILS)) { + if ($this->groupPluginManager->implementsActions(GroupInterface::GROUP_DETAILS)) { return $this->groupPluginManager->getGroupDetails($gid); } throw new \Exception('Could not get group details in LDAP backend.'); diff --git a/apps/user_ldap/lib/Group_Proxy.php b/apps/user_ldap/lib/Group_Proxy.php index 9902035faf..50c46dfbc0 100644 --- a/apps/user_ldap/lib/Group_Proxy.php +++ b/apps/user_ldap/lib/Group_Proxy.php @@ -245,7 +245,7 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface, IGroupLDAP { * @return boolean * * Returns the supported actions as int to be - * compared with \OC\Group\Backend::CREATE_GROUP etc. + * compared with \OCP\GroupInterface::CREATE_GROUP etc. */ public function implementsActions($actions) { //it's the same across all our user backends obviously diff --git a/apps/user_ldap/lib/ILDAPGroupPlugin.php b/apps/user_ldap/lib/ILDAPGroupPlugin.php index 468424a560..8afc4c8648 100644 --- a/apps/user_ldap/lib/ILDAPGroupPlugin.php +++ b/apps/user_ldap/lib/ILDAPGroupPlugin.php @@ -39,14 +39,14 @@ interface ILDAPGroupPlugin { * @param string $gid * @return string|null The group DN if group creation was successful. */ - public function createGroup($gid); + public function createGroup($gid); /** * delete a group * @param string $gid gid of the group to delete * @return bool */ - public function deleteGroup($gid); + public function deleteGroup($gid); /** * Add a user to a group @@ -56,7 +56,7 @@ interface ILDAPGroupPlugin { * * Adds a user to a group. */ - public function addToGroup($uid, $gid); + public function addToGroup($uid, $gid); /** * Removes a user from a group @@ -66,7 +66,7 @@ interface ILDAPGroupPlugin { * * removes the user from a group. */ - public function removeFromGroup($uid, $gid); + public function removeFromGroup($uid, $gid); /** * get the number of all users matching the search string in a group @@ -74,15 +74,13 @@ interface ILDAPGroupPlugin { * @param string $search * @return int|false */ - public function countUsersInGroup($gid, $search = ''); + public function countUsersInGroup($gid, $search = ''); /** * get an array with group details * @param string $gid * @return array|false */ - public function getGroupDetails($gid); - - + public function getGroupDetails($gid); } diff --git a/apps/user_ldap/lib/LDAPProvider.php b/apps/user_ldap/lib/LDAPProvider.php index 060c478ae3..c62372bdd1 100644 --- a/apps/user_ldap/lib/LDAPProvider.php +++ b/apps/user_ldap/lib/LDAPProvider.php @@ -46,6 +46,8 @@ class LDAPProvider implements ILDAPProvider, IDeletionFlagSupport { /** * Create new LDAPProvider * @param \OCP\IServerContainer $serverContainer + * @param Helper $helper + * @param DeletedUsersIndex $deletedUsersIndex * @throws \Exception if user_ldap app was not enabled */ public function __construct(IServerContainer $serverContainer, Helper $helper, DeletedUsersIndex $deletedUsersIndex) { diff --git a/apps/user_ldap/lib/UserPluginManager.php b/apps/user_ldap/lib/UserPluginManager.php index 374e545f4f..cee972f145 100644 --- a/apps/user_ldap/lib/UserPluginManager.php +++ b/apps/user_ldap/lib/UserPluginManager.php @@ -51,26 +51,28 @@ class UserPluginManager { /** * Registers a group plugin that may implement some actions, overriding User_LDAP's user actions. - * @param ILDAPGroupPlugin $plugin + * + * @param ILDAPUserPlugin $plugin */ public function register(ILDAPUserPlugin $plugin) { $respondToActions = $plugin->respondToActions(); $this->respondToActions |= $respondToActions; foreach($this->which as $action => $v) { - if ((bool)($respondToActions & $action)) { + if (is_int($action) && (bool)($respondToActions & $action)) { $this->which[$action] = $plugin; \OC::$server->getLogger()->debug("Registered action ".$action." to plugin ".get_class($plugin), ['app' => 'user_ldap']); } } if (method_exists($plugin,'deleteUser')) { $this->which['deleteUser'] = $plugin; + \OC::$server->getLogger()->debug("Registered action deleteUser to plugin ".get_class($plugin), ['app' => 'user_ldap']); } } /** * Signal if there is a registered plugin that implements some given actions - * @param int $action Actions defined in \OC\User\Backend, like Backend::CREATE_USER + * @param int $actions Actions defined in \OC\User\Backend, like Backend::CREATE_USER * @return bool */ public function implementsActions($actions) { @@ -80,7 +82,7 @@ class UserPluginManager { /** * Create a new user in LDAP Backend * - * @param string $uid The username of the user to create + * @param string $username The username of the user to create * @param string $password The password of the new user * @return bool * @throws \Exception diff --git a/apps/user_ldap/tests/GroupLDAPPluginTest.php b/apps/user_ldap/tests/GroupLDAPPluginTest.php index 5f89da9510..861806677e 100644 --- a/apps/user_ldap/tests/GroupLDAPPluginTest.php +++ b/apps/user_ldap/tests/GroupLDAPPluginTest.php @@ -23,7 +23,7 @@ namespace OCA\User_LDAP\Tests; -use OC\Group\Backend; +use OCP\GroupInterface; use OCA\User_LDAP\GroupPluginManager; class GroupLDAPPluginTest extends \Test\TestCase { @@ -44,7 +44,7 @@ class GroupLDAPPluginTest extends \Test\TestCase { $plugin->expects($this->any()) ->method('respondToActions') - ->willReturn(Backend::CREATE_GROUP); + ->willReturn(GroupInterface::CREATE_GROUP); $plugin2 = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy') ->setMethods(['respondToActions']) @@ -52,14 +52,14 @@ class GroupLDAPPluginTest extends \Test\TestCase { $plugin2->expects($this->any()) ->method('respondToActions') - ->willReturn(Backend::ADD_TO_GROUP); + ->willReturn(GroupInterface::ADD_TO_GROUP); $pluginManager->register($plugin); $pluginManager->register($plugin2); - $this->assertEquals($pluginManager->getImplementedActions(), Backend::CREATE_GROUP | Backend::ADD_TO_GROUP); - $this->assertTrue($pluginManager->implementsActions(Backend::CREATE_GROUP)); - $this->assertTrue($pluginManager->implementsActions(Backend::ADD_TO_GROUP)); + $this->assertEquals($pluginManager->getImplementedActions(), GroupInterface::CREATE_GROUP | GroupInterface::ADD_TO_GROUP); + $this->assertTrue($pluginManager->implementsActions(GroupInterface::CREATE_GROUP)); + $this->assertTrue($pluginManager->implementsActions(GroupInterface::ADD_TO_GROUP)); } public function testCreateGroup() { @@ -71,7 +71,7 @@ class GroupLDAPPluginTest extends \Test\TestCase { $plugin->expects($this->any()) ->method('respondToActions') - ->willReturn(Backend::CREATE_GROUP); + ->willReturn(GroupInterface::CREATE_GROUP); $plugin->expects($this->once()) ->method('createGroup') @@ -101,7 +101,7 @@ class GroupLDAPPluginTest extends \Test\TestCase { $plugin->expects($this->any()) ->method('respondToActions') - ->willReturn(Backend::DELETE_GROUP); + ->willReturn(GroupInterface::DELETE_GROUP); $plugin->expects($this->once()) ->method('deleteGroup') @@ -131,7 +131,7 @@ class GroupLDAPPluginTest extends \Test\TestCase { $plugin->expects($this->any()) ->method('respondToActions') - ->willReturn(Backend::ADD_TO_GROUP); + ->willReturn(GroupInterface::ADD_TO_GROUP); $plugin->expects($this->once()) ->method('addToGroup') @@ -162,7 +162,7 @@ class GroupLDAPPluginTest extends \Test\TestCase { $plugin->expects($this->any()) ->method('respondToActions') - ->willReturn(Backend::REMOVE_FROM_GROUP); + ->willReturn(GroupInterface::REMOVE_FROM_GROUP); $plugin->expects($this->once()) ->method('removeFromGroup') @@ -193,7 +193,7 @@ class GroupLDAPPluginTest extends \Test\TestCase { $plugin->expects($this->any()) ->method('respondToActions') - ->willReturn(Backend::COUNT_USERS); + ->willReturn(GroupInterface::COUNT_USERS); $plugin->expects($this->once()) ->method('countUsersInGroup') @@ -224,7 +224,7 @@ class GroupLDAPPluginTest extends \Test\TestCase { $plugin->expects($this->any()) ->method('respondToActions') - ->willReturn(Backend::GROUP_DETAILS); + ->willReturn(GroupInterface::GROUP_DETAILS); $plugin->expects($this->once()) ->method('getGroupDetails') diff --git a/apps/user_ldap/tests/Group_LDAPTest.php b/apps/user_ldap/tests/Group_LDAPTest.php index 82372895c2..8ca7556e09 100644 --- a/apps/user_ldap/tests/Group_LDAPTest.php +++ b/apps/user_ldap/tests/Group_LDAPTest.php @@ -29,7 +29,7 @@ namespace OCA\User_LDAP\Tests; -use OC\Group\Backend; +use OCP\GroupInterface; use OCA\User_LDAP\Group_LDAP as GroupLDAP; use OCA\User_LDAP\ILDAPWrapper; @@ -157,7 +157,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::COUNT_USERS) + ->with(GroupInterface::COUNT_USERS) ->willReturn(true); $pluginManager->expects($this->once()) @@ -727,7 +727,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::CREATE_GROUP) + ->with(GroupInterface::CREATE_GROUP) ->willReturn(true); $pluginManager->expects($this->once()) @@ -753,7 +753,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::CREATE_GROUP) + ->with(GroupInterface::CREATE_GROUP) ->willReturn(false); $ldap = new GroupLDAP( @@ -771,7 +771,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::DELETE_GROUP) + ->with(GroupInterface::DELETE_GROUP) ->willReturn(true); $pluginManager->expects($this->once()) @@ -808,7 +808,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::DELETE_GROUP) + ->with(GroupInterface::DELETE_GROUP) ->willReturn(false); $ldap = new GroupLDAP( @@ -826,7 +826,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::ADD_TO_GROUP) + ->with(GroupInterface::ADD_TO_GROUP) ->willReturn(true); $pluginManager->expects($this->once()) @@ -852,7 +852,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::ADD_TO_GROUP) + ->with(GroupInterface::ADD_TO_GROUP) ->willReturn(false); $ldap = new GroupLDAP( @@ -870,7 +870,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::REMOVE_FROM_GROUP) + ->with(GroupInterface::REMOVE_FROM_GROUP) ->willReturn(true); $pluginManager->expects($this->once()) @@ -896,7 +896,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::REMOVE_FROM_GROUP) + ->with(GroupInterface::REMOVE_FROM_GROUP) ->willReturn(false); $ldap = new GroupLDAP( @@ -914,7 +914,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::GROUP_DETAILS) + ->with(GroupInterface::GROUP_DETAILS) ->willReturn(true); $pluginManager->expects($this->once()) @@ -940,7 +940,7 @@ class Group_LDAPTest extends \Test\TestCase { $pluginManager->expects($this->once()) ->method('implementsActions') - ->with(Backend::GROUP_DETAILS) + ->with(GroupInterface::GROUP_DETAILS) ->willReturn(false); $ldap = new GroupLDAP( diff --git a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php index 84e1e6b458..8f9104999d 100644 --- a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php +++ b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php @@ -68,6 +68,13 @@ abstract class AbstractIntegrationTest { * the LDAP backend. */ public function init() { + \OC::$server->registerService('LDAPUserPluginManager', function() { + return new \OCA\User_LDAP\UserPluginManager(); + }); + \OC::$server->registerService('LDAPGroupPluginManager', function() { + return new \OCA\User_LDAP\GroupPluginManager(); + }); + $this->initLDAPWrapper(); $this->initConnection(); $this->initUserManager(); diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php index ce81b9a26d..10f0968efb 100644 --- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php +++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserCleanUp.php @@ -46,7 +46,7 @@ class IntegrationTestUserCleanUp extends AbstractIntegrationTest { $this->mapping->clear(); $this->access->setUserMapper($this->mapping); - $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession()); + $userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession(), \OC::$server->query('LDAPUserPluginManager')); \OC_User::useBackend($userBackend); } diff --git a/apps/user_ldap/tests/LDAPProviderTest.php b/apps/user_ldap/tests/LDAPProviderTest.php index d9492d8e77..42a1b0a3c2 100644 --- a/apps/user_ldap/tests/LDAPProviderTest.php +++ b/apps/user_ldap/tests/LDAPProviderTest.php @@ -431,6 +431,51 @@ class LDAPProviderTest extends \Test\TestCase { $ldapProvider->clearCache('existing_user'); $this->assertTrue(TRUE); } + + /** + * @expectedException \Exception + * @expectedExceptionMessage Group id not found in LDAP + */ + public function testClearGroupCacheGroupIDNotFound() { + $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP') + ->disableOriginalConstructor() + ->getMock(); + $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP') + ->setMethods(['groupExists']) + ->disableOriginalConstructor() + ->getMock(); + $groupBackend->expects($this->any())->method('groupExists')->willReturn(false); + + $server = $this->getServerMock($userBackend, $groupBackend); + + $ldapProvider = $this->getLDAPProvider($server); + $ldapProvider->clearGroupCache('nonexisting_group'); + } + + public function testClearGroupCache() { + $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP') + ->disableOriginalConstructor() + ->getMock(); + $groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP') + ->setMethods(['groupExists', 'getLDAPAccess', 'getConnection', 'clearCache']) + ->disableOriginalConstructor() + ->getMock(); + $groupBackend->expects($this->at(0)) + ->method('groupExists') + ->willReturn(true); + $groupBackend->expects($this->at(3)) + ->method('clearCache') + ->willReturn(true); + $groupBackend->expects($this->any()) + ->method($this->anything()) + ->willReturnSelf(); + + $server = $this->getServerMock($userBackend, $groupBackend); + + $ldapProvider = $this->getLDAPProvider($server); + $ldapProvider->clearGroupCache('existing_group'); + $this->assertTrue(TRUE); + } public function testDnExists() { $userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP') diff --git a/lib/public/LDAP/ILDAPProvider.php b/lib/public/LDAP/ILDAPProvider.php index 03ac54d01e..a65d3e85cd 100644 --- a/lib/public/LDAP/ILDAPProvider.php +++ b/lib/public/LDAP/ILDAPProvider.php @@ -123,6 +123,13 @@ interface ILDAPProvider { */ public function clearCache($uid); + /** + * Clear the cache if a cache is used, otherwise do nothing. + * @param string $gid group id + * @since 13.0.0 + */ + public function clearGroupCache($gid); + /** * Get the LDAP attribute name for the user's display name * @param string $uid user id