summaryrefslogtreecommitdiffstats
path: root/apps/user_ldap
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_ldap')
-rw-r--r--apps/user_ldap/tests/integration/abstractintegrationtest.php123
-rw-r--r--apps/user_ldap/tests/integration/fakemanager.php33
-rw-r--r--apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php126
-rwxr-xr-xapps/user_ldap/tests/integration/run-test.sh2
4 files changed, 189 insertions, 95 deletions
diff --git a/apps/user_ldap/tests/integration/abstractintegrationtest.php b/apps/user_ldap/tests/integration/abstractintegrationtest.php
new file mode 100644
index 00000000000..f24106fcbfb
--- /dev/null
+++ b/apps/user_ldap/tests/integration/abstractintegrationtest.php
@@ -0,0 +1,123 @@
+<?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;
+
+use OCA\user_ldap\lib\Access;
+use OCA\user_ldap\lib\Connection;
+use OCA\user_ldap\lib\LDAP;
+
+abstract class AbstractIntegrationTest {
+ /** @var LDAP */
+ protected $ldap;
+
+ /** @var Connection */
+ protected $connection;
+
+ /** @var Access */
+ protected $access;
+
+ /** @var string */
+ protected $base;
+
+ /** @var string[] */
+ protected $server;
+
+ public function __construct($host, $port, $bind, $pwd, $base) {
+ $this->base = $base;
+ $this->server = [
+ 'host' => $host,
+ 'port' => $port,
+ 'dn' => $bind,
+ 'pwd' => $pwd
+ ];
+ }
+
+ /**
+ * prepares the LDAP environment and sets up a test configuration for
+ * the LDAP backend.
+ */
+ public function init() {
+ $this->initLDAPWrapper();
+ $this->initConnection();
+ $this->initAccess();
+ }
+
+ /**
+ * initializes the test LDAP wrapper
+ */
+ protected function initLDAPWrapper() {
+ $this->ldap = new LDAP();
+ }
+
+ /**
+ * sets up the LDAP configuration to be used for the test
+ */
+ protected function initConnection() {
+ $this->connection = new Connection($this->ldap, '', null);
+ $this->connection->setConfiguration([
+ 'ldapHost' => $this->server['host'],
+ 'ldapPort' => $this->server['port'],
+ 'ldapBase' => $this->base,
+ 'ldapAgentName' => $this->server['dn'],
+ 'ldapAgentPassword' => $this->server['pwd'],
+ 'ldapUserFilter' => 'objectclass=inetOrgPerson',
+ 'ldapUserDisplayName' => 'cn',
+ 'ldapGroupDisplayName' => 'cn',
+ 'ldapLoginFilter' => '(|(uid=%uid)(samaccountname=%uid))',
+ 'ldapCacheTTL' => 0,
+ 'ldapConfigurationActive' => 1,
+ ]);
+ }
+
+ /**
+ * initializes the Access test instance
+ */
+ protected function initAccess() {
+ $this->access = new Access($this->connection, $this->ldap, new FakeManager());
+ }
+
+ /**
+ * runs the test cases while outputting progress and result information
+ *
+ * If a test failed, the script is exited with return code 1.
+ */
+ public function run() {
+ $methods = get_class_methods($this);
+ $atLeastOneCaseRan = false;
+ foreach($methods as $method) {
+ if(strpos($method, 'case') === 0) {
+ print("running $method " . PHP_EOL);
+ if(!$this->$method()) {
+ print(PHP_EOL . '>>> !!! Test ' . $method . ' FAILED !!! <<<' . PHP_EOL . PHP_EOL);
+ exit(1);
+ }
+ $atLeastOneCaseRan = true;
+ }
+ }
+ if($atLeastOneCaseRan) {
+ print('Tests succeeded' . PHP_EOL);
+ } else {
+ print('No Test was available.' . PHP_EOL);
+ exit(1);
+ }
+ }
+}
diff --git a/apps/user_ldap/tests/integration/fakemanager.php b/apps/user_ldap/tests/integration/fakemanager.php
new file mode 100644
index 00000000000..afc9c552a98
--- /dev/null
+++ b/apps/user_ldap/tests/integration/fakemanager.php
@@ -0,0 +1,33 @@
+<?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;
+
+/**
+ * Class FakeManager
+ *
+ * this is a mock of \OCA\user_ldap\lib\user\Manager which is a dependency of
+ * Access, that pulls plenty more things in. Because it is not needed in the
+ * scope of these tests, we replace it with a mock.
+ */
+class FakeManager extends \OCA\user_ldap\lib\user\Manager {
+ public function __construct() {}
+}
diff --git a/apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php b/apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php
index 92035d94b4b..4be9ec829b8 100644
--- a/apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php
+++ b/apps/user_ldap/tests/integration/lib/IntegrationTestAccessGroupsMatchFilter.php
@@ -1,72 +1,42 @@
<?php
/**
- * Created by PhpStorm.
- * User: blizzz
- * Date: 26.06.15
- * Time: 18:13
+ * @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/>
+ *
*/
-use OCA\user_ldap\lib\LDAP;
-
-require_once __DIR__ . '/../../../../../lib/base.php';
-
-class IntegrationTestAccessGroupsMatchFilter {
- /** @var LDAP */
- protected $ldap;
+namespace OCA\user_ldap\tests\integration\lib;
- /** @var \OCA\user_ldap\lib\Connection */
- protected $connection;
+use OCA\user_ldap\lib\Connection;
+use OCA\user_ldap\tests\integration\AbstractIntegrationTest;
- /** @var \OCA\user_ldap\lib\Access */
- protected $access;
-
- /** @var string */
- protected $base;
-
- /** @var string[] */
- protected $server;
+require_once __DIR__ . '/../../../../../lib/base.php';
- public function __construct($host, $port, $bind, $pwd, $base) {
- $this->base = $base;
- $this->server = [
- 'host' => $host,
- 'port' => $port,
- 'dn' => $bind,
- 'pwd' => $pwd
- ];
- }
+class IntegrationTestAccessGroupsMatchFilter extends AbstractIntegrationTest {
/**
- * prepares the LDAP environement and sets up a test configuration for
+ * prepares the LDAP environment and sets up a test configuration for
* the LDAP backend.
*/
public function init() {
- require('setup-scripts/createExplicitUsers.php');
- require('setup-scripts/createExplicitGroups.php');
- require('setup-scripts/createExplicitGroupsDifferentOU.php');
-
- $this->initLDAPWrapper();
- $this->initConnection();
- $this->initAccess();
- }
-
- /**
- * runs the test cases while outputting progress and result information
- *
- * If a test failed, the script is exited with return code 1.
- */
- public function run() {
- $cases = ['case1', 'case2', 'case3'];
-
- foreach ($cases as $case) {
- print("running $case " . PHP_EOL);
- if (!$this->$case()) {
- print(PHP_EOL . '>>> !!! Test ' . $case . ' FAILED !!! <<<' . PHP_EOL . PHP_EOL);
- exit(1);
- }
- }
-
- print('Tests succeeded' . PHP_EOL);
+ require(__DIR__ . '/../setup-scripts/createExplicitUsers.php');
+ require(__DIR__ . '/../setup-scripts/createExplicitGroups.php');
+ require(__DIR__ . '/../setup-scripts/createExplicitGroupsDifferentOU.php');
+ parent::init();
}
/**
@@ -75,7 +45,7 @@ class IntegrationTestAccessGroupsMatchFilter {
*
* @return bool
*/
- private function case1() {
+ protected function case1() {
$this->connection->setConfiguration(['ldapGroupFilter' => 'cn=RedGroup']);
$dns = ['cn=RedGroup,ou=Groups,' . $this->base];
@@ -89,7 +59,7 @@ class IntegrationTestAccessGroupsMatchFilter {
*
* @return bool
*/
- private function case2() {
+ protected function case2() {
$this->connection->setConfiguration(['ldapGroupFilter' => '(|(cn=RedGroup)(cn=PurpleGroup))']);
$dns = [
@@ -132,53 +102,21 @@ class IntegrationTestAccessGroupsMatchFilter {
}
/**
- * initializes the Access test instance
- */
- private function initAccess() {
- $this->access = new \OCA\user_ldap\lib\Access($this->connection, $this->ldap, new FakeManager());
- }
-
- /**
- * initializes the test LDAP wrapper
- */
- private function initLDAPWrapper() {
- $this->ldap = new LDAP();
- }
-
- /**
* sets up the LDAP configuration to be used for the test
*/
- private function initConnection() {
- $this->connection = new \OCA\user_ldap\lib\Connection($this->ldap, '', null);
+ protected function initConnection() {
+ parent::initConnection();
$this->connection->setConfiguration([
- 'ldapHost' => $this->server['host'],
- 'ldapPort' => $this->server['port'],
- 'ldapBase' => $this->base,
'ldapBaseGroups' => 'ou=Groups,' . $this->base,
- 'ldapAgentName' => $this->server['dn'],
- 'ldapAgentPassword' => $this->server['pwd'],
'ldapUserFilter' => 'objectclass=inetOrgPerson',
'ldapUserDisplayName' => 'displayName',
'ldapGroupDisplayName' => 'cn',
'ldapLoginFilter' => 'uid=%uid',
- 'ldapCacheTTL' => 0,
- 'ldapConfigurationActive' => 1,
]);
}
}
-/**
- * Class FakeManager
- *
- * this is a mock of \OCA\user_ldap\lib\user\Manager which is a dependency of
- * Access, that pulls plenty more things in. Because it is not needed in the
- * scope of these tests, we replace it with a mock.
- */
-class FakeManager extends \OCA\user_ldap\lib\user\Manager {
- public function __construct() {}
-}
-
-require_once('setup-scripts/config.php');
+require_once(__DIR__ . '/../setup-scripts/config.php');
$test = new IntegrationTestAccessGroupsMatchFilter($host, $port, $adn, $apwd, $bdn);
$test->init();
$test->run();
diff --git a/apps/user_ldap/tests/integration/run-test.sh b/apps/user_ldap/tests/integration/run-test.sh
index e07e9b43408..7a29db25670 100755
--- a/apps/user_ldap/tests/integration/run-test.sh
+++ b/apps/user_ldap/tests/integration/run-test.sh
@@ -13,5 +13,5 @@ fi
# sleep is necessary, otherwise the LDAP server cannot be connected to, yet.
-setup-scripts/start.sh && sleep 2 && php -f "$TESTSCRIPT"
+setup-scripts/start.sh && sleep 5 && php -f "$TESTSCRIPT"
setup-scripts/stop.sh