|
|
@@ -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 = [ |
|
|
@@ -131,54 +101,22 @@ class IntegrationTestAccessGroupsMatchFilter { |
|
|
|
return $status; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 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(); |