[Pkg-owncloud-commits] [owncloud] 121/129: add method to count users by loginname and use it for diagnose test, fixes #20151

David Prévot taffit at moszumanska.debian.org
Thu Nov 5 01:04:30 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch stable8
in repository owncloud.

commit 6fd073494405851d1344eab7d70fcf3b69294545
Author: Arthur Schiwon <blizzz at owncloud.com>
Date:   Fri Oct 30 18:20:50 2015 +0100

    add method to count users by loginname and use it for diagnose test, fixes #20151
---
 apps/user_ldap/lib/access.php                      | 14 ++++
 apps/user_ldap/lib/wizard.php                      |  4 +-
 apps/user_ldap/tests/integration/fakemanager.php   |  5 +-
 .../lib/integrationtestcountusersbyloginname.php   | 68 +++++++++++++++++++
 .../lib/integrationtestfetchusersbyloginname.php   | 79 ++++++++++++++++++++++
 5 files changed, 167 insertions(+), 3 deletions(-)

diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index 32472c1..6b13818 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 a819b2e..0c7fecf 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 afc9c55..f47668a 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 0000000..6e3908c
--- /dev/null
+++ b/apps/user_ldap/tests/integration/lib/integrationtestcountusersbyloginname.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * @author Arthur Schiwon <blizzz at 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 0000000..403c3a0
--- /dev/null
+++ b/apps/user_ldap/tests/integration/lib/integrationtestfetchusersbyloginname.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * @author Arthur Schiwon <blizzz at 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();

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list