Mark $usersSetup only if user was found in initMountPoints
initMountPoints is marking a user as successfully initialized too early. If the user was not found an NoUserException was thrown, the second time initMountPoints is called would not rethrow the exception and happily continue. This fix makes sure that we consistently throw NoUserException when initMountPoints is called repeatedly with invalid users.
This commit is contained in:
parent
c26145aab3
commit
13c01e62cf
|
@ -378,8 +378,6 @@ class Filesystem {
|
|||
if (isset(self::$usersSetup[$user])) {
|
||||
return;
|
||||
}
|
||||
self::$usersSetup[$user] = true;
|
||||
|
||||
$root = \OC_User::getHome($user);
|
||||
|
||||
$userManager = \OC::$server->getUserManager();
|
||||
|
@ -390,6 +388,8 @@ class Filesystem {
|
|||
throw new \OC\User\NoUserException('Backends provided no user object for ' . $user);
|
||||
}
|
||||
|
||||
self::$usersSetup[$user] = true;
|
||||
|
||||
$homeStorage = \OC::$server->getConfig()->getSystemValue('objectstore');
|
||||
if (!empty($homeStorage)) {
|
||||
// sanity checks
|
||||
|
|
|
@ -341,6 +341,28 @@ class Filesystem extends \Test\TestCase {
|
|||
$this->assertEquals(2, $thrown);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that an exception is thrown when passed user does not exist.
|
||||
*/
|
||||
public function testLocalMountWhenUserDoesNotExistTwice() {
|
||||
$thrown = 0;
|
||||
$userId = $this->getUniqueID('user_');
|
||||
|
||||
try {
|
||||
\OC\Files\Filesystem::initMountPoints($userId);
|
||||
} catch (NoUserException $e) {
|
||||
$thrown++;
|
||||
}
|
||||
|
||||
try {
|
||||
\OC\Files\Filesystem::initMountPoints($userId);
|
||||
} catch (NoUserException $e) {
|
||||
$thrown++;
|
||||
}
|
||||
|
||||
$this->assertEquals(2, $thrown);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the home storage is used for the user's mount point
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue