diff options
author | Arthur Schiwon <blizzz@owncloud.com> | 2015-07-17 18:57:56 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@owncloud.com> | 2015-07-20 23:01:32 +0200 |
commit | d64a6115f00de8b450cb494762fa31c851dde280 (patch) | |
tree | ab3c3c7f9ea569a09911514536452e744b89ef21 | |
parent | 2b0de142ab773af1f0c72a851cb66a9011830fb4 (diff) | |
download | nextcloud-server-d64a6115f00de8b450cb494762fa31c851dde280.tar.gz nextcloud-server-d64a6115f00de8b450cb494762fa31c851dde280.zip |
Backport of #17723 to stable8
fix runtime caching in ldap's user manager, fixes #17631
fix indentation. no code changes, whitespace only.
-rw-r--r-- | apps/user_ldap/lib/user/manager.php | 4 | ||||
-rw-r--r-- | apps/user_ldap/tests/user/manager.php | 254 |
2 files changed, 133 insertions, 125 deletions
diff --git a/apps/user_ldap/lib/user/manager.php b/apps/user_ldap/lib/user/manager.php index 79b95818276..2cfa165bd50 100644 --- a/apps/user_ldap/lib/user/manager.php +++ b/apps/user_ldap/lib/user/manager.php @@ -110,8 +110,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 4ce504365b8..47904f21ec3 100644 --- a/apps/user_ldap/tests/user/manager.php +++ b/apps/user_ldap/tests/user/manager.php @@ -26,174 +26,182 @@ use OCA\user_ldap\lib\user\Manager; class Test_User_Manager extends \Test\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'); - $dbc = $this->getMock('\OCP\IDBConnection'); + 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'); + $dbc = $this->getMock('\OCP\IDBConnection'); - return array($access, $config, $filesys, $image, $log, $avaMgr, $dbc); - } + return array($access, $config, $filesys, $image, $log, $avaMgr, $dbc); + } - public function testGetByDNExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = - $this->getTestInstances(); + public function testGetByDNExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $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'); - $access->expects($this->never()) - ->method('username2dn'); + $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); + $manager->setLdapAccess($access); + $user = $manager->get($inputDN); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); - $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); - } + $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); + } - public function testGetByEDirectoryDN() { - list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = - $this->getTestInstances(); + public function testGetByEDirectoryDN() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $this->getTestInstances(); - $inputDN = 'uid=foo,o=foobar,c=bar'; - $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)); + ->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'); + $access->expects($this->never()) + ->method('username2dn'); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); - $manager->setLdapAccess($access); - $user = $manager->get($inputDN); + $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); + $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, $dbc) = - $this->getTestInstances(); + public function testGetByExoticDN() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $this->getTestInstances(); - $inputDN = 'ab=cde,f=ghei,mno=pq'; - $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; + $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)); + ->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'); + $access->expects($this->never()) + ->method('username2dn'); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); - $manager->setLdapAccess($access); - $user = $manager->get($inputDN); + $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); + $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, $dbc) = - $this->getTestInstances(); + public function testGetByDNNotExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $this->getTestInstances(); - $inputDN = 'cn=gone,dc=foobar,dc=bar'; + $inputDN = 'cn=gone,dc=foobar,dc=bar'; $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(false)); + $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)); + $access->expects($this->once()) + ->method('username2dn') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue(false)); + + $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); + $manager->setLdapAccess($access); + $user = $manager->get($inputDN); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); - $manager->setLdapAccess($access); - $user = $manager->get($inputDN); + $this->assertNull($user); + } - $this->assertNull($user); - } + public function testGetByUidExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $this->getTestInstances(); - public function testGetByUidExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = - $this->getTestInstances(); + $dn = 'cn=foo,dc=foobar,dc=bar'; + $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; - $dn = 'cn=foo,dc=foobar,dc=bar'; - $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; + $access->expects($this->never()) + ->method('dn2username'); - $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('username2dn') - ->with($this->equalTo($uid)) - ->will($this->returnValue($dn)); + $access->expects($this->once()) + ->method('stringResemblesDN') + ->with($this->equalTo($uid)) + ->will($this->returnValue(false)); - $access->expects($this->once()) - ->method('stringResemblesDN') - ->with($this->equalTo($uid)) - ->will($this->returnValue(false)); + $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); + $manager->setLdapAccess($access); + $user = $manager->get($uid); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); - $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); - } + $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); + } - public function testGetByUidNotExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = - $this->getTestInstances(); + public function testGetByUidNotExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $this->getTestInstances(); - $dn = 'cn=foo,dc=foobar,dc=bar'; - $uid = 'gone'; + $dn = 'cn=foo,dc=foobar,dc=bar'; + $uid = 'gone'; - $access->expects($this->never()) - ->method('dn2username'); + $access->expects($this->never()) + ->method('dn2username'); - $access->expects($this->exactly(1)) - ->method('username2dn') - ->with($this->equalTo($uid)) - ->will($this->returnValue(false)); + $access->expects($this->exactly(1)) + ->method('username2dn') + ->with($this->equalTo($uid)) + ->will($this->returnValue(false)); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); - $manager->setLdapAccess($access); - $user = $manager->get($uid); + $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); + $manager->setLdapAccess($access); + $user = $manager->get($uid); - $this->assertNull($user); - } + $this->assertNull($user); + } } |