Use DI for IAppManager to encryption migration

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
Morris Jobke 2017-10-23 23:20:50 +02:00
parent db1096bcfd
commit 99934134dc
No known key found for this signature in database
GPG Key ID: FE03C3A163FEDE68
4 changed files with 34 additions and 13 deletions

View File

@ -26,6 +26,7 @@ namespace OCA\Encryption;
use OC\Files\View; use OC\Files\View;
use OCP\App\IAppManager;
use OCP\IConfig; use OCP\IConfig;
use OCP\IDBConnection; use OCP\IDBConnection;
use OCP\ILogger; use OCP\ILogger;
@ -43,6 +44,8 @@ class Migration {
private $logger; private $logger;
/** @var string*/ /** @var string*/
protected $installedVersion; protected $installedVersion;
/** @var IAppManager */
protected $appManager;
/** /**
* @param IConfig $config * @param IConfig $config
@ -50,7 +53,7 @@ class Migration {
* @param IDBConnection $connection * @param IDBConnection $connection
* @param ILogger $logger * @param ILogger $logger
*/ */
public function __construct(IConfig $config, View $view, IDBConnection $connection, ILogger $logger) { public function __construct(IConfig $config, View $view, IDBConnection $connection, ILogger $logger, IAppManager $appManager) {
$this->view = $view; $this->view = $view;
$this->view->disableCacheUpdate(); $this->view->disableCacheUpdate();
$this->connection = $connection; $this->connection = $connection;
@ -58,6 +61,7 @@ class Migration {
$this->config = $config; $this->config = $config;
$this->logger = $logger; $this->logger = $logger;
$this->installedVersion = $this->config->getAppValue('files_encryption', 'installed_version', '-1'); $this->installedVersion = $this->config->getAppValue('files_encryption', 'installed_version', '-1');
$this->appManager = $appManager;
} }
public function finalCleanUp() { public function finalCleanUp() {
@ -137,7 +141,7 @@ class Migration {
$path = '/files_encryption/keys'; $path = '/files_encryption/keys';
$this->renameFileKeys($user, $path); $this->renameFileKeys($user, $path);
$trashPath = '/files_trashbin/keys'; $trashPath = '/files_trashbin/keys';
if (\OC_App::isEnabled('files_trashbin') && $this->view->is_dir($user . '/' . $trashPath)) { if ($this->appManager->isEnabledForUser('files_trashbin') && $this->view->is_dir($user . '/' . $trashPath)) {
$this->renameFileKeys($user, $trashPath, true); $this->renameFileKeys($user, $trashPath, true);
$this->view->deleteAll($trashPath); $this->view->deleteAll($trashPath);
} }

View File

@ -203,13 +203,14 @@ class MigrationTest extends \Test\TestCase {
$this->createDummySystemWideKeys(); $this->createDummySystemWideKeys();
/** @var \PHPUnit_Framework_MockObject_MockObject|\OCA\Encryption\Migration $m */ /** @var \PHPUnit_Framework_MockObject_MockObject|\OCA\Encryption\Migration $m */
$m = $this->getMockBuilder('OCA\Encryption\Migration') $m = $this->getMockBuilder(Migration::class)
->setConstructorArgs( ->setConstructorArgs(
[ [
\OC::$server->getConfig(), \OC::$server->getConfig(),
new \OC\Files\View(), new \OC\Files\View(),
\OC::$server->getDatabaseConnection(), \OC::$server->getDatabaseConnection(),
$this->logger $this->logger,
\OC::$server->getAppManager()
] ]
)->setMethods(['getSystemMountPoints'])->getMock(); )->setMethods(['getSystemMountPoints'])->getMock();
@ -366,7 +367,7 @@ class MigrationTest extends \Test\TestCase {
public function testUpdateDB() { public function testUpdateDB() {
$this->prepareDB(); $this->prepareDB();
$m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger); $m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger, \OC::$server->getAppManager());
$this->invokePrivate($m, 'installedVersion', ['0.7']); $this->invokePrivate($m, 'installedVersion', ['0.7']);
$m->updateDB(); $m->updateDB();
@ -386,7 +387,7 @@ class MigrationTest extends \Test\TestCase {
$config->setAppValue('encryption', 'publicShareKeyId', 'wrong_share_id'); $config->setAppValue('encryption', 'publicShareKeyId', 'wrong_share_id');
$config->setUserValue(self::TEST_ENCRYPTION_MIGRATION_USER1, 'encryption', 'recoverKeyEnabled', '9'); $config->setUserValue(self::TEST_ENCRYPTION_MIGRATION_USER1, 'encryption', 'recoverKeyEnabled', '9');
$m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger); $m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger, \OC::$server->getAppManager());
$this->invokePrivate($m, 'installedVersion', ['0.7']); $this->invokePrivate($m, 'installedVersion', ['0.7']);
$m->updateDB(); $m->updateDB();
@ -455,7 +456,7 @@ class MigrationTest extends \Test\TestCase {
*/ */
public function testUpdateFileCache() { public function testUpdateFileCache() {
$this->prepareFileCache(); $this->prepareFileCache();
$m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger); $m = new Migration(\OC::$server->getConfig(), new \OC\Files\View(), \OC::$server->getDatabaseConnection(), $this->logger, \OC::$server->getAppManager());
$this->invokePrivate($m, 'installedVersion', ['0.7']); $this->invokePrivate($m, 'installedVersion', ['0.7']);
self::invokePrivate($m, 'updateFileCache'); self::invokePrivate($m, 'updateFileCache');
@ -527,13 +528,14 @@ class MigrationTest extends \Test\TestCase {
->disableOriginalConstructor()->getMock(); ->disableOriginalConstructor()->getMock();
$view->expects($this->any())->method('file_exists')->willReturn(true); $view->expects($this->any())->method('file_exists')->willReturn(true);
$m = $this->getMockBuilder('OCA\Encryption\Migration') $m = $this->getMockBuilder(Migration::class)
->setConstructorArgs( ->setConstructorArgs(
[ [
\OC::$server->getConfig(), \OC::$server->getConfig(),
$view, $view,
\OC::$server->getDatabaseConnection(), \OC::$server->getDatabaseConnection(),
$this->logger $this->logger,
\OC::$server->getAppManager()
] ]
)->setMethods(['getSystemMountPoints'])->getMock(); )->setMethods(['getSystemMountPoints'])->getMock();

View File

@ -26,6 +26,7 @@ namespace OC\Settings\Controller;
use OC\Files\View; use OC\Files\View;
use OCA\Encryption\Migration; use OCA\Encryption\Migration;
use OCP\App\IAppManager;
use OCP\IDBConnection; use OCP\IDBConnection;
use OCP\IL10N; use OCP\IL10N;
use OCP\AppFramework\Controller; use OCP\AppFramework\Controller;
@ -57,6 +58,9 @@ class EncryptionController extends Controller {
/** @var ILogger */ /** @var ILogger */
private $logger; private $logger;
/** @var IAppManager */
private $appManager;
/** /**
* @param string $appName * @param string $appName
* @param IRequest $request * @param IRequest $request
@ -66,6 +70,7 @@ class EncryptionController extends Controller {
* @param IUserManager $userManager * @param IUserManager $userManager
* @param View $view * @param View $view
* @param ILogger $logger * @param ILogger $logger
* @param IAppManager $appManager
*/ */
public function __construct($appName, public function __construct($appName,
IRequest $request, IRequest $request,
@ -74,7 +79,8 @@ class EncryptionController extends Controller {
IDBConnection $connection, IDBConnection $connection,
IUserManager $userManager, IUserManager $userManager,
View $view, View $view,
ILogger $logger) { ILogger $logger,
IAppManager $appManager) {
parent::__construct($appName, $request); parent::__construct($appName, $request);
$this->l10n = $l10n; $this->l10n = $l10n;
$this->config = $config; $this->config = $config;
@ -82,6 +88,7 @@ class EncryptionController extends Controller {
$this->view = $view; $this->view = $view;
$this->userManager = $userManager; $this->userManager = $userManager;
$this->logger = $logger; $this->logger = $logger;
$this->appManager = $appManager;
} }
/** /**
@ -89,13 +96,15 @@ class EncryptionController extends Controller {
* @param View $view * @param View $view
* @param IDBConnection $connection * @param IDBConnection $connection
* @param ILogger $logger * @param ILogger $logger
* @param IAppManager $appManager
* @return Migration * @return Migration
*/ */
protected function getMigration(IConfig $config, protected function getMigration(IConfig $config,
View $view, View $view,
IDBConnection $connection, IDBConnection $connection,
ILogger $logger) { ILogger $logger,
return new Migration($config, $view, $connection, $logger); IAppManager $appManager) {
return new Migration($config, $view, $connection, $logger, $appManager);
} }
/** /**
@ -111,7 +120,7 @@ class EncryptionController extends Controller {
try { try {
$migration = $this->getMigration($this->config, $this->view, $this->connection, $this->logger); $migration = $this->getMigration($this->config, $this->view, $this->connection, $this->logger, $this->appManager);
$migration->reorganizeSystemFolderStructure(); $migration->reorganizeSystemFolderStructure();
$migration->updateDB(); $migration->updateDB();

View File

@ -24,6 +24,7 @@ namespace Tests\Settings\Controller;
use OC\DB\Connection; use OC\DB\Connection;
use OC\Files\View; use OC\Files\View;
use OC\Settings\Controller\EncryptionController; use OC\Settings\Controller\EncryptionController;
use OCP\App\IAppManager;
use OCP\IConfig; use OCP\IConfig;
use OCP\IL10N; use OCP\IL10N;
use OCP\ILogger; use OCP\ILogger;
@ -51,6 +52,8 @@ class EncryptionControllerTest extends TestCase {
private $view; private $view;
/** @var ILogger */ /** @var ILogger */
private $logger; private $logger;
/** @var IAppManager */
private $appManager;
/** @var EncryptionController */ /** @var EncryptionController */
private $encryptionController; private $encryptionController;
@ -75,6 +78,8 @@ class EncryptionControllerTest extends TestCase {
->disableOriginalConstructor()->getMock(); ->disableOriginalConstructor()->getMock();
$this->logger = $this->getMockBuilder('\\OCP\\ILogger') $this->logger = $this->getMockBuilder('\\OCP\\ILogger')
->disableOriginalConstructor()->getMock(); ->disableOriginalConstructor()->getMock();
$this->appManager = $this->getMockBuilder('\\OCP\\App\\IAppManager')
->disableOriginalConstructor()->getMock();
$this->encryptionController = $this->getMockBuilder('\\OC\\Settings\\Controller\\EncryptionController') $this->encryptionController = $this->getMockBuilder('\\OC\\Settings\\Controller\\EncryptionController')
->setConstructorArgs([ ->setConstructorArgs([
@ -86,6 +91,7 @@ class EncryptionControllerTest extends TestCase {
$this->userManager, $this->userManager,
$this->view, $this->view,
$this->logger, $this->logger,
$this->appManager,
]) ])
->setMethods(['getMigration']) ->setMethods(['getMigration'])
->getMock(); ->getMock();