diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index 885155c9d6356..da92f31903b23 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -431,12 +431,12 @@ public function increaseCacheBuster(): void { * @param string $value */ public function set($setting, $value): void { - switch ($value) { + switch ($setting) { case ConfigLexicon::CACHE_BUSTER: $this->appConfig->setAppValueInt(ConfigLexicon::CACHE_BUSTER, (int)$value); break; case ConfigLexicon::USER_THEMING_DISABLED: - $value = $value === 'true' || $value === 'yes' || $value === '1'; + $value = in_array($value, ['1', 'true', 'yes', 'on']); $this->appConfig->setAppValueBool(ConfigLexicon::USER_THEMING_DISABLED, $value); break; default: diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index 5682798f3f180..86907b4b31c56 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -7,6 +7,7 @@ */ namespace OCA\Theming\Tests; +use OCA\Theming\ConfigLexicon; use OCA\Theming\ImageManager; use OCA\Theming\Service\BackgroundService; use OCA\Theming\ThemingDefaults; @@ -728,7 +729,7 @@ public function testGetScssVariables(): void { 'theming-favicon-mime' => '\'jpeg\'', 'image-logoheader' => "url('custom-logoheader?v=0')", 'image-favicon' => "url('custom-favicon?v=0')", - 'has-legal-links' => 'false' + 'has-legal-links' => 'false', ]; $this->assertEquals($expected, $this->template->getScssVariables()); } @@ -798,7 +799,7 @@ public static function dataReplaceImagePath(): array { ['core', 'test.png', false], ['core', 'manifest.json'], ['core', 'favicon.ico'], - ['core', 'favicon-touch.png'] + ['core', 'favicon-touch.png'], ]; } @@ -825,4 +826,35 @@ public function testReplaceImagePath(string $app, string $image, string|bool $re } $this->assertEquals($result, $this->template->replaceImagePath($app, $image)); } + + public static function setTypesProvider(): array { + return [ + [ConfigLexicon::BASE_URL, 'example.com', 'example.com'], + [ConfigLexicon::USER_THEMING_DISABLED, 'no', false], + [ConfigLexicon::USER_THEMING_DISABLED, 'true', true], + ]; + } + + #[\PHPUnit\Framework\Attributes\DataProvider('setTypesProvider')] + public function testSetTypes(string $setting, string $value, mixed $expected): void { + $setValue = null; + $cb = function ($setting, $value) use (&$setValue) { + if ($setting !== ConfigLexicon::CACHE_BUSTER) { + $setValue = $value; + } + return true; + }; + $this->appConfig + ->method('setAppValueBool') + ->willReturnCallback($cb); + $this->appConfig + ->method('setAppValueString') + ->willReturnCallback($cb); + $this->appConfig + ->method('setAppValueInt') + ->willReturnCallback($cb); + + $this->template->set($setting, $value); + $this->assertEquals($expected, $setValue); + } }