From 4f910221c4f538fba44c0cafd6ad6c342ccc7f28 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Fri, 17 Jul 2015 18:57:56 +0200 Subject: [PATCH 1/2] fix runtime caching in ldap's user manager, fixes #17631 --- apps/user_ldap/lib/user/manager.php | 4 ++-- apps/user_ldap/tests/user/manager.php | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/user_ldap/lib/user/manager.php b/apps/user_ldap/lib/user/manager.php index 2f5ee3adfb..b70e057741 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 e86db6b9f8..f7e4a1a5e8 100644 --- a/apps/user_ldap/tests/user/manager.php +++ b/apps/user_ldap/tests/user/manager.php @@ -64,6 +64,10 @@ class Test_User_Manager extends \Test\TestCase { $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); } @@ -173,6 +177,10 @@ class Test_User_Manager extends \Test\TestCase { $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); } From b961a29b0ccbbf8b3e84c666214e735bc5b3477d Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 20 Jul 2015 01:21:34 +0200 Subject: [PATCH 2/2] fix indentation. no code changes, whitespace only. --- apps/user_ldap/tests/user/manager.php | 278 +++++++++++++------------- 1 file changed, 139 insertions(+), 139 deletions(-) diff --git a/apps/user_ldap/tests/user/manager.php b/apps/user_ldap/tests/user/manager.php index f7e4a1a5e8..d659323fc7 100644 --- a/apps/user_ldap/tests/user/manager.php +++ b/apps/user_ldap/tests/user/manager.php @@ -28,182 +28,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)); - - $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, $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); - } - - 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'; + ->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, $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 testGetByExoticDN() { - list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = - $this->getTestInstances(); + public function testGetByEDirectoryDN() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $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('dn2username') - ->with($this->equalTo($inputDN)) - ->will($this->returnValue($uid)); - - $access->expects($this->never()) - ->method('username2dn'); - - $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); - } - - public function testGetByDNNotExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = - $this->getTestInstances(); - - $inputDN = 'cn=gone,dc=foobar,dc=bar'; + ->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(false)); + $access->expects($this->never()) + ->method('username2dn'); - $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->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); + } - $this->assertNull($user); - } + public function testGetByExoticDN() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $this->getTestInstances(); - public function testGetByUidExisting() { - list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = - $this->getTestInstances(); + $inputDN = 'ab=cde,f=ghei,mno=pq'; + $uid = '563418fc-423b-1033-8d1c-ad5f418ee02e'; - $dn = '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)); - $access->expects($this->never()) - ->method('dn2username'); + $access->expects($this->once()) + ->method('dn2username') + ->with($this->equalTo($inputDN)) + ->will($this->returnValue($uid)); - $access->expects($this->once()) - ->method('username2dn') - ->with($this->equalTo($uid)) - ->will($this->returnValue($dn)); + $access->expects($this->never()) + ->method('username2dn'); - $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($inputDN); - $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); - $manager->setLdapAccess($access); - $user = $manager->get($uid); + $this->assertInstanceOf('\OCA\user_ldap\lib\user\User', $user); + } + + public function testGetByDNNotExisting() { + list($access, $config, $filesys, $image, $log, $avaMgr, $dbc) = + $this->getTestInstances(); + + $inputDN = 'cn=gone,dc=foobar,dc=bar'; + + $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, $dbc); + $manager->setLdapAccess($access); + $user = $manager->get($inputDN); + + $this->assertNull($user); + } + + 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'; + + $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, $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); + } }