nextcloud/tests/Core/Command/Encryption/DisableTest.php
Stephen Cuppett 1b2b4cb660 refactor(encryption): Migrate appconfig keys to typed bool IAppConfig with repair step
Switch all encryption config reads/writes from deprecated string-typed IConfig to
bool-typed IAppConfig (getValueBool/setValueBool). Adds RetypeEncryptionConfigKeys
repair step to retype existing string values to bool on upgrade. Includes lazy
IAppConfig resolution in Manager and AppConfigTypeConflictException fallbacks
throughout for safety during the upgrade window.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Stephen Cuppett <steve@cuppett.com>
2026-07-04 08:19:10 -04:00

74 lines
2.1 KiB
PHP

<?php
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-only
*/
namespace Tests\Core\Command\Encryption;
use OC\Core\Command\Encryption\Disable;
use OCP\IAppConfig;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Test\TestCase;
class DisableTest extends TestCase {
/** @var \PHPUnit\Framework\MockObject\MockObject */
protected $appConfig;
/** @var \PHPUnit\Framework\MockObject\MockObject */
protected $consoleInput;
/** @var \PHPUnit\Framework\MockObject\MockObject */
protected $consoleOutput;
/** @var \Symfony\Component\Console\Command\Command */
protected $command;
#[\Override]
protected function setUp(): void {
parent::setUp();
$appConfig = $this->appConfig = $this->getMockBuilder(IAppConfig::class)
->disableOriginalConstructor()
->getMock();
$this->consoleInput = $this->getMockBuilder(InputInterface::class)->getMock();
$this->consoleOutput = $this->getMockBuilder(OutputInterface::class)->getMock();
/** @var IAppConfig $appConfig */
$this->command = new Disable($appConfig);
}
public static function dataDisable(): array {
return [
[true, true, 'Encryption disabled'],
[false, false, 'Encryption is already disabled'],
];
}
/**
*
* @param bool $oldStatus
* @param bool $isUpdating
* @param string $expectedString
*/
#[\PHPUnit\Framework\Attributes\DataProvider('dataDisable')]
public function testDisable(bool $oldStatus, bool $isUpdating, string $expectedString): void {
$this->appConfig->expects($this->once())
->method('getValueBool')
->with('core', 'encryption_enabled', false)
->willReturn($oldStatus);
$this->consoleOutput->expects($this->once())
->method('writeln')
->with($this->stringContains($expectedString));
if ($isUpdating) {
$this->appConfig->expects($this->once())
->method('setValueBool')
->with('core', 'encryption_enabled', false);
}
self::invokePrivate($this->command, 'execute', [$this->consoleInput, $this->consoleOutput]);
}
}