From 488405d1ec41faefaa3cbbc60a0c1b23745b6a31 Mon Sep 17 00:00:00 2001 From: Jörn Friedrich Dreyer Date: Tue, 31 Mar 2015 13:42:23 +0200 Subject: do not hide exception when ldap server has a hiccup --- apps/user_ldap/lib/connection.php | 3 ++- apps/user_ldap/lib/user/manager.php | 8 ++------ apps/user_ldap/user_ldap.php | 16 ++++++---------- 3 files changed, 10 insertions(+), 17 deletions(-) (limited to 'apps') diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index 1577d9facb8..3869f5da9c9 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -167,7 +167,8 @@ class Connection extends LDAPUtility { $this->establishConnection(); } if(is_null($this->ldapConnectionRes)) { - \OCP\Util::writeLog('user_ldap', 'Connection could not be established', \OCP\Util::ERROR); + \OCP\Util::writeLog('user_ldap', 'No LDAP Connection to server ' . $this->connection->ldapHost, \OCP\Util::ERROR); + throw new \Exception('Connection to LDAP server could not be established'); } return $this->ldapConnectionRes; } diff --git a/apps/user_ldap/lib/user/manager.php b/apps/user_ldap/lib/user/manager.php index c0bc8ea6230..b99c9715e58 100644 --- a/apps/user_ldap/lib/user/manager.php +++ b/apps/user_ldap/lib/user/manager.php @@ -165,6 +165,7 @@ class Manager { * @brief returns a User object by it's DN or ownCloud username * @param string the DN or username of the user * @return \OCA\user_ldap\lib\user\User|\OCA\user_ldap\lib\user\OfflineUser|null + * @throws \Exception when connection could not be established */ public function get($id) { $this->checkAccess(); @@ -181,12 +182,7 @@ class Manager { } } - try { - $user = $this->createInstancyByUserName($id); - return $user; - } catch (\Exception $e) { - return null; - } + return $this->createInstancyByUserName($id); } } diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 54e14c093f3..cd8a2dd251c 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -190,6 +190,7 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn * check if a user exists * @param string $uid the username * @return boolean + * @throws \Exception when connection could not be established */ public function userExists($uid) { if($this->access->connection->isCached('userExists'.$uid)) { @@ -208,17 +209,12 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn return true; } - try { - $result = $this->userExistsOnLDAP($user); - $this->access->connection->writeToCache('userExists'.$uid, $result); - if($result === true) { - $user->update(); - } - return $result; - } catch (\Exception $e) { - \OCP\Util::writeLog('user_ldap', $e->getMessage(), \OCP\Util::WARN); - return false; + $result = $this->userExistsOnLDAP($user); + $this->access->connection->writeToCache('userExists'.$uid, $result); + if($result === true) { + $user->update(); } + return $result; } /** -- cgit v1.2.3 From 077ab272818036129affc288a2bd51b2c2105fc0 Mon Sep 17 00:00:00 2001 From: Jörn Friedrich Dreyer Date: Tue, 31 Mar 2015 15:33:44 +0200 Subject: fix_tests Conflicts: apps/user_ldap/tests/user_ldap.php --- apps/user_ldap/lib/user/manager.php | 9 +- apps/user_ldap/tests/user/manager.php | 4 - apps/user_ldap/tests/user_ldap.php | 237 ++++++++++++++++++++++++++++------ 3 files changed, 201 insertions(+), 49 deletions(-) (limited to 'apps') diff --git a/apps/user_ldap/lib/user/manager.php b/apps/user_ldap/lib/user/manager.php index b99c9715e58..b5d402f1fac 100644 --- a/apps/user_ldap/lib/user/manager.php +++ b/apps/user_ldap/lib/user/manager.php @@ -149,6 +149,11 @@ class Manager { $this->access->getUserMapper()); } + /** + * @brief returns a User object by it's ownCloud username + * @param string the DN or username of the user + * @return \OCA\user_ldap\lib\user\User|\OCA\user_ldap\lib\user\OfflineUser|null + */ protected function createInstancyByUserName($id) { //most likely a uid. Check whether it is a deleted user if($this->isDeletedUser($id)) { @@ -158,12 +163,12 @@ class Manager { if($dn !== false) { return $this->createAndCache($dn, $id); } - throw new \Exception('Could not create User instance'); + return null; } /** * @brief returns a User object by it's DN or ownCloud username - * @param string the DN or username of the user + * @param string the username of the user * @return \OCA\user_ldap\lib\user\User|\OCA\user_ldap\lib\user\OfflineUser|null * @throws \Exception when connection could not be established */ diff --git a/apps/user_ldap/tests/user/manager.php b/apps/user_ldap/tests/user/manager.php index e86db6b9f81..e1e98b57f80 100644 --- a/apps/user_ldap/tests/user/manager.php +++ b/apps/user_ldap/tests/user/manager.php @@ -145,8 +145,6 @@ class Test_User_Manager extends \Test\TestCase { $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); $manager->setLdapAccess($access); $user = $manager->get($inputDN); - - $this->assertNull($user); } public function testGetByUidExisting() { @@ -194,8 +192,6 @@ class Test_User_Manager extends \Test\TestCase { $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); $manager->setLdapAccess($access); $user = $manager->get($uid); - - $this->assertNull($user); } } diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php index b9beed1d35a..9b4da00a3a7 100644 --- a/apps/user_ldap/tests/user_ldap.php +++ b/apps/user_ldap/tests/user_ldap.php @@ -417,21 +417,53 @@ class Test_User_Ldap_Direct extends \Test\TestCase { $this->prepareMockForUserExists($access); $access->expects($this->any()) - ->method('readAttribute') - ->will($this->returnCallback(function($dn) { - if($dn === 'dnOfRoland,dc=test') { - return array(); - } - return false; - })); + ->method('readAttribute') + ->will($this->returnCallback(function($dn) { + if($dn === 'dnOfRoland,dc=test') { + return array(); + } + return false; + })); //test for existing user $result = $backend->userExists('gunslinger'); $this->assertTrue($result); + } + + /** + * @expectedException \Exception + */ + public function testUserExistsForDeleted() { + $access = $this->getAccessMock(); + $backend = new UserLDAP($access); + $this->prepareMockForUserExists($access); + + $access->expects($this->any()) + ->method('readAttribute') + ->will($this->returnCallback(function($dn) { + if($dn === 'dnOfRoland,dc=test') { + return array(); + } + return false; + })); //test for deleted user $result = $backend->userExists('formerUser'); - $this->assertFalse($result); + } + + public function testUserExistsForNeverExisting() { + $access = $this->getAccessMock(); + $backend = new UserLDAP($access); + $this->prepareMockForUserExists($access); + + $access->expects($this->any()) + ->method('readAttribute') + ->will($this->returnCallback(function($dn) { + if($dn === 'dnOfRoland,dc=test') { + return array(); + } + return false; + })); //test for never-existing user $result = $backend->userExists('mallory'); @@ -445,21 +477,55 @@ class Test_User_Ldap_Direct extends \Test\TestCase { \OC_User::useBackend($backend); $access->expects($this->any()) - ->method('readAttribute') - ->will($this->returnCallback(function($dn) { - if($dn === 'dnOfRoland,dc=test') { - return array(); - } - return false; - })); + ->method('readAttribute') + ->will($this->returnCallback(function($dn) { + if($dn === 'dnOfRoland,dc=test') { + return array(); + } + return false; + })); //test for existing user $result = \OCP\User::userExists('gunslinger'); $this->assertTrue($result); + } + + /** + * @expectedException \Exception + */ + public function testUserExistsPublicAPIForDeleted() { + $access = $this->getAccessMock(); + $backend = new UserLDAP($access); + $this->prepareMockForUserExists($access); + \OC_User::useBackend($backend); + + $access->expects($this->any()) + ->method('readAttribute') + ->will($this->returnCallback(function($dn) { + if($dn === 'dnOfRoland,dc=test') { + return array(); + } + return false; + })); //test for deleted user $result = \OCP\User::userExists('formerUser'); - $this->assertFalse($result); + } + + public function testUserExistsPublicAPIForNeverExisting() { + $access = $this->getAccessMock(); + $backend = new UserLDAP($access); + $this->prepareMockForUserExists($access); + \OC_User::useBackend($backend); + + $access->expects($this->any()) + ->method('readAttribute') + ->will($this->returnCallback(function($dn) { + if($dn === 'dnOfRoland,dc=test') { + return array(); + } + return false; + })); //test for never-existing user $result = \OCP\User::userExists('mallory'); @@ -475,41 +541,35 @@ class Test_User_Ldap_Direct extends \Test\TestCase { $this->assertFalse($result); } - public function testGetHome() { + public function testGetHomeAbsolutePath() { $access = $this->getAccessMock(); $config = $this->getMock('\OCP\IConfig'); $backend = new UserLDAP($access, $config); $this->prepareMockForUserExists($access); $access->connection->expects($this->any()) - ->method('__get') - ->will($this->returnCallback(function($name) { - if($name === 'homeFolderNamingRule') { - return 'attr:testAttribute'; - } - return null; - })); + ->method('__get') + ->will($this->returnCallback(function($name) { + if($name === 'homeFolderNamingRule') { + return 'attr:testAttribute'; + } + return null; + })); $access->expects($this->any()) - ->method('readAttribute') - ->will($this->returnCallback(function($dn, $attr) { - switch ($dn) { - case 'dnOfRoland,dc=test': - if($attr === 'testAttribute') { - return array('/tmp/rolandshome/'); - } - return array(); - break; - case 'dnOfLadyOfShadows,dc=test': - if($attr === 'testAttribute') { - return array('susannah/'); - } - return array(); - break; - default: - return false; - } - })); + ->method('readAttribute') + ->will($this->returnCallback(function($dn, $attr) { + switch ($dn) { + case 'dnOfRoland,dc=test': + if($attr === 'testAttribute') { + return array('/tmp/rolandshome/'); + } + return array(); + break; + default: + return false; + } + })); $datadir = '/my/data/dir'; $config->expects($this->once()) @@ -519,10 +579,68 @@ class Test_User_Ldap_Direct extends \Test\TestCase { //absolut path $result = $backend->getHome('gunslinger'); $this->assertEquals('/tmp/rolandshome/', $result); + } + + public function testGetHomeDatadirRelative() { + $access = $this->getAccessMock(); + $backend = new UserLDAP($access); + $this->prepareMockForUserExists($access); + + $access->connection->expects($this->any()) + ->method('__get') + ->will($this->returnCallback(function($name) { + if($name === 'homeFolderNamingRule') { + return 'attr:testAttribute'; + } + return null; + })); + $access->expects($this->any()) + ->method('readAttribute') + ->will($this->returnCallback(function($dn, $attr) { + switch ($dn) { + case 'dnOfLadyOfShadows,dc=test': + if($attr === 'testAttribute') { + return array('susannah/'); + } + return array(); + break; + default: + return false; + } + })); //datadir-relativ path $result = $backend->getHome('ladyofshadows'); + $datadir = \OCP\Config::getSystemValue('datadirectory', + \OC::$SERVERROOT.'/data'); $this->assertEquals($datadir.'/susannah/', $result); + } + + /** + * @expectedException \Exception + */ + public function testGetHomeNoPath() { + $access = $this->getAccessMock(); + $backend = new UserLDAP($access); + $this->prepareMockForUserExists($access); + + $access->connection->expects($this->any()) + ->method('__get') + ->will($this->returnCallback(function($name) { + if($name === 'homeFolderNamingRule') { + return 'attr:testAttribute'; + } + return null; + })); + + $access->expects($this->any()) + ->method('readAttribute') + ->will($this->returnCallback(function($dn, $attr) { + switch ($dn) { + default: + return false; + } + })); //no path at all – triggers OC default behaviour $result = $backend->getHome('newyorker'); @@ -562,6 +680,12 @@ class Test_User_Ldap_Direct extends \Test\TestCase { $backend = new UserLDAP($access, $this->getMock('\OCP\IConfig')); $this->prepareMockForUserExists($access); + $access->connection->expects($this->any()) + ->method('getConnectionResource') + ->will($this->returnCallback(function() { + return true; + })); + //with displayName $result = $backend->getDisplayName('gunslinger'); $this->assertEquals('Roland Deschain', $result); @@ -573,9 +697,36 @@ class Test_User_Ldap_Direct extends \Test\TestCase { public function testGetDisplayNamePublicAPI() { $access = $this->getAccessMock(); + $access->expects($this->any()) + ->method('username2dn') + ->will($this->returnCallback(function($uid) { + switch ($uid) { + case 'gunslinger': + return 'dnOfRoland,dc=test'; + break; + case 'formerUser': + return 'dnOfFormerUser,dc=test'; + break; + case 'newyorker': + return 'dnOfNewYorker,dc=test'; + break; + case 'ladyofshadows': + return 'dnOfLadyOfShadows,dc=test'; + break; + default: + return false; + } + })); $this->prepareAccessForGetDisplayName($access); $backend = new UserLDAP($access, $this->getMock('\OCP\IConfig')); $this->prepareMockForUserExists($access); + + $access->connection->expects($this->any()) + ->method('getConnectionResource') + ->will($this->returnCallback(function() { + return true; + })); + \OC_User::useBackend($backend); //with displayName -- cgit v1.2.3 From 5626a02d69e26bda25bc14f9e5405dce7f928d17 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Wed, 1 Apr 2015 17:12:28 +0200 Subject: throw exception if setup is incomplete --- apps/user_ldap/lib/connection.php | 4 +++- lib/private/hook.php | 3 +++ lib/private/servernotavailableexception.php | 27 +++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 lib/private/servernotavailableexception.php (limited to 'apps') diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index 3869f5da9c9..1e18a8d4aa7 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -31,6 +31,8 @@ namespace OCA\user_ldap\lib; //magic properties (incomplete) +use OC\ServerNotAvailableException; + /** * responsible for LDAP connections in context with the provided configuration * @@ -168,7 +170,7 @@ class Connection extends LDAPUtility { } if(is_null($this->ldapConnectionRes)) { \OCP\Util::writeLog('user_ldap', 'No LDAP Connection to server ' . $this->connection->ldapHost, \OCP\Util::ERROR); - throw new \Exception('Connection to LDAP server could not be established'); + throw new ServerNotAvailableException('Connection to LDAP server could not be established'); } return $this->ldapConnectionRes; } diff --git a/lib/private/hook.php b/lib/private/hook.php index c4ea1999b09..1e7a084bc31 100644 --- a/lib/private/hook.php +++ b/lib/private/hook.php @@ -114,6 +114,9 @@ class OC_Hook{ OC_Log::write('hook', 'error while running hook (' . $class . '::' . $i["name"] . '): ' . $message, OC_Log::ERROR); + if($e instanceof \OC\ServerNotAvailableException && $signalclass === 'OC_Filesystem' && $signalname === 'setup') { + throw $e; + } } } diff --git a/lib/private/servernotavailableexception.php b/lib/private/servernotavailableexception.php new file mode 100644 index 00000000000..5a57917d23a --- /dev/null +++ b/lib/private/servernotavailableexception.php @@ -0,0 +1,27 @@ + + * + * @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 + * + */ + +namespace OC; + + +class ServerNotAvailableException extends \Exception { + +} -- cgit v1.2.3 From 1427ea78d40bbfdc54d7ce603a96232b11f5a405 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Thu, 2 Apr 2015 15:05:37 +0200 Subject: fix typo and comment --- apps/user_ldap/lib/connection.php | 4 ++-- apps/user_ldap/lib/user/manager.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'apps') diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index 1e18a8d4aa7..fa6258445d8 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -56,7 +56,7 @@ class Connection extends LDAPUtility { //cache handler protected $cache; - //settings handler + /** @var Configuration settings handler **/ protected $configuration; protected $doNotValidate = false; @@ -169,7 +169,7 @@ class Connection extends LDAPUtility { $this->establishConnection(); } if(is_null($this->ldapConnectionRes)) { - \OCP\Util::writeLog('user_ldap', 'No LDAP Connection to server ' . $this->connection->ldapHost, \OCP\Util::ERROR); + \OCP\Util::writeLog('user_ldap', 'No LDAP Connection to server ' . $this->configuration->ldapHost, \OCP\Util::ERROR); throw new ServerNotAvailableException('Connection to LDAP server could not be established'); } return $this->ldapConnectionRes; diff --git a/apps/user_ldap/lib/user/manager.php b/apps/user_ldap/lib/user/manager.php index b5d402f1fac..c8c89374e98 100644 --- a/apps/user_ldap/lib/user/manager.php +++ b/apps/user_ldap/lib/user/manager.php @@ -168,7 +168,7 @@ class Manager { /** * @brief returns a User object by it's DN or ownCloud username - * @param string the username of the user + * @param string the DN or username of the user * @return \OCA\user_ldap\lib\user\User|\OCA\user_ldap\lib\user\OfflineUser|null * @throws \Exception when connection could not be established */ -- cgit v1.2.3 From fafecd1c05cebbd983d8c770d36c5d546a83b16b Mon Sep 17 00:00:00 2001 From: Jörn Friedrich Dreyer Date: Thu, 9 Apr 2015 14:03:30 +0200 Subject: fix cherrypicking --- apps/user_ldap/lib/connection.php | 2 +- apps/user_ldap/tests/user/manager.php | 4 +++ apps/user_ldap/tests/user_ldap.php | 27 +++++++++--------- lib/private/hook.php | 2 +- tests/lib/files/filesystem.php | 11 ++++++- tests/lib/preview.php | 54 +++++++++++++++++------------------ 6 files changed, 56 insertions(+), 44 deletions(-) (limited to 'apps') diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index fa6258445d8..b9d83aad684 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -30,10 +30,10 @@ namespace OCA\user_ldap\lib; -//magic properties (incomplete) use OC\ServerNotAvailableException; /** + * magic properties (incomplete) * responsible for LDAP connections in context with the provided configuration * * @property string ldapUserFilter diff --git a/apps/user_ldap/tests/user/manager.php b/apps/user_ldap/tests/user/manager.php index e1e98b57f80..e86db6b9f81 100644 --- a/apps/user_ldap/tests/user/manager.php +++ b/apps/user_ldap/tests/user/manager.php @@ -145,6 +145,8 @@ class Test_User_Manager extends \Test\TestCase { $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); $manager->setLdapAccess($access); $user = $manager->get($inputDN); + + $this->assertNull($user); } public function testGetByUidExisting() { @@ -192,6 +194,8 @@ class Test_User_Manager extends \Test\TestCase { $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc); $manager->setLdapAccess($access); $user = $manager->get($uid); + + $this->assertNull($user); } } diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php index 9b4da00a3a7..53229e2d64a 100644 --- a/apps/user_ldap/tests/user_ldap.php +++ b/apps/user_ldap/tests/user_ldap.php @@ -435,7 +435,7 @@ class Test_User_Ldap_Direct extends \Test\TestCase { */ public function testUserExistsForDeleted() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access); + $backend = new UserLDAP($access, $this->getMock('\OCP\IConfig')); $this->prepareMockForUserExists($access); $access->expects($this->any()) @@ -453,7 +453,7 @@ class Test_User_Ldap_Direct extends \Test\TestCase { public function testUserExistsForNeverExisting() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access); + $backend = new UserLDAP($access, $this->getMock('\OCP\IConfig')); $this->prepareMockForUserExists($access); $access->expects($this->any()) @@ -495,7 +495,7 @@ class Test_User_Ldap_Direct extends \Test\TestCase { */ public function testUserExistsPublicAPIForDeleted() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access); + $backend = new UserLDAP($access, $this->getMock('\OCP\IConfig')); $this->prepareMockForUserExists($access); \OC_User::useBackend($backend); @@ -514,7 +514,7 @@ class Test_User_Ldap_Direct extends \Test\TestCase { public function testUserExistsPublicAPIForNeverExisting() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access); + $backend = new UserLDAP($access, $this->getMock('\OCP\IConfig')); $this->prepareMockForUserExists($access); \OC_User::useBackend($backend); @@ -571,19 +571,15 @@ class Test_User_Ldap_Direct extends \Test\TestCase { } })); - $datadir = '/my/data/dir'; - $config->expects($this->once()) - ->method('getSystemValue') - ->will($this->returnValue($datadir)); - //absolut path $result = $backend->getHome('gunslinger'); $this->assertEquals('/tmp/rolandshome/', $result); } - public function testGetHomeDatadirRelative() { + public function testGetHomeRelative() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access); + $config = $this->getMock('\OCP\IConfig'); + $backend = new UserLDAP($access, $config); $this->prepareMockForUserExists($access); $access->connection->expects($this->any()) @@ -610,9 +606,12 @@ class Test_User_Ldap_Direct extends \Test\TestCase { } })); //datadir-relativ path + $datadir = '/my/data/dir'; + $config->expects($this->once()) + ->method('getSystemValue') + ->will($this->returnValue($datadir)); + $result = $backend->getHome('ladyofshadows'); - $datadir = \OCP\Config::getSystemValue('datadirectory', - \OC::$SERVERROOT.'/data'); $this->assertEquals($datadir.'/susannah/', $result); } @@ -621,7 +620,7 @@ class Test_User_Ldap_Direct extends \Test\TestCase { */ public function testGetHomeNoPath() { $access = $this->getAccessMock(); - $backend = new UserLDAP($access); + $backend = new UserLDAP($access, $this->getMock('\OCP\IConfig')); $this->prepareMockForUserExists($access); $access->connection->expects($this->any()) diff --git a/lib/private/hook.php b/lib/private/hook.php index 1e7a084bc31..b6e97b3f545 100644 --- a/lib/private/hook.php +++ b/lib/private/hook.php @@ -114,7 +114,7 @@ class OC_Hook{ OC_Log::write('hook', 'error while running hook (' . $class . '::' . $i["name"] . '): ' . $message, OC_Log::ERROR); - if($e instanceof \OC\ServerNotAvailableException && $signalclass === 'OC_Filesystem' && $signalname === 'setup') { + if($e instanceof \OC\ServerNotAvailableException && $signalClass === 'OC_Filesystem' && $signalName === 'setup') { throw $e; } } diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php index a01b15eb2df..082d22781fa 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -25,6 +25,9 @@ namespace Test\Files; use OC\User\NoUserException; class Filesystem extends \Test\TestCase { + + const TEST_FILESYSTEM_USER1 = "test-filesystem-user1"; + /** * @var array tmpDirs */ @@ -238,8 +241,14 @@ class Filesystem extends \Test\TestCase { if (\OC\Files\Filesystem::getView()) { $user = \OC_User::getUser(); } else { - $user = $this->getUniqueID(); + $user = self::TEST_FILESYSTEM_USER1; + $backend = new \OC_User_Dummy(); + \OC_User::useBackend($backend); + $backend->createUser($user, $user); + $userObj = \OC::$server->getUserManager()->get($user); + \OC::$server->getUserSession()->setUser($userObj); \OC\Files\Filesystem::init($user, '/' . $user . '/files'); + } \OC_Hook::clear('OC_Filesystem'); \OC_Hook::connect('OC_Filesystem', 'post_write', $this, 'dummyHook'); diff --git a/tests/lib/preview.php b/tests/lib/preview.php index ea9de9b777e..20e4209dedf 100644 --- a/tests/lib/preview.php +++ b/tests/lib/preview.php @@ -10,10 +10,7 @@ namespace Test; class Preview extends TestCase { - /** - * @var string - */ - private $user; + const TEST_PREVIEW_USER1 = "test-preview-user1"; /** * @var \OC\Files\View @@ -32,15 +29,18 @@ class Preview extends TestCase { // create a new user with his own filesystem view // this gets called by each test in this test class - $this->user = $this->getUniqueID(); - \OC_User::setUserId($this->user); - \OC\Files\Filesystem::init($this->user, '/' . $this->user . '/files'); + $backend = new \OC_User_Dummy(); + \OC_User::useBackend($backend); + $backend->createUser(self::TEST_PREVIEW_USER1, self::TEST_PREVIEW_USER1); + $user = \OC::$server->getUserManager()->get(self::TEST_PREVIEW_USER1); + \OC::$server->getUserSession()->setUser($user); + \OC\Files\Filesystem::init(self::TEST_PREVIEW_USER1, '/' . self::TEST_PREVIEW_USER1 . '/files'); \OC\Files\Filesystem::mount('OC\Files\Storage\Temporary', array(), '/'); $this->rootView = new \OC\Files\View(''); - $this->rootView->mkdir('/'.$this->user); - $this->rootView->mkdir('/'.$this->user.'/files'); + $this->rootView->mkdir('/'.self::TEST_PREVIEW_USER1); + $this->rootView->mkdir('/'.self::TEST_PREVIEW_USER1.'/files'); } protected function tearDown() { @@ -59,14 +59,14 @@ class Preview extends TestCase { \OC::$server->getConfig()->setSystemValue('preview_max_y', $maxY); // Sample is 1680x1050 JPEG - $sampleFile = '/' . $this->user . '/files/testimage.jpg'; + $sampleFile = '/' . self::TEST_PREVIEW_USER1 . '/files/testimage.jpg'; $this->rootView->file_put_contents($sampleFile, file_get_contents(\OC::$SERVERROOT.'/tests/data/testimage.jpg')); $fileInfo = $this->rootView->getFileInfo($sampleFile); $fileId = $fileInfo['fileid']; $largeX = 1920; $largeY = 1080; - $preview = new \OC\Preview($this->user, 'files/', 'testimage.jpg', $largeX, $largeY); + $preview = new \OC\Preview(self::TEST_PREVIEW_USER1, 'files/', 'testimage.jpg', $largeX, $largeY); $this->assertEquals($preview->isFileValid(), true); @@ -84,7 +84,7 @@ class Preview extends TestCase { $this->assertEquals($image->height(), $maxY); // The max thumbnail should be created - $maxThumbCacheFile = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $maxX . '-' . $maxY . '-max.png'; + $maxThumbCacheFile = '/' . self::TEST_PREVIEW_USER1 . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $maxX . '-' . $maxY . '-max.png'; $this->assertEquals($this->rootView->file_exists($maxThumbCacheFile), true); @@ -100,7 +100,7 @@ class Preview extends TestCase { // Smaller previews should be based on the cached max preview $smallX = 50; $smallY = 50; - $preview = new \OC\Preview($this->user, 'files/', 'testimage.jpg', $smallX, $smallY); + $preview = new \OC\Preview(self::TEST_PREVIEW_USER1, 'files/', 'testimage.jpg', $smallX, $smallY); $isCached = $preview->isCached($fileId); $this->assertEquals(\OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $maxX . '-' . $maxY . '.png', $isCached); @@ -111,7 +111,7 @@ class Preview extends TestCase { $this->assertEquals($image->height(), $smallY); // The cache should contain the small preview - $thumbCacheFile = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $smallX . '-' . $smallY . '.png'; + $thumbCacheFile = '/' . self::TEST_PREVIEW_USER1 . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $smallX . '-' . $smallY . '.png'; $this->assertEquals($this->rootView->file_exists($thumbCacheFile), true); @@ -123,20 +123,20 @@ class Preview extends TestCase { public function testIsPreviewDeleted() { - $sampleFile = '/'.$this->user.'/files/test.txt'; + $sampleFile = '/'.self::TEST_PREVIEW_USER1.'/files/test.txt'; $this->rootView->file_put_contents($sampleFile, 'dummy file data'); $x = 50; $y = 50; - $preview = new \OC\Preview($this->user, 'files/', 'test.txt', $x, $y); + $preview = new \OC\Preview(self::TEST_PREVIEW_USER1, 'files/', 'test.txt', $x, $y); $preview->getPreview(); $fileInfo = $this->rootView->getFileInfo($sampleFile); $fileId = $fileInfo['fileid']; - $thumbCacheFile = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $x . '-' . $y . '.png'; + $thumbCacheFile = '/' . self::TEST_PREVIEW_USER1 . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $x . '-' . $y . '.png'; $this->assertEquals($this->rootView->file_exists($thumbCacheFile), true); @@ -147,20 +147,20 @@ class Preview extends TestCase { public function testAreAllPreviewsDeleted() { - $sampleFile = '/'.$this->user.'/files/test.txt'; + $sampleFile = '/'.self::TEST_PREVIEW_USER1.'/files/test.txt'; $this->rootView->file_put_contents($sampleFile, 'dummy file data'); $x = 50; $y = 50; - $preview = new \OC\Preview($this->user, 'files/', 'test.txt', $x, $y); + $preview = new \OC\Preview(self::TEST_PREVIEW_USER1, 'files/', 'test.txt', $x, $y); $preview->getPreview(); $fileInfo = $this->rootView->getFileInfo($sampleFile); $fileId = $fileInfo['fileid']; - $thumbCacheFolder = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/'; + $thumbCacheFolder = '/' . self::TEST_PREVIEW_USER1 . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/'; $this->assertEquals($this->rootView->is_dir($thumbCacheFolder), true); @@ -185,9 +185,9 @@ class Preview extends TestCase { $x = 32; $y = 32; - $sample = '/'.$this->user.'/files/test.'.$extension; + $sample = '/'.self::TEST_PREVIEW_USER1.'/files/test.'.$extension; $this->rootView->file_put_contents($sample, $data); - $preview = new \OC\Preview($this->user, 'files/', 'test.'.$extension, $x, $y); + $preview = new \OC\Preview(self::TEST_PREVIEW_USER1, 'files/', 'test.'.$extension, $x, $y); $image = $preview->getPreview(); $resource = $image->resource(); @@ -203,7 +203,7 @@ class Preview extends TestCase { public function testCreationFromCached() { - $sampleFile = '/'.$this->user.'/files/test.txt'; + $sampleFile = '/'.self::TEST_PREVIEW_USER1.'/files/test.txt'; $this->rootView->file_put_contents($sampleFile, 'dummy file data'); @@ -211,22 +211,22 @@ class Preview extends TestCase { $x = 150; $y = 150; - $preview = new \OC\Preview($this->user, 'files/', 'test.txt', $x, $y); + $preview = new \OC\Preview(self::TEST_PREVIEW_USER1, 'files/', 'test.txt', $x, $y); $preview->getPreview(); $fileInfo = $this->rootView->getFileInfo($sampleFile); $fileId = $fileInfo['fileid']; - $thumbCacheFile = '/' . $this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $x . '-' . $y . '.png'; + $thumbCacheFile = '/' . self::TEST_PREVIEW_USER1 . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/' . $x . '-' . $y . '.png'; $this->assertEquals($this->rootView->file_exists($thumbCacheFile), true); // create smaller previews - $preview = new \OC\Preview($this->user, 'files/', 'test.txt', 50, 50); + $preview = new \OC\Preview(self::TEST_PREVIEW_USER1, 'files/', 'test.txt', 50, 50); $isCached = $preview->isCached($fileId); - $this->assertEquals($this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/150-150.png', $isCached); + $this->assertEquals(self::TEST_PREVIEW_USER1 . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/150-150.png', $isCached); } /* -- cgit v1.2.3