diff options
author | Ruben Homs <ruben@homs.codes> | 2018-10-29 15:36:16 +0100 |
---|---|---|
committer | Ruben Homs <ruben@homs.codes> | 2019-05-21 09:24:50 +0200 |
commit | 98047e8c1cd8c741f4a3d63b970f7e15fa76c128 (patch) | |
tree | f9058ccf218d466a04da8f64bb803ee92f4d556d /tests/Core | |
parent | 50dbdeea46b3891fad9793899ddcdcf20586f2d7 (diff) | |
download | nextcloud-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.php | 8 | ||||
-rw-r--r-- | tests/Core/Command/Encryption/SetDefaultModuleTest.php | 54 |
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]); + } } |