diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-12 17:14:59 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-25 16:06:09 +0200 |
commit | 3ef8c95b3790e6e9be94f772b65e4aa19c042d50 (patch) | |
tree | a8ddb49ba1928af17238dfea3785caf9de61b97e /apps/user_ldap/tests/ConnectionTest.php | |
parent | b6163183276470039f3a2a2094d1a6224c272f28 (diff) | |
download | nextcloud-server-3ef8c95b3790e6e9be94f772b65e4aa19c042d50.tar.gz nextcloud-server-3ef8c95b3790e6e9be94f772b65e4aa19c042d50.zip |
Move tests/ to PSR-4
Diffstat (limited to 'apps/user_ldap/tests/ConnectionTest.php')
-rw-r--r-- | apps/user_ldap/tests/ConnectionTest.php | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/apps/user_ldap/tests/ConnectionTest.php b/apps/user_ldap/tests/ConnectionTest.php new file mode 100644 index 00000000000..ad0bed240cc --- /dev/null +++ b/apps/user_ldap/tests/ConnectionTest.php @@ -0,0 +1,139 @@ +<?php +/** + * @author Arthur Schiwon <blizzz@owncloud.com> + * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Thomas Müller <thomas.mueller@tmit.eu> + * + * @copyright Copyright (c) 2016, 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; +use OCA\User_LDAP\Connection; + +/** + * Class Test_Connection + * + * @group DB + * + * @package OCA\User_LDAP\Tests + */ +class ConnectionTest extends \Test\TestCase { + /** @var \OCA\User_LDAP\ILDAPWrapper */ + protected $ldap; + + /** @var Connection */ + protected $connection; + + public function setUp() { + parent::setUp(); + + $this->ldap = $this->getMock('\OCA\User_LDAP\ILDAPWrapper'); + // we use a mock here to replace the cache mechanism, due to missing DI in LDAP backend. + $this->connection = $this->getMockBuilder('OCA\User_LDAP\Connection') + ->setMethods(['getFromCache', 'writeToCache']) + ->setConstructorArgs([$this->ldap, '', null]) + ->getMock(); + + $this->ldap->expects($this->any()) + ->method('areLDAPFunctionsAvailable') + ->will($this->returnValue(true)); + } + + public function testOriginalAgentUnchangedOnClone() { + //background: upon login a bind is done with the user credentials + //which is valid for the whole LDAP resource. It needs to be reset + //to the agent's credentials + $lw = $this->getMock('\OCA\User_LDAP\ILDAPWrapper'); + + $connection = new Connection($lw, '', null); + $agent = array( + 'ldapAgentName' => 'agent', + 'ldapAgentPassword' => '123456', + ); + $connection->setConfiguration($agent); + + $testConnection = clone $connection; + $user = array( + 'ldapAgentName' => 'user', + 'ldapAgentPassword' => 'password', + ); + $testConnection->setConfiguration($user); + + $agentName = $connection->ldapAgentName; + $agentPawd = $connection->ldapAgentPassword; + + $this->assertSame($agentName, $agent['ldapAgentName']); + $this->assertSame($agentPawd, $agent['ldapAgentPassword']); + } + + public function testUseBackupServer() { + $mainHost = 'ldap://nixda.ldap'; + $backupHost = 'ldap://fallback.ldap'; + $config = [ + 'ldapConfigurationActive' => true, + 'ldapHost' => $mainHost, + 'ldapPort' => 389, + 'ldapBackupHost' => $backupHost, + 'ldapBackupPort' => 389, + 'ldapAgentName' => 'uid=agent', + 'ldapAgentPassword' => 'SuchASecret' + ]; + + $this->connection->setIgnoreValidation(true); + $this->connection->setConfiguration($config); + + $this->ldap->expects($this->any()) + ->method('isResource') + ->will($this->returnValue(true)); + + $this->ldap->expects($this->any()) + ->method('setOption') + ->will($this->returnValue(true)); + + $this->ldap->expects($this->exactly(3)) + ->method('connect') + ->will($this->returnValue('ldapResource')); + + // Not called often enough? Then, the fallback to the backup server is broken. + $this->connection->expects($this->exactly(4)) + ->method('getFromCache') + ->with('overrideMainServer') + ->will($this->onConsecutiveCalls(false, false, true, true)); + + $this->connection->expects($this->once()) + ->method('writeToCache') + ->with('overrideMainServer', true); + + $isThrown = false; + $this->ldap->expects($this->exactly(3)) + ->method('bind') + ->will($this->returnCallback(function () use (&$isThrown) { + if(!$isThrown) { + $isThrown = true; + throw new \OC\ServerNotAvailableException(); + } + return true; + })); + + $this->connection->init(); + $this->connection->resetConnectionResource(); + // with the second init() we test whether caching works + $this->connection->init(); + } + +} |