diff --git a/core/command/encryption/disable.php b/core/command/encryption/disable.php index b5fce5cbd9..e3c0b8d748 100644 --- a/core/command/encryption/disable.php +++ b/core/command/encryption/disable.php @@ -50,7 +50,7 @@ class Disable extends Command { $output->writeln('Encryption is already disabled'); } else { $this->config->setAppValue('core', 'encryption_enabled', 'no'); - $output->writeln('Encryption disabled'); + $output->writeln('Encryption disabled'); } } } diff --git a/core/command/encryption/enable.php b/core/command/encryption/enable.php index 0b403f86a6..b615a7f4f8 100644 --- a/core/command/encryption/enable.php +++ b/core/command/encryption/enable.php @@ -21,6 +21,7 @@ namespace OC\Core\Command\Encryption; +use OCP\Encryption\IManager; use OCP\IConfig; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -30,11 +31,17 @@ class Enable extends Command { /** @var IConfig */ protected $config; + /** @var IManager */ + protected $encryptionManager; + /** * @param IConfig $config + * @param IManager $encryptionManager */ - public function __construct(IConfig $config) { + public function __construct(IConfig $config, IManager $encryptionManager) { parent::__construct(); + + $this->encryptionManager = $encryptionManager; $this->config = $config; } @@ -50,9 +57,22 @@ class Enable extends Command { $output->writeln('Encryption is already enabled'); } else { $this->config->setAppValue('core', 'encryption_enabled', 'yes'); - $output->writeln('Encryption enabled'); + $output->writeln('Encryption enabled'); } + $output->writeln(''); - $output->writeln('Default module: ' . $this->config->getAppValue('core', 'default_encryption_module', 'OC_DEFAULT_MODULE')); + $modules = $this->encryptionManager->getEncryptionModules(); + if (empty($modules)) { + $output->writeln('No encryption module is loaded'); + } else { + $defaultModule = $this->config->getAppValue('core', 'default_encryption_module', null); + if ($defaultModule === null) { + $output->writeln('No default module is set'); + } else if (!isset($modules[$defaultModule])) { + $output->writeln('The current default module does not exist: ' . $defaultModule . ''); + } else { + $output->writeln('Default module: ' . $defaultModule); + } + } } } diff --git a/core/register_command.php b/core/register_command.php index 5e16abca0c..801148aa55 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -51,7 +51,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) { $application->add(new OC\Core\Command\Background\WebCron(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Background\Ajax(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Encryption\Disable(\OC::$server->getConfig())); - $application->add(new OC\Core\Command\Encryption\Enable(\OC::$server->getConfig())); + $application->add(new OC\Core\Command\Encryption\Enable(\OC::$server->getConfig(), \OC::$server->getEncryptionManager())); $application->add(new OC\Core\Command\Encryption\ListModules(\OC::$server->getEncryptionManager())); $application->add(new OC\Core\Command\Encryption\SetDefaultModule(\OC::$server->getEncryptionManager())); $application->add(new OC\Core\Command\Encryption\Status(\OC::$server->getEncryptionManager())); diff --git a/tests/core/command/encryption/disabletest.php b/tests/core/command/encryption/disabletest.php index 48a6539b24..26c814a9c4 100644 --- a/tests/core/command/encryption/disabletest.php +++ b/tests/core/command/encryption/disabletest.php @@ -72,7 +72,7 @@ class DisableTest extends TestCase { $this->consoleOutput->expects($this->once()) ->method('writeln') - ->with($expectedString); + ->with($this->stringContains($expectedString)); if ($isUpdating) { $this->config->expects($this->once()) diff --git a/tests/core/command/encryption/enabletest.php b/tests/core/command/encryption/enabletest.php index 217329ca29..377d0e2a52 100644 --- a/tests/core/command/encryption/enabletest.php +++ b/tests/core/command/encryption/enabletest.php @@ -29,6 +29,8 @@ class EnableTest extends TestCase { /** @var \PHPUnit_Framework_MockObject_MockObject */ protected $config; /** @var \PHPUnit_Framework_MockObject_MockObject */ + protected $manager; + /** @var \PHPUnit_Framework_MockObject_MockObject */ protected $consoleInput; /** @var \PHPUnit_Framework_MockObject_MockObject */ protected $consoleOutput; @@ -42,18 +44,25 @@ class EnableTest extends TestCase { $config = $this->config = $this->getMockBuilder('OCP\IConfig') ->disableOriginalConstructor() ->getMock(); + $manager = $this->manager = $this->getMockBuilder('OCP\Encryption\IManager') + ->disableOriginalConstructor() + ->getMock(); $this->consoleInput = $this->getMock('Symfony\Component\Console\Input\InputInterface'); $this->consoleOutput = $this->getMock('Symfony\Component\Console\Output\OutputInterface'); /** @var \OCP\IConfig $config */ - $this->command = new Enable($config); + /** @var \OCP\Encryption\IManager $manager */ + $this->command = new Enable($config, $manager); } public function dataEnable() { return [ - ['no', true, 'Encryption enabled'], - ['yes', false, 'Encryption is already enabled'], + ['no', null, [], true, 'Encryption enabled', 'No encryption module is loaded'], + ['yes', null, [], false, 'Encryption is already enabled', 'No encryption module is loaded'], + ['no', null, ['OC_TEST_MODULE' => []], true, 'Encryption enabled', 'No default module is set'], + ['no', 'OC_NO_MODULE', ['OC_TEST_MODULE' => []], true, 'Encryption enabled', 'The current default module does not exist: OC_NO_MODULE'], + ['no', 'OC_TEST_MODULE', ['OC_TEST_MODULE' => []], true, 'Encryption enabled', 'Default module: OC_TEST_MODULE'], ]; } @@ -61,36 +70,49 @@ class EnableTest extends TestCase { * @dataProvider dataEnable * * @param string $oldStatus + * @param string $defaultModule + * @param array $availableModules * @param bool $isUpdating * @param string $expectedString + * @param string $expectedDefaultModuleString */ - public function testEnable($oldStatus, $isUpdating, $expectedString) { - $invoceCount = 0; - $this->config->expects($this->at($invoceCount)) + public function testEnable($oldStatus, $defaultModule, $availableModules, $isUpdating, $expectedString, $expectedDefaultModuleString) { + $invokeCount = 0; + $this->config->expects($this->at($invokeCount)) ->method('getAppValue') ->with('core', 'encryption_enabled', $this->anything()) ->willReturn($oldStatus); - $invoceCount++; + $invokeCount++; if ($isUpdating) { $this->config->expects($this->once()) ->method('setAppValue') ->with('core', 'encryption_enabled', 'yes'); - $invoceCount++; + $invokeCount++; } - $this->config->expects($this->at($invoceCount)) - ->method('getAppValue') - ->with('core', 'default_encryption_module', $this->anything()) - ->willReturnArgument(2); + $this->manager->expects($this->atLeastOnce()) + ->method('getEncryptionModules') + ->willReturn($availableModules); + + if (!empty($availableModules)) { + $this->config->expects($this->at($invokeCount)) + ->method('getAppValue') + ->with('core', 'default_encryption_module', $this->anything()) + ->willReturn($defaultModule); + } $this->consoleOutput->expects($this->at(0)) ->method('writeln') - ->with($expectedString); + ->with($this->stringContains($expectedString)); $this->consoleOutput->expects($this->at(1)) ->method('writeln') - ->with($this->stringContains('Default module')); + ->with(''); + + $this->consoleOutput->expects($this->at(2)) + ->method('writeln') + ->with($this->stringContains($expectedDefaultModuleString)); \Test_Helper::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]); }