From 45615cc940acce6ddab4c84b8f0fd38299125f37 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Fri, 17 Feb 2017 12:05:51 +0100 Subject: [PATCH] add integration test for uuid attr detection Signed-off-by: Arthur Schiwon --- apps/user_ldap/lib/Connection.php | 2 + .../Lib/IntegrationTestAttributeDetection.php | 86 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php index becd39205b..04f8c7401e 100644 --- a/apps/user_ldap/lib/Connection.php +++ b/apps/user_ldap/lib/Connection.php @@ -47,6 +47,8 @@ use OC\ServerNotAvailableException; * @property string[] ldapBaseUsers * @property int|string ldapPagingSize holds an integer * @property bool|mixed|void ldapGroupMemberAssocAttr + * @property string ldapUuidUserAttribute + * @property string ldapUuidGroupAttribute */ class Connection extends LDAPUtility { private $ldapConnectionRes = null; diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php new file mode 100644 index 0000000000..55b2eabedc --- /dev/null +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAttributeDetection.php @@ -0,0 +1,86 @@ + + * + * @author Arthur Schiwon + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program 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 program. If not, see . + * + */ + +namespace OCA\user_ldap\tests\Integration\Lib; + +use OCA\User_LDAP\Group_LDAP; +use OCA\User_LDAP\Mapping\GroupMapping; +use OCA\User_LDAP\Mapping\UserMapping; +use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; +use OCA\User_LDAP\User_LDAP; + +require_once __DIR__ . '/../Bootstrap.php'; + +class IntegrationTestAttributeDetection extends AbstractIntegrationTest { + public function init() { + require(__DIR__ . '/../setup-scripts/createExplicitUsers.php'); + require(__DIR__ . '/../setup-scripts/createExplicitGroups.php'); + + parent::init(); + + $this->connection->setConfiguration(['ldapGroupFilter' => 'objectClass=groupOfNames']); + $this->connection->setConfiguration(['ldapGroupMemberAssocAttr' => 'member']); + + $userMapper = new UserMapping(\OC::$server->getDatabaseConnection()); + $userMapper->clear(); + $this->access->setUserMapper($userMapper); + + $groupMapper = new GroupMapping(\OC::$server->getDatabaseConnection()); + $groupMapper->clear(); + $this->access->setGroupMapper($groupMapper); + + $userBackend = new User_LDAP($this->access, \OC::$server->getConfig()); + $userManager = \OC::$server->getUserManager(); + $userManager->clearBackends(); + $userManager->registerBackend($userBackend); + + $groupBackend = new Group_LDAP($this->access); + $groupManger = \OC::$server->getGroupManager(); + $groupManger->clearBackends(); + $groupManger->addBackend($groupBackend); + } + + protected function caseNativeUUIDAttributeUsers() { + // trigger importing of users which also triggers UUID attribute detection + \OC::$server->getUserManager()->search('', 5, 0); + return $this->connection->ldapUuidUserAttribute === 'entryuuid'; + } + + protected function caseNativeUUIDAttributeGroups() { + // essentially the same as 'caseNativeUUIDAttributeUsers', code paths + // are similar, but we take no chances. + + // trigger importing of users which also triggers UUID attribute detection + \OC::$server->getGroupManager()->search('', 5, 0); + return $this->connection->ldapUuidGroupAttribute === 'entryuuid'; + } +} + +/** @var string $host */ +/** @var int $port */ +/** @var string $adn */ +/** @var string $apwd */ +/** @var string $bdn */ +$test = new IntegrationTestAttributeDetection($host, $port, $adn, $apwd, $bdn); +$test->init(); +$test->run();