From 4e24486a89088d0053633f1f91739649c4f4ffda Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 5 Jun 2015 11:31:49 +0200 Subject: [PATCH 1/2] Check whether the user exists before trying to set up his file system --- apps/files_trashbin/command/expire.php | 6 ++++++ apps/files_versions/command/expire.php | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/apps/files_trashbin/command/expire.php b/apps/files_trashbin/command/expire.php index e617fa47c9..e7dd5c573c 100644 --- a/apps/files_trashbin/command/expire.php +++ b/apps/files_trashbin/command/expire.php @@ -49,6 +49,12 @@ class Expire implements ICommand { } public function handle() { + $userManager = \OC::$server->getUserManager(); + if (!$userManager->userExists($this->user)) { + // User has been deleted already + return; + } + \OC_Util::tearDownFS(); \OC_Util::setupFS($this->user); Trashbin::expire($this->trashBinSize, $this->user); diff --git a/apps/files_versions/command/expire.php b/apps/files_versions/command/expire.php index 6cec9f4fac..ec9aa3e80d 100644 --- a/apps/files_versions/command/expire.php +++ b/apps/files_versions/command/expire.php @@ -50,6 +50,12 @@ class Expire implements ICommand { public function handle() { + $userManager = \OC::$server->getUserManager(); + if (!$userManager->userExists($this->user)) { + // User has been deleted already + return; + } + \OC_Util::setupFS($this->user); Storage::expire($this->fileName, $this->versionsSize, $this->neededSpace); \OC_Util::tearDownFS(); From bd0b9a0fe0b233e395d01cc8eb79b84506c9323b Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 5 Jun 2015 13:23:50 +0200 Subject: [PATCH 2/2] Add unit tests for non existing users --- .../tests/command/expiretest.php | 34 +++++++++++++++++++ .../tests/command/expiretest.php | 34 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 apps/files_trashbin/tests/command/expiretest.php create mode 100644 apps/files_versions/tests/command/expiretest.php diff --git a/apps/files_trashbin/tests/command/expiretest.php b/apps/files_trashbin/tests/command/expiretest.php new file mode 100644 index 0000000000..a6a8a6d53a --- /dev/null +++ b/apps/files_trashbin/tests/command/expiretest.php @@ -0,0 +1,34 @@ + + * + * @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 OCA\Files_Trashbin\Tests\Command; + +use OCA\Files_Trashbin\Command\Expire; +use Test\TestCase; + +class ExpireTest extends TestCase { + public function testExpireNonExistingUser() { + $command = new Expire('test', 0); + $command->handle(); + + $this->assertTrue(true); + } +} diff --git a/apps/files_versions/tests/command/expiretest.php b/apps/files_versions/tests/command/expiretest.php new file mode 100644 index 0000000000..247fb99b76 --- /dev/null +++ b/apps/files_versions/tests/command/expiretest.php @@ -0,0 +1,34 @@ + + * + * @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 OCA\Files_Versions\Tests\Command; + +use OCA\Files_Versions\Command\Expire; +use Test\TestCase; + +class ExpireTest extends TestCase { + public function testExpireNonExistingUser() { + $command = new Expire('test', ''); + $command->handle(); + + $this->assertTrue(true); + } +}