Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2015-11-03 10:45:29 +0300
committerMorris Jobke <hey@morrisjobke.de>2015-11-03 10:45:29 +0300
commit6073704aceb66c1e68a7c3869cac59d52d9a35d1 (patch)
tree0f98f1feedc1253d2b9962b82de6b47f889b72e2
parentbc1c247a13cae002dd214ef09eac25d8de043720 (diff)
parent6fd073494405851d1344eab7d70fcf3b69294545 (diff)
Merge pull request #20241 from owncloud/backport-20191-stable8.2
[backport] [stable8.2] add method to count users by loginname and use it for diagnose test, …
-rw-r--r--apps/user_ldap/lib/access.php14
-rw-r--r--apps/user_ldap/lib/wizard.php4
-rw-r--r--apps/user_ldap/tests/integration/fakemanager.php5
-rw-r--r--apps/user_ldap/tests/integration/lib/integrationtestcountusersbyloginname.php68
-rw-r--r--apps/user_ldap/tests/integration/lib/integrationtestfetchusersbyloginname.php79
5 files changed, 167 insertions, 3 deletions
diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index 32472c13b03..6b138188d99 100644
--- a/apps/user_ldap/lib/access.php
+++ b/apps/user_ldap/lib/access.php
@@ -672,6 +672,20 @@ class Access extends LDAPUtility implements user\IUserTools {
}
/**
+ * counts the number of users according to a provided loginName and
+ * utilizing the login filter.
+ *
+ * @param string $loginName
+ * @return array
+ */
+ public function countUsersByLoginName($loginName) {
+ $loginName = $this->escapeFilterPart($loginName);
+ $filter = str_replace('%uid', $loginName, $this->connection->ldapLoginFilter);
+ $users = $this->countUsers($filter);
+ return $users;
+ }
+
+ /**
* @param string $filter
* @param string|string[] $attr
* @param int $limit
diff --git a/apps/user_ldap/lib/wizard.php b/apps/user_ldap/lib/wizard.php
index a819b2e0e46..0c7fecfdb64 100644
--- a/apps/user_ldap/lib/wizard.php
+++ b/apps/user_ldap/lib/wizard.php
@@ -631,12 +631,12 @@ class Wizard extends LDAPUtility {
throw new \Exception('missing placeholder');
}
- $users = $this->access->fetchUsersByLoginName($loginName);
+ $users = $this->access->countUsersByLoginName($loginName);
if($this->ldap->errno($cr) !== 0) {
throw new \Exception($this->ldap->error($cr));
}
$filter = str_replace('%uid', $loginName, $this->access->connection->ldapLoginFilter);
- $this->result->addChange('ldap_test_loginname', count($users));
+ $this->result->addChange('ldap_test_loginname', $users);
$this->result->addChange('ldap_test_effective_filter', $filter);
return $this->result;
}
diff --git a/apps/user_ldap/tests/integration/fakemanager.php b/apps/user_ldap/tests/integration/fakemanager.php
index afc9c552a98..f47668aa15b 100644
--- a/apps/user_ldap/tests/integration/fakemanager.php
+++ b/apps/user_ldap/tests/integration/fakemanager.php
@@ -29,5 +29,8 @@ namespace OCA\user_ldap\tests\integration;
* scope of these tests, we replace it with a mock.
*/
class FakeManager extends \OCA\user_ldap\lib\user\Manager {
- public function __construct() {}
+ public function __construct() {
+ $this->ocConfig = \OC::$server->getConfig();
+ $this->image = new \OCP\Image();
+ }
}
diff --git a/apps/user_ldap/tests/integration/lib/integrationtestcountusersbyloginname.php b/apps/user_ldap/tests/integration/lib/integrationtestcountusersbyloginname.php
new file mode 100644
index 00000000000..6e3908c558b
--- /dev/null
+++ b/apps/user_ldap/tests/integration/lib/integrationtestcountusersbyloginname.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * @author Arthur Schiwon <blizzz@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\user_ldap\tests\integration\lib;
+
+use OCA\user_ldap\lib\user\Manager as LDAPUserManager;
+use OCA\user_ldap\tests\integration\AbstractIntegrationTest;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\user_ldap\USER_LDAP;
+
+require_once __DIR__ . '/../../../../../lib/base.php';
+
+class IntegrationTestUserHome extends AbstractIntegrationTest {
+
+ /**
+ * prepares the LDAP environment and sets up a test configuration for
+ * the LDAP backend.
+ */
+ public function init() {
+ require(__DIR__ . '/../setup-scripts/createExplicitUsers.php');
+ parent::init();
+ }
+
+ /**
+ * tests countUsersByLoginName where it is expected that the login name does
+ * not match any LDAP user
+ *
+ * @return bool
+ */
+ protected function case1() {
+ $result = $this->access->countUsersByLoginName('nothere');
+ return $result === 0;
+ }
+
+ /**
+ * tests countUsersByLoginName where it is expected that the login name does
+ * match one LDAP user
+ *
+ * @return bool
+ */
+ protected function case2() {
+ $result = $this->access->countUsersByLoginName('alice');
+ return $result === 1;
+ }
+}
+
+require_once(__DIR__ . '/../setup-scripts/config.php');
+$test = new IntegrationTestUserHome($host, $port, $adn, $apwd, $bdn);
+$test->init();
+$test->run();
diff --git a/apps/user_ldap/tests/integration/lib/integrationtestfetchusersbyloginname.php b/apps/user_ldap/tests/integration/lib/integrationtestfetchusersbyloginname.php
new file mode 100644
index 00000000000..403c3a0c73c
--- /dev/null
+++ b/apps/user_ldap/tests/integration/lib/integrationtestfetchusersbyloginname.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * @author Arthur Schiwon <blizzz@owncloud.com>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\user_ldap\tests\integration\lib;
+
+use OCA\user_ldap\lib\user\Manager as LDAPUserManager;
+use OCA\user_ldap\tests\integration\AbstractIntegrationTest;
+use OCA\User_LDAP\Mapping\UserMapping;
+use OCA\user_ldap\USER_LDAP;
+
+require_once __DIR__ . '/../../../../../lib/base.php';
+
+class IntegrationTestUserHome extends AbstractIntegrationTest {
+ /** @var UserMapping */
+ protected $mapping;
+
+ /** @var USER_LDAP */
+ protected $backend;
+
+ /**
+ * prepares the LDAP environment and sets up a test configuration for
+ * the LDAP backend.
+ */
+ public function init() {
+ require(__DIR__ . '/../setup-scripts/createExplicitUsers.php');
+ parent::init();
+
+ $this->mapping = new UserMapping(\OC::$server->getDatabaseConnection());
+ $this->mapping->clear();
+ $this->access->setUserMapper($this->mapping);
+ $this->backend = new \OCA\user_ldap\USER_LDAP($this->access, \OC::$server->getConfig());
+ }
+
+ /**
+ * tests fetchUserByLoginName where it is expected that the login name does
+ * not match any LDAP user
+ *
+ * @return bool
+ */
+ protected function case1() {
+ $result = $this->access->fetchUsersByLoginName('nothere');
+ return $result === [];
+ }
+
+ /**
+ * tests fetchUserByLoginName where it is expected that the login name does
+ * match one LDAP user
+ *
+ * @return bool
+ */
+ protected function case2() {
+ $result = $this->access->fetchUsersByLoginName('alice');
+ return count($result) === 1;
+ }
+
+}
+
+require_once(__DIR__ . '/../setup-scripts/config.php');
+$test = new IntegrationTestUserHome($host, $port, $adn, $apwd, $bdn);
+$test->init();
+$test->run();