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/Command/Encryption/SetDefaultModuleTest.php | |
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/Command/Encryption/SetDefaultModuleTest.php')
-rw-r--r-- | tests/Core/Command/Encryption/SetDefaultModuleTest.php | 54 |
1 files changed, 50 insertions, 4 deletions
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]); + } } |