Skip to content
Snippets Groups Projects
Commit 2f102c1f authored by Joas Schilling's avatar Joas Schilling
Browse files

Do not set single user in constructor

parent 2eeb1b2b
No related branches found
No related tags found
No related merge requests found
......@@ -75,14 +75,22 @@ class DecryptAll extends Command {
$this->config = $config;
$this->decryptAll = $decryptAll;
$this->questionHelper = $questionHelper;
}
/**
* Set single user mode and disable the trashbin app
*/
protected function forceSingleUserAndTrashbin() {
$this->wasTrashbinEnabled = $this->appManager->isEnabledForUser('files_trashbin');
$this->wasSingleUserModeEnabled = $this->config->getSystemValue('singleuser', false);
$this->config->setSystemValue('singleuser', true);
$this->appManager->disableApp('files_trashbin');
}
public function __destruct() {
/**
* Reset the single user mode and re-enable the trashbin app
*/
protected function resetSingleUserAndTrashbin() {
$this->config->setSystemValue('singleuser', $this->wasSingleUserModeEnabled);
if ($this->wasTrashbinEnabled) {
$this->appManager->enableApp('files_trashbin');
......@@ -115,7 +123,6 @@ class DecryptAll extends Command {
} else {
$output->writeln('Server side encryption not enabled. Nothing to do.');
return;
}
$output->writeln("\n");
......@@ -126,12 +133,14 @@ class DecryptAll extends Command {
$output->writeln('');
$question = new ConfirmationQuestion('Do you really want to continue? (y/n) ', false);
if ($this->questionHelper->ask($input, $output, $question)) {
$this->forceSingleUserAndTrashbin();
$user = $input->getArgument('user');
$result = $this->decryptAll->decryptAll($input, $output, $user);
if ($result === false) {
$this->output->writeln(' aborted.');
$output->writeln(' aborted.');
$this->config->setAppValue('core', 'encryption_enabled', 'yes');
}
$this->resetSingleUserAndTrashbin();
} else {
$output->write('Enable server side encryption... ');
$this->config->setAppValue('core', 'encryption_enabled', 'yes');
......@@ -141,8 +150,9 @@ class DecryptAll extends Command {
} catch (\Exception $e) {
// enable server side encryption again if something went wrong
$this->config->setAppValue('core', 'encryption_enabled', 'yes');
$this->resetSingleUserAndTrashbin();
throw $e;
}
}
}
}
......@@ -67,13 +67,22 @@ class EncryptAll extends Command {
$this->encryptionManager = $encryptionManager;
$this->config = $config;
$this->questionHelper = $questionHelper;
}
/**
* Set single user mode and disable the trashbin app
*/
protected function forceSingleUserAndTrashbin() {
$this->wasTrashbinEnabled = $this->appManager->isEnabledForUser('files_trashbin');
$this->wasSingleUserModeEnabled = $this->config->getSystemValue('singleuser', false);
$this->config->setSystemValue('singleuser', true);
$this->appManager->disableApp('files_trashbin');
}
public function __destruct() {
/**
* Reset the single user mode and re-enable the trashbin app
*/
protected function resetSingleUserAndTrashbin() {
$this->config->setSystemValue('singleuser', $this->wasSingleUserModeEnabled);
if ($this->wasTrashbinEnabled) {
$this->appManager->enableApp('files_trashbin');
......@@ -104,8 +113,12 @@ class EncryptAll extends Command {
$output->writeln('');
$question = new ConfirmationQuestion('Do you really want to continue? (y/n) ', false);
if ($this->questionHelper->ask($input, $output, $question)) {
$this->forceSingleUserAndTrashbin();
$defaultModule = $this->encryptionManager->getEncryptionModule();
$defaultModule->encryptAll($input, $output);
$this->resetSingleUserAndTrashbin();
} else {
$output->writeln('aborted');
}
......
......@@ -79,7 +79,8 @@ class DecryptAllTest extends TestCase {
}
public function testConstructDesctruct() {
public function testSingleUserAndTrashbin() {
// on construct we enable single-user-mode and disable the trash bin
$this->config->expects($this->at(1))
->method('setSystemValue')
......@@ -103,6 +104,7 @@ class DecryptAllTest extends TestCase {
$this->decryptAll,
$this->questionHelper
);
$this->invokePrivate($instance, 'forceSingleUserAndTrashbin');
$this->assertTrue(
$this->invokePrivate($instance, 'wasTrashbinEnabled')
......@@ -111,6 +113,7 @@ class DecryptAllTest extends TestCase {
$this->assertFalse(
$this->invokePrivate($instance, 'wasSingleUserModeEnabled')
);
$this->invokePrivate($instance, 'resetSingleUserAndTrashbin');
}
/**
......@@ -187,7 +190,7 @@ class DecryptAllTest extends TestCase {
->with('core', 'encryption_enabled', 'no');
// make sure that we enable encryption again after a exception was thrown
$this->config->expects($this->at(1))
$this->config->expects($this->at(3))
->method('setAppValue')
->with('core', 'encryption_enabled', 'yes');
......
......@@ -85,7 +85,9 @@ class EncryptAllTest extends TestCase {
$this->config->expects($this->at(1))->method('setSystemValue')->with('singleuser', true);
$this->config->expects($this->at(2))->method('setSystemValue')->with('singleuser', false);
new EncryptAll($this->encryptionManager, $this->appManager, $this->config, $this->questionHelper);
$instance = new EncryptAll($this->encryptionManager, $this->appManager, $this->config, $this->questionHelper);
$this->invokePrivate($instance, 'forceSingleUserAndTrashbin');
$this->invokePrivate($instance, 'resetSingleUserAndTrashbin');
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment