diff options
author | Morris Jobke <hey@morrisjobke.de> | 2015-07-21 01:05:22 +0300 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-07-21 01:05:22 +0300 |
commit | 3feccc9562a1d3bb7939577f576754540b5df54e (patch) | |
tree | 62d6b6f3716bded9cc1d67d2c39337a3e4e80a9b | |
parent | 6dfb2afa293a2bb21eb22da41ee78275ab96fee5 (diff) | |
parent | a1815cf2758b7085c038485862fefe62d7b3b12f (diff) |
Merge pull request #17765 from owncloud/backport-17723-stable7
Backport of #17723 to stable7
-rw-r--r-- | apps/user_ldap/lib/user/manager.php | 4 | ||||
-rw-r--r-- | apps/user_ldap/tests/user/manager.php | 316 |
2 files changed, 164 insertions, 156 deletions
diff --git a/apps/user_ldap/lib/user/manager.php b/apps/user_ldap/lib/user/manager.php index 4a979a8fd61..fb0f4e3063b 100644 --- a/apps/user_ldap/lib/user/manager.php +++ b/apps/user_ldap/lib/user/manager.php @@ -117,8 +117,8 @@ class Manager { $user = new User($uid, $dn, $this->access, $this->ocConfig, $this->ocFilesystem, clone $this->image, $this->ocLog, $this->avatarManager); - $users['byDN'][$dn] = $user; - $users['byUid'][$uid] = $user; + $this->users['byDN'][$dn] = $user; + $this->users['byUid'][$uid] = $user; return $user; } diff --git a/apps/user_ldap/tests/user/manager.php b/apps/user_ldap/tests/user/manager.php index 1d98ec4c0de..7979765ee95 100644 --- a/apps/user_ldap/tests/user/manager.php +++ b/apps/user_ldap/tests/user/manager.php @@ -1,24 +1,24 @@ <?php /** -* ownCloud -* -* @author Arthur Schiwon -* @copyright 2014 Arthur Schiwon blizzz@owncloud.com -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ + * ownCloud + * + * @author Arthur Schiwon + * @copyright 2014 Arthur Schiwon blizzz@owncloud.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ namespace OCA\user_ldap\tests; @@ -26,169 +26,177 @@ use OCA\user_ldap\lib\user\Manager; class Test_User_Manager extends \PHPUnit_Framework_TestCase { - private function getTestInstances() { - $access = $this->getMock('\OCA\user_ldap\lib\user\IUserTools'); - $config = $this->getMock('\OCP\IConfig'); - $filesys = $this->getMock('\OCA\user_ldap\lib\FilesystemHelper'); - $log = $this->getMock('\OCA\user_ldap\lib\LogWrapper'); - $avaMgr = $this->getMock('\OCP\IAvatarManager'); - $image = $this->getMock('\OCP\Image'); + private function getTestInstances() { + $access = $this->getMock('\OCA\user_ldap\lib\user\IUserTools'); + $config = $this->getMock('\OCP\IConfig'); + $filesys = $this->getMock('\OCA\user_ldap\lib\FilesystemHelper'); + $log = $this->getMock('\OCA\user_ldap\lib\LogWrapper'); + $avaMgr = $this->getMock('\OCP\IAvatarManager'); + $image = $this->getMock('\OCP\Image'); - return array($access, $config, $filesys, $image, $log, $avaMgr); - } + return array($access, $config, $filesys, $image, $log, $avaMgr); + } - public function testGetByDNExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr) = - $this->getTestInstances(); + public function testGetByDNExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr) = + $this->getTestInstances(); - $inputDN = 'cn=foo,dc=foobar,dc=bar'; - $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; + $inputDN = 'cn=foo,dc=foobar,dc=bar'; + $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; $access->expects($this->once()) - ->method('stringResemblesDN') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue(true)); + ->method('stringResemblesDN') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue(true)); - $access->expects($this->once()) - ->method('dn2username') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue($uid)); + $access->expects($this->once()) + ->method('dn2username') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue($uid)); + + $access->expects($this->never()) + ->method('username2dn'); + + $manager = new Manager($config, $filesys, $log, $avaMgr, $image); + $manager->setLdapAccess($access); + $user = $manager->get($inputDN); + + // Now we fetch the user again. If this leads to a failing test, + // runtime caching the manager is broken. + $user = $manager->get($inputDN); + + $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); + } + + public function testGetByEDirectoryDN() { + list($access, $config, $filesys, $image, $log, $avaMgr) = + $this->getTestInstances(); + + $inputDN = 'uid=foo,o=foobar,c=bar'; + $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; + + $access->expects($this->once()) + ->method('stringResemblesDN') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue(true)); + + $access->expects($this->once()) + ->method('dn2username') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue($uid)); + + $access->expects($this->never()) + ->method('username2dn'); - $access->expects($this->never()) - ->method('username2dn'); + $manager = new Manager($config, $filesys, $log, $avaMgr, $image); + $manager->setLdapAccess($access); + $user = $manager->get($inputDN); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image); - $manager->setLdapAccess($access); - $user = $manager->get($inputDN); + $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); + } - $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); - } + public function testGetByExoticDN() { + list($access, $config, $filesys, $image, $log, $avaMgr) = + $this->getTestInstances(); - public function testGetByEDirectoryDN() { - list($access, $config, $filesys, $image, $log, $avaMgr) = - $this->getTestInstances(); + $inputDN = 'ab=cde,f=ghei,mno=pq'; + $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; - $inputDN = 'uid=foo,o=foobar,c=bar'; - $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; + $access->expects($this->once()) + ->method('stringResemblesDN') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue(true)); $access->expects($this->once()) - ->method('stringResemblesDN') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue(true)); + ->method('dn2username') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue($uid)); - $access->expects($this->once()) - ->method('dn2username') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue($uid)); + $access->expects($this->never()) + ->method('username2dn'); - $access->expects($this->never()) - ->method('username2dn'); + $manager = new Manager($config, $filesys, $log, $avaMgr, $image); + $manager->setLdapAccess($access); + $user = $manager->get($inputDN); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image); - $manager->setLdapAccess($access); - $user = $manager->get($inputDN); + $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); + } - $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); - } + public function testGetByDNNotExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr) = + $this->getTestInstances(); - public function testGetByExoticDN() { - list($access, $config, $filesys, $image, $log, $avaMgr) = - $this->getTestInstances(); + $inputDN = 'cn=gone,dc=foobar,dc=bar'; - $inputDN = 'ab=cde,f=ghei,mno=pq'; - $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; + $access->expects($this->once()) + ->method('stringResemblesDN') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue(true)); $access->expects($this->once()) - ->method('stringResemblesDN') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue(true)); + ->method('dn2username') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue(false)); - $access->expects($this->once()) - ->method('dn2username') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue($uid)); + $access->expects($this->once()) + ->method('username2dn') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue(false)); - $access->expects($this->never()) - ->method('username2dn'); + $manager = new Manager($config, $filesys, $log, $avaMgr, $image); + $manager->setLdapAccess($access); + $user = $manager->get($inputDN); + } - $manager = new Manager($config, $filesys, $log, $avaMgr, $image); - $manager->setLdapAccess($access); - $user = $manager->get($inputDN); + public function testGetByUidExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr) = + $this->getTestInstances(); - $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); - } + $dn = 'cn=foo,dc=foobar,dc=bar'; + $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; - public function testGetByDNNotExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr) = - $this->getTestInstances(); + $access->expects($this->never()) + ->method('dn2username'); - $inputDN = 'cn=gone,dc=foobar,dc=bar'; + $access->expects($this->once()) + ->method('username2dn') + ->with($this->equalTo($uid)) + ->will($this->returnValue($dn)); $access->expects($this->once()) - ->method('stringResemblesDN') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue(true)); - - $access->expects($this->once()) - ->method('dn2username') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue(false)); - - $access->expects($this->once()) - ->method('username2dn') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue(false)); - - $manager = new Manager($config, $filesys, $log, $avaMgr, $image); - $manager->setLdapAccess($access); - $user = $manager->get($inputDN); - } - - public function testGetByUidExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr) = - $this->getTestInstances(); - - $dn = 'cn=foo,dc=foobar,dc=bar'; - $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; - - $access->expects($this->never()) - ->method('dn2username'); - - $access->expects($this->once()) - ->method('username2dn') - ->with($this->equalTo($uid)) - ->will($this->returnValue($dn)); - - $access->expects($this->once()) - ->method('stringResemblesDN') - ->with($this->equalTo($uid)) - ->will($this->returnValue(false)); - - $manager = new Manager($config, $filesys, $log, $avaMgr, $image); - $manager->setLdapAccess($access); - $user = $manager->get($uid); - - $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); - } - - public function testGetByUidNotExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr) = - $this->getTestInstances(); - - $dn = 'cn=foo,dc=foobar,dc=bar'; - $uid = 'gone'; - - $access->expects($this->never()) - ->method('dn2username'); - - $access->expects($this->exactly(1)) - ->method('username2dn') - ->with($this->equalTo($uid)) - ->will($this->returnValue(false)); - - $manager = new Manager($config, $filesys, $log, $avaMgr, $image); - $manager->setLdapAccess($access); - $user = $manager->get($uid); - } + ->method('stringResemblesDN') + ->with($this->equalTo($uid)) + ->will($this->returnValue(false)); + + $manager = new Manager($config, $filesys, $log, $avaMgr, $image); + $manager->setLdapAccess($access); + $user = $manager->get($uid); + + // Now we fetch the user again. If this leads to a failing test, + // runtime caching the manager is broken. + $user = $manager->get($uid); + + $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); + } + + public function testGetByUidNotExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr) = + $this->getTestInstances(); + + $dn = 'cn=foo,dc=foobar,dc=bar'; + $uid = 'gone'; + + $access->expects($this->never()) + ->method('dn2username'); + + $access->expects($this->exactly(1)) + ->method('username2dn') + ->with($this->equalTo($uid)) + ->will($this->returnValue(false)); + + $manager = new Manager($config, $filesys, $log, $avaMgr, $image); + $manager->setLdapAccess($access); + $user = $manager->get($uid); + } } |