summaryrefslogtreecommitdiffstats
path: root/tests/Core
diff options
context:
space:
mode:
authorRuben Homs <ruben@homs.codes>2018-10-29 15:36:16 +0100
committerRuben Homs <ruben@homs.codes>2019-05-21 09:24:50 +0200
commit98047e8c1cd8c741f4a3d63b970f7e15fa76c128 (patch)
treef9058ccf218d466a04da8f64bb803ee92f4d556d /tests/Core
parent50dbdeea46b3891fad9793899ddcdcf20586f2d7 (diff)
downloadnextcloud-server-98047e8c1cd8c741f4a3d63b970f7e15fa76c128.tar.gz
nextcloud-server-98047e8c1cd8c741f4a3d63b970f7e15fa76c128.zip
Stop decryption when maintenance mode is enabled, fixes #8311
Signed-off-by: Ruben Homs <ruben@homs.codes>
Diffstat (limited to 'tests/Core')
-rw-r--r--tests/Core/Command/Encryption/DecryptAllTest.php8
-rw-r--r--tests/Core/Command/Encryption/SetDefaultModuleTest.php54
2 files changed, 54 insertions, 8 deletions
diff --git a/tests/Core/Command/Encryption/DecryptAllTest.php b/tests/Core/Command/Encryption/DecryptAllTest.php
index c8572864060..af97a4b4a79 100644
--- a/tests/Core/Command/Encryption/DecryptAllTest.php
+++ b/tests/Core/Command/Encryption/DecryptAllTest.php
@@ -148,7 +148,7 @@ class DecryptAllTest extends TestCase {
->willReturn('user1');
if ($encryptionEnabled) {
- $this->config->expects($this->at(0))
+ $this->config->expects($this->at(1))
->method('setAppValue')
->with('core', 'encryption_enabled', 'no');
$this->questionHelper->expects($this->once())
@@ -160,7 +160,7 @@ class DecryptAllTest extends TestCase {
->with($this->consoleInput, $this->consoleOutput, 'user1');
} else {
$this->decryptAll->expects($this->never())->method('decryptAll');
- $this->config->expects($this->at(1))
+ $this->config->expects($this->at(2))
->method('setAppValue')
->with('core', 'encryption_enabled', 'yes');
}
@@ -194,12 +194,12 @@ class DecryptAllTest extends TestCase {
$this->questionHelper
);
- $this->config->expects($this->at(0))
+ $this->config->expects($this->at(1))
->method('setAppValue')
->with('core', 'encryption_enabled', 'no');
// make sure that we enable encryption again after a exception was thrown
- $this->config->expects($this->at(3))
+ $this->config->expects($this->at(4))
->method('setAppValue')
->with('core', 'encryption_enabled', 'yes');
diff --git a/tests/Core/Command/Encryption/SetDefaultModuleTest.php b/tests/Core/Command/Encryption/SetDefaultModuleTest.php
index 3f04ba7e79d..2dc62d42bfa 100644
--- a/tests/Core/Command/Encryption/SetDefaultModuleTest.php
+++ b/tests/Core/Command/Encryption/SetDefaultModuleTest.php
@@ -24,13 +24,16 @@ namespace Tests\Core\Command\Encryption;
use OC\Core\Command\Encryption\SetDefaultModule;
use OCP\Encryption\IManager;
+use OCP\IConfig;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Test\TestCase;
class SetDefaultModuleTest extends TestCase {
- /** @var \PHPUnit_Framework_MockObject_MockObject */
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IManager */
protected $manager;
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IConfig */
+ protected $config;
/** @var \PHPUnit_Framework_MockObject_MockObject */
protected $consoleInput;
/** @var \PHPUnit_Framework_MockObject_MockObject */
@@ -42,14 +45,16 @@ class SetDefaultModuleTest extends TestCase {
protected function setUp() {
parent::setUp();
- $manager = $this->manager = $this->getMockBuilder(IManager::class)
+ $this->manager = $this->getMockBuilder(IManager::class)
->disableOriginalConstructor()
->getMock();
+ $this->config = $this->getMockBuilder(IConfig::class)
+ ->getMock();
+
$this->consoleInput = $this->getMockBuilder(InputInterface::class)->getMock();
$this->consoleOutput = $this->getMockBuilder(OutputInterface::class)->getMock();
- /** @var \OCP\Encryption\IManager $manager */
- $this->command = new SetDefaultModule($manager);
+ $this->command = new SetDefaultModule($this->manager, $this->config);
}
@@ -79,6 +84,12 @@ class SetDefaultModuleTest extends TestCase {
$this->manager->expects($this->once())
->method('getDefaultEncryptionModuleId')
->willReturn($oldModule);
+
+ $this->config->expects($this->once())
+ ->method('getSystemValue')
+ ->with('maintenance', false)
+ ->willReturn(false);
+
if ($updateModule) {
$this->manager->expects($this->once())
->method('setDefaultEncryptionModule')
@@ -92,4 +103,39 @@ class SetDefaultModuleTest extends TestCase {
self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
}
+
+ /**
+ * @dataProvider dataSetDefaultModule
+ *
+ * @param string $oldModule
+ * @param string $newModule
+ * @param string $updateModule
+ * @param bool $updateSuccess
+ * @param string $expectedString
+ */
+ public function testMaintenanceMode($oldModule, $newModule, $updateModule, $updateSuccess, $expectedString) {
+ $this->consoleInput->expects($this->never())
+ ->method('getArgument')
+ ->with('module')
+ ->willReturn($newModule);
+
+ $this->manager->expects($this->never())
+ ->method('getDefaultEncryptionModuleId')
+ ->willReturn($oldModule);
+
+ $this->config->expects($this->once())
+ ->method('getSystemValue')
+ ->with('maintenance', false)
+ ->willReturn(true);
+
+ $this->consoleOutput->expects($this->at(0))
+ ->method('writeln')
+ ->with($this->stringContains('Maintenance mode must be disabled when setting default module,'));
+
+ $this->consoleOutput->expects($this->at(1))
+ ->method('writeln')
+ ->with($this->stringContains('in order to load the relevant encryption modules correctly.'));
+
+ self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
+ }
}