diff --git a/src/Core/Config/Cache/ConfigCache.php b/src/Core/Config/Cache/ConfigCache.php index c3cec19e2..441cdee81 100644 --- a/src/Core/Config/Cache/ConfigCache.php +++ b/src/Core/Config/Cache/ConfigCache.php @@ -95,8 +95,8 @@ class ConfigCache implements IConfigCache, IPConfigCache if ($this->hidePasswordOutput && $key == 'password' && - !empty($value)) { - $this->config[$cat][$key] = new HiddenString($value); + !empty($value) && is_string($value)) { + $this->config[$cat][$key] = new HiddenString((string) $value); } else { $this->config[$cat][$key] = $value; } diff --git a/tests/src/Core/Config/Cache/ConfigCacheTest.php b/tests/src/Core/Config/Cache/ConfigCacheTest.php index 11845379d..f8f81f9ee 100644 --- a/tests/src/Core/Config/Cache/ConfigCacheTest.php +++ b/tests/src/Core/Config/Cache/ConfigCacheTest.php @@ -315,14 +315,37 @@ class ConfigCacheTest extends MockedTest */ public function testEmptyPassword() { - $confiCache = new ConfigCache([ + $configCache = new ConfigCache([ 'database' => [ 'password' => '', 'username' => '', ] ]); - $this->assertEmpty($confiCache->get('database', 'password')); - $this->assertEmpty($confiCache->get('database', 'username')); + $this->assertEmpty($configCache->get('database', 'password')); + $this->assertEmpty($configCache->get('database', 'username')); + } + + public function testWrongTypePassword() + { + $configCache = new ConfigCache([ + 'database' => [ + 'password' => new \stdClass(), + 'username' => '', + ] + ]); + + $this->assertNotEmpty($configCache->get('database', 'password')); + $this->assertEmpty($configCache->get('database', 'username')); + + $configCache = new ConfigCache([ + 'database' => [ + 'password' => 23, + 'username' => '', + ] + ]); + + $this->assertEquals(23, $configCache->get('database', 'password')); + $this->assertEmpty($configCache->get('database', 'username')); } }