]> git.mxchange.org Git - friendica.git/commitdiff
Splitting ConfigCache & PConfigCache
authorPhilipp Holzer <admin+github@philipp.info>
Fri, 12 Jul 2019 20:38:50 +0000 (22:38 +0200)
committerPhilipp Holzer <admin+github@philipp.info>
Fri, 12 Jul 2019 20:53:37 +0000 (22:53 +0200)
- Remove IConfigCache & IPConfigCache
- Add new PConfigCache
- Add missing Logger::init() (bugfixing tests)

27 files changed:
src/App.php
src/Console/AutomaticInstallation.php
src/Core/Config/Cache/ConfigCache.php
src/Core/Config/Cache/IConfigCache.php [deleted file]
src/Core/Config/Cache/IPConfigCache.php [deleted file]
src/Core/Config/Cache/PConfigCache.php [new file with mode: 0644]
src/Core/Config/Configuration.php
src/Core/Config/PConfiguration.php
src/Core/Installer.php
src/Database/Database.php
src/Factory/ConfigFactory.php
src/Factory/DBFactory.php
src/Factory/DependencyFactory.php
src/Factory/ProfilerFactory.php
src/Module/Install.php
src/Util/Config/ConfigFileLoader.php
tests/Util/AppMockTrait.php
tests/include/ApiTest.php
tests/src/Core/Cache/MemoryCacheTest.php
tests/src/Core/Config/Cache/ConfigCacheTest.php
tests/src/Core/Config/Cache/PConfigCacheTest.php [new file with mode: 0644]
tests/src/Core/Config/ConfigurationTest.php
tests/src/Core/Config/PConfigurationTest.php
tests/src/Core/InstallerTest.php
tests/src/Core/Lock/LockTest.php
tests/src/Database/DBATest.php
tests/src/Database/DBStructureTest.php

index 7c2a003c79575141215539267050c3e1008f328f..8b2d50512b80b695f3b770db337e5e395e7e5791 100644 (file)
@@ -8,7 +8,7 @@ use Detection\MobileDetect;
 use DOMDocument;
 use DOMXPath;
 use Exception;
-use Friendica\Core\Config\Cache\IConfigCache;
+use Friendica\Core\Config\Cache\ConfigCache;
 use Friendica\Core\Config\Configuration;
 use Friendica\Core\Hook;
 use Friendica\Core\Theme;
@@ -131,7 +131,7 @@ class App
        /**
         * Returns the current config cache of this node
         *
-        * @return IConfigCache
+        * @return ConfigCache
         */
        public function getConfigCache()
        {
index 718573d27a80ce37cc9f116a3041623e006ea157..2978ed1ecfe7a01f5daf856d44c2177de9b8b808 100644 (file)
@@ -207,12 +207,12 @@ HELP;
 
        /**
         * @param Installer                 $installer   The Installer instance
-        * @param Config\Cache\IConfigCache $configCache The config cache
+        * @param Config\Cache\ConfigCache $configCache The config cache
         *
         * @return bool true if checks were successfully, otherwise false
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       private function runBasicChecks(Installer $installer, Config\Cache\IConfigCache $configCache)
+       private function runBasicChecks(Installer $installer, Config\Cache\ConfigCache $configCache)
        {
                $checked = true;
 
index 6679b55ab91c8aebe96f2172273fb717fc0ef4c5..b8175452bf4b8181c44d9db3c9d6ccd9f1ac7ef9 100644 (file)
@@ -9,7 +9,7 @@ use ParagonIE\HiddenString\HiddenString;
  * Initial, all *.config.php files are loaded into this cache with the
  * ConfigFileLoader ( @see ConfigFileLoader )
  */
-class ConfigCache implements IConfigCache, IPConfigCache
+class ConfigCache
 {
        /**
         * @var array
@@ -22,7 +22,7 @@ class ConfigCache implements IConfigCache, IPConfigCache
        private $hidePasswordOutput;
 
        /**
-        * @param array $config    A initial config array
+        * @param array $config             A initial config array
         * @param bool  $hidePasswordOutput True, if cache variables should take extra care of password values
         */
        public function __construct(array $config = [], $hidePasswordOutput = true)
@@ -32,7 +32,11 @@ class ConfigCache implements IConfigCache, IPConfigCache
        }
 
        /**
-        * {@inheritdoc}
+        * Tries to load the specified configuration array into the config array.
+        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
+        *
+        * @param array $config
+        * @param bool  $overwrite Force value overwrite if the config key already exists
         */
        public function load(array $config, $overwrite = false)
        {
@@ -57,7 +61,12 @@ class ConfigCache implements IConfigCache, IPConfigCache
        }
 
        /**
-        * {@inheritdoc}
+        * Gets a value from the config cache.
+        *
+        * @param string $cat Config category
+        * @param string $key Config key
+        *
+        * @return null|mixed Returns the value of the Config entry or null if not set
         */
        public function get($cat, $key = null)
        {
@@ -85,7 +94,13 @@ class ConfigCache implements IConfigCache, IPConfigCache
        }
 
        /**
-        * {@inheritdoc}
+        * Sets a value in the config cache. Accepts raw output from the config table
+        *
+        * @param string $cat   Config category
+        * @param string $key   Config key
+        * @param mixed  $value Value to set
+        *
+        * @return bool True, if the value is set
         */
        public function set($cat, $key, $value)
        {
@@ -104,7 +119,12 @@ class ConfigCache implements IConfigCache, IPConfigCache
        }
 
        /**
-        * {@inheritdoc}
+        * Deletes a value from the config cache.
+        *
+        * @param string $cat Config category
+        * @param string $key Config key
+        *
+        * @return bool true, if deleted
         */
        public function delete($cat, $key)
        {
@@ -119,80 +139,6 @@ class ConfigCache implements IConfigCache, IPConfigCache
                }
        }
 
-       /**
-        * {@inheritdoc}
-        */
-       public function loadP($uid, array $config)
-       {
-               $categories = array_keys($config);
-
-               foreach ($categories as $category) {
-                       if (isset($config[$category]) && is_array($config[$category])) {
-
-                               $keys = array_keys($config[$category]);
-
-                               foreach ($keys as $key) {
-                                       $value = $config[$category][$key];
-                                       if (isset($value)) {
-                                               $this->setP($uid, $category, $key, $value);
-                                       }
-                               }
-                       }
-               }
-       }
-
-       /**
-        * {@inheritdoc}
-        */
-       public function getP($uid, $cat, $key = null)
-       {
-               if (isset($this->config[$uid][$cat][$key])) {
-                       return $this->config[$uid][$cat][$key];
-               } elseif (!isset($key) && isset($this->config[$uid][$cat])) {
-                       return $this->config[$uid][$cat];
-               } else {
-                       return null;
-               }
-       }
-
-       /**
-        * {@inheritdoc}
-        */
-       public function setP($uid, $cat, $key, $value)
-       {
-               if (!isset($this->config[$uid]) || !is_array($this->config[$uid])) {
-                       $this->config[$uid] = [];
-               }
-
-               if (!isset($this->config[$uid][$cat])) {
-                       $this->config[$uid][$cat] = [];
-               }
-
-               $this->config[$uid][$cat][$key] = $value;
-
-               return true;
-       }
-
-       /**
-        * {@inheritdoc}
-        */
-       public function deleteP($uid, $cat, $key)
-       {
-               if (isset($this->config[$uid][$cat][$key])) {
-                       unset($this->config[$uid][$cat][$key]);
-                       if (count($this->config[$uid][$cat]) == 0) {
-                               unset($this->config[$uid][$cat]);
-                               if (count($this->config[$uid]) == 0) {
-                                       unset($this->config[$uid]);
-                               }
-                       }
-
-                       return true;
-               } else {
-                       return false;
-               }
-       }
-
        /**
         * Returns the whole configuration
         *
diff --git a/src/Core/Config/Cache/IConfigCache.php b/src/Core/Config/Cache/IConfigCache.php
deleted file mode 100644 (file)
index 499bd31..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-namespace Friendica\Core\Config\Cache;
-
-/**
- * The interface for a system-wide ConfigCache
- */
-interface IConfigCache
-{
-       /**
-        * Tries to load the specified configuration array into the config array.
-        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
-        *
-        * @param array $config
-        * @param bool  $overwrite Force value overwrite if the config key already exists
-        */
-       function load(array $config, $overwrite = false);
-
-       /**
-        * Gets a value from the config cache.
-        *
-        * @param string $cat     Config category
-        * @param string $key     Config key
-        *
-        * @return null|mixed Returns the value of the Config entry or null if not set
-        */
-       function get($cat, $key = null);
-
-       /**
-        * Sets a value in the config cache. Accepts raw output from the config table
-        *
-        * @param string $cat   Config category
-        * @param string $key   Config key
-        * @param mixed  $value Value to set
-        *
-        * @return bool True, if the value is set
-        */
-       function set($cat, $key, $value);
-
-       /**
-        * Deletes a value from the config cache.
-        *
-        * @param string $cat  Config category
-        * @param string $key  Config key
-        *
-        * @return bool true, if deleted
-        */
-       function delete($cat, $key);
-
-       /**
-        * Returns the whole configuration cache
-        *
-        * @return array
-        */
-       function getAll();
-}
diff --git a/src/Core/Config/Cache/IPConfigCache.php b/src/Core/Config/Cache/IPConfigCache.php
deleted file mode 100644 (file)
index 30076a2..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Friendica\Core\Config\Cache;
-
-/**
- * The interface for a user-specific config cache
- */
-interface IPConfigCache
-{
-       /**
-        * Tries to load the specified configuration array into the user specific config array.
-        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
-        *
-        * @param int   $uid
-        * @param array $config
-        */
-       function loadP($uid, array $config);
-
-       /**
-        * Retrieves a value from the user config cache
-        *
-        * @param int    $uid     User Id
-        * @param string $cat     Config category
-        * @param string $key     Config key
-        *
-        * @return null|string The value of the config entry or null if not set
-        */
-       function getP($uid, $cat, $key = null);
-
-       /**
-        * Sets a value in the user config cache
-        *
-        * Accepts raw output from the pconfig table
-        *
-        * @param int    $uid   User Id
-        * @param string $cat   Config category
-        * @param string $key   Config key
-        * @param mixed  $value Value to set
-        */
-       function setP($uid, $cat, $key, $value);
-
-       /**
-        * Deletes a value from the user config cache
-        *
-        * @param int    $uid User Id
-        * @param string $cat Config category
-        * @param string $key Config key
-        *
-        * @return bool true, if deleted
-        */
-       function deleteP($uid, $cat, $key);
-
-       /**
-        * Returns the whole configuration cache
-        *
-        * @return array
-        */
-       function getAll();
-}
diff --git a/src/Core/Config/Cache/PConfigCache.php b/src/Core/Config/Cache/PConfigCache.php
new file mode 100644 (file)
index 0000000..98adfa2
--- /dev/null
@@ -0,0 +1,173 @@
+<?php
+
+namespace Friendica\Core\Config\Cache;
+
+use ParagonIE\HiddenString\HiddenString;
+
+/**
+ * The Friendica config cache for users
+ */
+class PConfigCache
+{
+       /**
+        * @var array
+        */
+       private $config;
+
+       /**
+        * @var bool
+        */
+       private $hidePasswordOutput;
+
+       /**
+        * @param bool  $hidePasswordOutput True, if cache variables should take extra care of password values
+        */
+       public function __construct($hidePasswordOutput = true)
+       {
+               $this->hidePasswordOutput = $hidePasswordOutput;
+       }
+
+       /**
+        * Tries to load the specified configuration array into the user specific config array.
+        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
+        *
+        * @param int   $uid
+        * @param array $config
+        */
+       public function load($uid, array $config)
+       {
+               $categories = array_keys($config);
+
+               foreach ($categories as $category) {
+                       if (isset($config[$category]) && is_array($config[$category])) {
+
+                               $keys = array_keys($config[$category]);
+
+                               foreach ($keys as $key) {
+                                       $value = $config[$category][$key];
+                                       if (isset($value)) {
+                                               $this->set($uid, $category, $key, $value);
+                                       }
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Retrieves a value from the user config cache
+        *
+        * @param int    $uid     User Id
+        * @param string $cat     Config category
+        * @param string $key     Config key
+        *
+        * @return null|string The value of the config entry or null if not set
+        */
+       public function get($uid, $cat, $key = null)
+       {
+               if (isset($this->config[$uid][$cat][$key])) {
+                       return $this->config[$uid][$cat][$key];
+               } elseif (!isset($key) && isset($this->config[$uid][$cat])) {
+                       return $this->config[$uid][$cat];
+               } else {
+                       return null;
+               }
+       }
+
+       /**
+        * Sets a value in the user config cache
+        *
+        * Accepts raw output from the pconfig table
+        *
+        * @param int    $uid   User Id
+        * @param string $cat   Config category
+        * @param string $key   Config key
+        * @param mixed  $value Value to set
+        *
+        * @return bool Set successful
+        */
+       public function set($uid, $cat, $key, $value)
+       {
+               if (!isset($this->config[$uid]) || !is_array($this->config[$uid])) {
+                       $this->config[$uid] = [];
+               }
+
+               if (!isset($this->config[$uid][$cat])) {
+                       $this->config[$uid][$cat] = [];
+               }
+
+               if ($this->hidePasswordOutput &&
+                   $key == 'password' &&
+                   !empty($value) && is_string($value)) {
+                       $this->config[$uid][$cat][$key] = new HiddenString((string) $value);
+               } else {
+                       $this->config[$uid][$cat][$key] = $value;
+               }
+
+
+               return true;
+       }
+
+       /**
+        * Deletes a value from the user config cache
+        *
+        * @param int    $uid User Id
+        * @param string $cat Config category
+        * @param string $key Config key
+        *
+        * @return bool true, if deleted
+        */
+       public function delete($uid, $cat, $key)
+       {
+               if (isset($this->config[$uid][$cat][$key])) {
+                       unset($this->config[$uid][$cat][$key]);
+                       if (count($this->config[$uid][$cat]) == 0) {
+                               unset($this->config[$uid][$cat]);
+                               if (count($this->config[$uid]) == 0) {
+                                       unset($this->config[$uid]);
+                               }
+                       }
+
+                       return true;
+               } else {
+                       return false;
+               }
+       }
+
+       /**
+        * Returns the whole configuration
+        *
+        * @return array The configuration
+        */
+       public function getAll()
+       {
+               return $this->config;
+       }
+
+       /**
+        * Returns an array with missing categories/Keys
+        *
+        * @param array $config The array to check
+        *
+        * @return array
+        */
+       public function keyDiff(array $config)
+       {
+               $return = [];
+
+               $categories = array_keys($config);
+
+               foreach ($categories as $category) {
+                       if (is_array($config[$category])) {
+                               $keys = array_keys($config[$category]);
+
+                               foreach ($keys as $key) {
+                                       if (!isset($this->config[$category][$key])) {
+                                               $return[$category][$key] = $config[$category][$key];
+                                       }
+                               }
+                       }
+               }
+
+               return $return;
+       }
+}
index 18191d0429c45bfd2fb5fc9f860fb71eaca2b008..1489d91de04823104178c0f954f6d04e5249e212 100644 (file)
@@ -11,7 +11,7 @@ namespace Friendica\Core\Config;
 class Configuration
 {
        /**
-        * @var Cache\IConfigCache
+        * @var Cache\ConfigCache
         */
        private $configCache;
 
@@ -21,10 +21,10 @@ class Configuration
        private $configAdapter;
 
        /**
-        * @param Cache\IConfigCache     $configCache   The configuration cache (based on the config-files)
+        * @param Cache\ConfigCache     $configCache   The configuration cache (based on the config-files)
         * @param Adapter\IConfigAdapter $configAdapter The configuration DB-backend
         */
-       public function __construct(Cache\IConfigCache $configCache, Adapter\IConfigAdapter $configAdapter)
+       public function __construct(Cache\ConfigCache $configCache, Adapter\IConfigAdapter $configAdapter)
        {
                $this->configCache = $configCache;
                $this->configAdapter = $configAdapter;
@@ -35,7 +35,7 @@ class Configuration
        /**
         * Returns the Config Cache
         *
-        * @return Cache\IConfigCache
+        * @return Cache\ConfigCache
         */
        public function getCache()
        {
index 0d3b0c178c6cb24c02a53c8ec54454e3a096e220..79ed1a61e6d0fe6eaeb429b3ed08e42939d02bb0 100644 (file)
@@ -12,7 +12,7 @@ namespace Friendica\Core\Config;
 class PConfiguration
 {
        /**
-        * @var Cache\IPConfigCache
+        * @var Cache\PConfigCache
         */
        private $configCache;
 
@@ -22,10 +22,10 @@ class PConfiguration
        private $configAdapter;
 
        /**
-        * @param Cache\IPConfigCache     $configCache   The configuration cache
+        * @param Cache\PConfigCache     $configCache   The configuration cache
         * @param Adapter\IPConfigAdapter $configAdapter The configuration DB-backend
         */
-       public function __construct(Cache\IPConfigCache $configCache, Adapter\IPConfigAdapter $configAdapter)
+       public function __construct(Cache\PConfigCache $configCache, Adapter\IPConfigAdapter $configAdapter)
        {
                $this->configCache = $configCache;
                $this->configAdapter = $configAdapter;
@@ -50,7 +50,7 @@ class PConfiguration
                }
 
                // load the whole category out of the DB into the cache
-               $this->configCache->loadP($uid, $this->configAdapter->load($uid, $cat));
+               $this->configCache->load($uid, $this->configAdapter->load($uid, $cat));
        }
 
        /**
@@ -78,13 +78,13 @@ class PConfiguration
                        $dbValue = $this->configAdapter->get($uid, $cat, $key);
 
                        if (isset($dbValue)) {
-                               $this->configCache->setP($uid, $cat, $key, $dbValue);
+                               $this->configCache->set($uid, $cat, $key, $dbValue);
                                return $dbValue;
                        }
                }
 
                // use the config cache for return
-               $result = $this->configCache->getP($uid, $cat, $key);
+               $result = $this->configCache->get($uid, $cat, $key);
                return (isset($result)) ? $result : $default_value;
        }
 
@@ -106,7 +106,7 @@ class PConfiguration
        public function set($uid, $cat, $key, $value)
        {
                // set the cache first
-               $cached = $this->configCache->setP($uid, $cat, $key, $value);
+               $cached = $this->configCache->set($uid, $cat, $key, $value);
 
                // If there is no connected adapter, we're finished
                if (!$this->configAdapter->isConnected()) {
@@ -133,7 +133,7 @@ class PConfiguration
         */
        public function delete($uid, $cat, $key)
        {
-               $cacheRemoved = $this->configCache->deleteP($uid, $cat, $key);
+               $cacheRemoved = $this->configCache->delete($uid, $cat, $key);
 
                if (!$this->configAdapter->isConnected()) {
                        return $cacheRemoved;
index f49dde4e560adf9f136941e1fedf33287a80d93b..de041773ef6b88b7525b7a35cad64ce043e9e798 100644 (file)
@@ -6,7 +6,7 @@ namespace Friendica\Core;
 
 use DOMDocument;
 use Exception;
-use Friendica\Core\Config\Cache\IConfigCache;
+use Friendica\Core\Config\Cache\ConfigCache;
 use Friendica\Database\DBStructure;
 use Friendica\Factory\DBFactory;
 use Friendica\Object\Image;
@@ -130,12 +130,12 @@ class Installer
         * - Creates `config/local.config.php`
         * - Installs Database Structure
         *
-        * @param IConfigCache $configCache The config cache with all config relevant information
+        * @param ConfigCache $configCache The config cache with all config relevant information
         *
         * @return bool true if the config was created, otherwise false
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public function createConfig(IConfigCache $configCache)
+       public function createConfig(ConfigCache $configCache)
        {
                $basepath = $configCache->get('system', 'basepath');
 
@@ -592,13 +592,13 @@ class Installer
        /**
         * Checking the Database connection and if it is available for the current installation
         *
-        * @param IConfigCache $configCache The configuration cache
+        * @param ConfigCache $configCache The configuration cache
         * @param Profiler    $profiler    The profiler of this app
         *
         * @return bool true if the check was successful, otherwise false
         * @throws Exception
         */
-       public function checkDB(IConfigCache $configCache, Profiler $profiler)
+       public function checkDB(ConfigCache $configCache, Profiler $profiler)
        {
                $database = DBFactory::init($configCache, $profiler, [], new VoidLogger());
 
@@ -620,12 +620,12 @@ class Installer
        /**
         * Setup the default cache for a new installation
         *
-        * @param IConfigCache $configCache The configuration cache
+        * @param ConfigCache $configCache The configuration cache
         * @param string       $basePath    The determined basepath
         *
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public function setUpCache(IConfigCache $configCache, $basePath)
+       public function setUpCache(ConfigCache $configCache, $basePath)
        {
                $configCache->set('config', 'php_path'  , $this->getPHPPath());
                $configCache->set('system', 'basepath'  , $basePath);
index 38406b6bad09ed9e7e82aabc0598342dd0c434fa..14381ae922d791d8a1079a42cfde9cfa9317575a 100644 (file)
@@ -2,7 +2,7 @@
 
 namespace Friendica\Database;
 
-use Friendica\Core\Config\Cache\IConfigCache;
+use Friendica\Core\Config\Cache\ConfigCache;
 use Friendica\Core\System;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Profiler;
@@ -25,7 +25,7 @@ class Database
        private $connected = false;
 
        /**
-        * @var IConfigCache
+        * @var ConfigCache
         */
        private $configCache;
        /**
@@ -55,7 +55,7 @@ class Database
        private $db_name;
        private $db_charset;
 
-       public function __construct(IConfigCache $configCache, Profiler $profiler, LoggerInterface $logger, $serveraddr, $user, HiddenString $pass, $db, $charset = null)
+       public function __construct(ConfigCache $configCache, Profiler $profiler, LoggerInterface $logger, $serveraddr, $user, HiddenString $pass, $db, $charset = null)
        {
                // We are storing these values for being able to perform a reconnect
                $this->configCache   = $configCache;
index 1f9662bddbdf1f15095c9f7dcc86ac4fc8c816ec..3575ca63ea5f904d814bb599e4b30fbc9efc3145 100644 (file)
@@ -45,12 +45,12 @@ class ConfigFactory
        }
 
        /**
-        * @param Cache\ConfigCache  $configCache The config cache of this adapter
+        * @param Cache\PConfigCache  $configCache The config cache of this adapter
         * @param int                $uid         The UID of the current user
         *
         * @return Config\PConfiguration
         */
-       public static function createPConfig(Cache\ConfigCache $configCache, $uid = null)
+       public static function createPConfig(Cache\PConfigCache $configCache, $uid = null)
        {
                if ($configCache->get('system', 'config_adapter') === 'preload') {
                        $configAdapter = new Adapter\PreloadPConfigAdapter($uid);
index 3a972c7128b636f784af3df456fc68e4ee770d65..f24961c3f21d55a8e9f554b1c033d4a020174767 100644 (file)
@@ -13,14 +13,14 @@ class DBFactory
        /**
         * Initialize the DBA connection
         *
-        * @param Cache\IConfigCache $configCache The configuration cache
-        * @param Profiler           $profiler    The profiler
-        * @param array              $server      The $_SERVER variables
+        * @param Cache\ConfigCache $configCache The configuration cache
+        * @param Profiler          $profiler    The profiler
+        * @param array             $server      The $_SERVER variables
         *
         * @return Database\Database
         * @throws \Exception if connection went bad
         */
-       public static function init(Cache\IConfigCache $configCache, Profiler $profiler, array $server)
+       public static function init(Cache\ConfigCache $configCache, Profiler $profiler, array $server)
        {
                $db_host = $configCache->get('database', 'hostname');
                $db_user = $configCache->get('database', 'username');
index 5d92a5020693be7863aceabdf91713cc8964252b..607f34b9ee8d60ed40a6f0cde42fcbd3ed62f330 100644 (file)
@@ -3,6 +3,7 @@
 namespace Friendica\Factory;
 
 use Friendica\App;
+use Friendica\Core\Config\Cache\PConfigCache;
 use Friendica\Factory;
 use Friendica\Util\BasePath;
 use Friendica\Util\BaseURL;
@@ -32,7 +33,7 @@ class DependencyFactory
                $database = Factory\DBFactory::init($configCache, $profiler, $_SERVER);
                $config = Factory\ConfigFactory::createConfig($configCache);
                // needed to call PConfig::init()
-               Factory\ConfigFactory::createPConfig($configCache);
+               Factory\ConfigFactory::createPConfig(new PConfigCache());
                $logger = Factory\LoggerFactory::create($channel, $database, $config, $profiler);
                Factory\LoggerFactory::createDev($channel, $config, $profiler);
                $baseURL = new BaseURL($config, $_SERVER);
index 19c96e8ca216eab37c4b30f567e56c46705fc370..522e8fee0940dbac4b3ad7eb34cbae14f4a67b16 100644 (file)
@@ -2,7 +2,7 @@
 
 namespace Friendica\Factory;
 
-use Friendica\Core\Config\Cache\IConfigCache;
+use Friendica\Core\Config\Cache\ConfigCache;
 use Friendica\Util\Profiler;
 
 class ProfilerFactory
@@ -10,11 +10,11 @@ class ProfilerFactory
        /**
         * Creates a Profiler for the current execution
         *
-        * @param IConfigCache     $configCache The configuration cache
+        * @param ConfigCache     $configCache The configuration cache
         *
         * @return Profiler
         */
-       public static function create(IConfigCache $configCache)
+       public static function create(ConfigCache $configCache)
        {
                $enabled = $configCache->get('system', 'profiler');
                $enabled = isset($enabled) && $enabled !== '0';
index 54c10534ddeafd27b976fa178d674b26a56edbbe..51a63611b6ee553f9745067b1a8c8d3c09c492d3 100644 (file)
@@ -5,7 +5,6 @@ namespace Friendica\Module;
 use Friendica\App;
 use Friendica\BaseModule;
 use Friendica\Core;
-use Friendica\Core\Config\Cache\IConfigCache;
 use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
 use Friendica\Util\BasePath;
@@ -334,13 +333,13 @@ class Install extends BaseModule
        /**
         * Checks the $_POST settings and updates the config Cache for it
         *
-        * @param IConfigCache $configCache The current config cache
-        * @param array        $post        The $_POST data
-        * @param string       $cat         The category of the setting
-        * @param string       $key         The key of the setting
-        * @param null|string  $default     The default value
+        * @param Core\Config\Cache\ConfigCache  $configCache The current config cache
+        * @param array       $post        The $_POST data
+        * @param string      $cat         The category of the setting
+        * @param string      $key         The key of the setting
+        * @param null|string $default     The default value
         */
-       private static function checkSetting(IConfigCache $configCache, array $post, $cat, $key, $default = null)
+       private static function checkSetting(Core\Config\Cache\ConfigCache $configCache, array $post, $cat, $key, $default = null)
        {
                $configCache->set($cat, $key,
                        Strings::escapeTags(
index 3d4f31a9d1fca798f61cbac072b19ce2fb398825..cc6f89ce9c578c1efcbae73f267d25b02f627a24 100644 (file)
@@ -4,10 +4,10 @@ namespace Friendica\Util\Config;
 
 use Friendica\App;
 use Friendica\Core\Addon;
-use Friendica\Core\Config\Cache\IConfigCache;
+use Friendica\Core\Config\Cache\ConfigCache;
 
 /**
- * The ConfigFileLoader loads config-files and stores them in a IConfigCache ( @see IConfigCache )
+ * The ConfigFileLoader loads config-files and stores them in a ConfigCache ( @see ConfigCache )
  *
  * It is capable of loading the following config files:
  * - *.config.php   (current)
@@ -33,12 +33,12 @@ class ConfigFileLoader extends ConfigFileManager
         * First loads the default value for all the configuration keys, then the legacy configuration files, then the
         * expected local.config.php
         *
-        * @param IConfigCache $config The config cache to load to
-        * @param bool         $raw    Setup the raw config format
+        * @param ConfigCache $config The config cache to load to
+        * @param bool        $raw    Setup the raw config format
         *
         * @throws \Exception
         */
-       public function setupCache(IConfigCache $config, $raw = false)
+       public function setupCache(ConfigCache $config, $raw = false)
        {
                $config->load($this->loadCoreConfig('defaults'));
                $config->load($this->loadCoreConfig('settings'));
index 03e8085479b79164b9898aeec5b6dacee84b71aa..0ca625ee0e5b8ee98ab5737491e478c0dc666064 100644 (file)
@@ -43,7 +43,7 @@ trait AppMockTrait
         */
        public function mockApp(vfsStreamDirectory $root, $raw = false)
        {
-               $this->configMock = \Mockery::mock(Config\Cache\IConfigCache::class);
+               $this->configMock = \Mockery::mock(Config\Cache\ConfigCache::class);
                $this->mode = \Mockery::mock(App\Mode::class);
                $configAdapterMock = \Mockery::mock(Config\Adapter\IConfigAdapter::class);
                // Disable the adapter
index a0c1e47f4c9865bb039dfb87498c9b95f7325604..fb4bb585f91f355a386159779f1465da445147f2 100644 (file)
@@ -57,7 +57,7 @@ class ApiTest extends DatabaseTest
                $profiler = Factory\ProfilerFactory::create($configCache);
                $database = Factory\DBFactory::init($configCache, $profiler, $_SERVER);
                $config = Factory\ConfigFactory::createConfig($configCache);
-               Factory\ConfigFactory::createPConfig($configCache);
+               Factory\ConfigFactory::createPConfig(new Config\Cache\PConfigCache());
                $logger = Factory\LoggerFactory::create('test', $database, $config, $profiler);
                $baseUrl = new BaseURL($config, $_SERVER);
                $this->app = new App($database, $config, $mode, $router, $baseUrl, $logger, $profiler, false);
index 3bf2966a1331e304dad7188f50815079a0b719f4..7ddcc45727cfcb9ec110b6bb86a881ce9166e0ab 100644 (file)
@@ -3,6 +3,8 @@
 namespace Friendica\Test\src\Core\Cache;
 
 use Friendica\Core\Cache\IMemoryCacheDriver;
+use Friendica\Core\Logger;
+use Psr\Log\NullLogger;
 
 abstract class MemoryCacheTest extends CacheTest
 {
@@ -13,6 +15,8 @@ abstract class MemoryCacheTest extends CacheTest
 
        protected function setUp()
        {
+               Logger::init(new NullLogger());
+
                parent::setUp();
                if (!($this->instance instanceof IMemoryCacheDriver)) {
                        throw new \Exception('MemoryCacheTest unsupported');
index 9c93c44f26c3fda466a2250d54706069239ca0b3..db92cc74365430da33a2e70f7a49ac2f5967f918 100644 (file)
@@ -29,15 +29,11 @@ class ConfigCacheTest extends MockedTest
                ];
        }
 
-       private function assertConfigValues($data, ConfigCache $configCache, $uid = null)
+       private function assertConfigValues($data, ConfigCache $configCache)
        {
                foreach ($data as $cat => $values) {
                        foreach ($values as $key => $value) {
-                               if (isset($uid)) {
-                                       $this->assertEquals($data[$cat][$key], $configCache->getP($uid, $cat, $key));
-                               } else {
-                                       $this->assertEquals($data[$cat][$key], $configCache->get($cat, $key));
-                               }
+                               $this->assertEquals($data[$cat][$key], $configCache->get($cat, $key));
                        }
                }
        }
@@ -180,73 +176,6 @@ class ConfigCacheTest extends MockedTest
                $this->assertEmpty($configCache->getAll());
        }
 
-       /**
-        * Test the setP() and getP() methods
-        * @dataProvider dataTests
-        */
-       public function testSetGetP($data)
-       {
-               $configCache = new ConfigCache();
-               $uid = 345;
-
-               foreach ($data as $cat => $values) {
-                       foreach ($values as $key => $value) {
-                               $configCache->setP($uid, $cat, $key, $value);
-                       }
-               }
-
-               $this->assertConfigValues($data, $configCache, $uid);
-       }
-
-
-       /**
-        * Test the getP() method with a category
-        */
-       public function testGetPCat()
-       {
-               $configCache = new ConfigCache();
-               $uid = 345;
-
-               $configCache->loadP($uid, [
-                       'system' => [
-                               'key1' => 'value1',
-                               'key2' => 'value2',
-                       ],
-                       'config' => [
-                               'key3' => 'value3',
-                       ],
-               ]);
-
-               $this->assertEquals([
-                       'key1' => 'value1',
-                       'key2' => 'value2',
-               ], $configCache->get($uid, 'system'));
-       }
-
-       /**
-        * Test the deleteP() method
-        * @dataProvider dataTests
-        */
-       public function testDeleteP($data)
-       {
-               $configCache = new ConfigCache();
-               $uid = 345;
-
-               foreach ($data as $cat => $values) {
-                       foreach ($values as $key => $value) {
-                               $configCache->setP($uid, $cat, $key, $value);
-                       }
-               }
-
-               foreach ($data as $cat => $values) {
-                       foreach ($values as $key => $value) {
-                               $configCache->deleteP($uid, $cat, $key);
-                       }
-               }
-
-               $this->assertEmpty($configCache->getAll());
-       }
-
        /**
         * Test the keyDiff() method with result
         * @dataProvider dataTests
diff --git a/tests/src/Core/Config/Cache/PConfigCacheTest.php b/tests/src/Core/Config/Cache/PConfigCacheTest.php
new file mode 100644 (file)
index 0000000..b8feec4
--- /dev/null
@@ -0,0 +1,252 @@
+<?php
+
+namespace Friendica\Test\src\Core\Config\Cache;
+
+use Friendica\Core\Config\Cache\PConfigCache;
+use Friendica\Test\MockedTest;
+
+class PConfigCacheTest extends MockedTest
+{
+       public function dataTests()
+       {
+               return [
+                       'normal' => [
+                               'data' => [
+                                       'system' => [
+                                               'test'      => 'it',
+                                               'boolTrue'  => true,
+                                               'boolFalse' => false,
+                                               'int'       => 235,
+                                               'dec'       => 2.456,
+                                               'array'     => ['1', 2, '3', true, false],
+                                       ],
+                                       'config' => [
+                                               'a' => 'value',
+                                       ],
+                               ]
+                       ]
+               ];
+       }
+
+       private function assertConfigValues($data, PConfigCache $configCache, $uid)
+       {
+               foreach ($data as $cat => $values) {
+                       foreach ($values as $key => $value) {
+                               $this->assertEquals($data[$cat][$key], $configCache->get($uid, $cat, $key));
+                       }
+               }
+       }
+
+       /**
+        * Test the setP() and getP() methods
+        *
+        * @dataProvider dataTests
+        */
+       public function testSetGet($data)
+       {
+               $configCache = new PConfigCache();
+               $uid         = 345;
+
+               foreach ($data as $cat => $values) {
+                       foreach ($values as $key => $value) {
+                               $configCache->set($uid, $cat, $key, $value);
+                       }
+               }
+
+               $this->assertConfigValues($data, $configCache, $uid);
+       }
+
+
+       /**
+        * Test the getP() method with a category
+        */
+       public function testGetCat()
+       {
+               $configCache = new PConfigCache();
+               $uid         = 345;
+
+               $configCache->load($uid, [
+                       'system' => [
+                               'key1' => 'value1',
+                               'key2' => 'value2',
+                       ],
+                       'config' => [
+                               'key3' => 'value3',
+                       ],
+               ]);
+
+               $this->assertEquals([
+                       'key1' => 'value1',
+                       'key2' => 'value2',
+               ], $configCache->get($uid, 'system'));
+       }
+
+       /**
+        * Test the deleteP() method
+        *
+        * @dataProvider dataTests
+        */
+       public function testDelete($data)
+       {
+               $configCache = new PConfigCache();
+               $uid         = 345;
+
+               foreach ($data as $cat => $values) {
+                       foreach ($values as $key => $value) {
+                               $configCache->set($uid, $cat, $key, $value);
+                       }
+               }
+
+               foreach ($data as $cat => $values) {
+                       foreach ($values as $key => $value) {
+                               $configCache->delete($uid, $cat, $key);
+                       }
+               }
+
+               $this->assertEmpty($configCache->getAll());
+       }
+
+       /**
+        * Test the keyDiff() method with result
+        *
+        * @dataProvider dataTests
+        */
+       public function testKeyDiffWithResult($data)
+       {
+               $configCache = new PConfigCache($data);
+
+               $diffConfig = [
+                       'fakeCat' => [
+                               'fakeKey' => 'value',
+                       ]
+               ];
+
+               $this->assertEquals($diffConfig, $configCache->keyDiff($diffConfig));
+       }
+
+       /**
+        * Test the keyDiff() method without result
+        *
+        * @dataProvider dataTests
+        */
+       public function testKeyDiffWithoutResult($data)
+       {
+               $configCache = new PConfigCache();
+
+               $configCache->load(1, $data);
+
+               $diffConfig = $configCache->getAll();
+
+               $this->assertEmpty($configCache->keyDiff($diffConfig));
+       }
+
+       /**
+        * Test the default hiding of passwords inside the cache
+        */
+       public function testPasswordHide()
+       {
+               $configCache = new PConfigCache();
+
+               $configCache->load(1, [
+                       'database' => [
+                               'password' => 'supersecure',
+                               'username' => 'notsecured',
+                       ]
+               ]);
+
+               $this->assertEquals('supersecure', $configCache->get(1, 'database', 'password'));
+               $this->assertNotEquals('supersecure', print_r($configCache->get(1, 'database', 'password'), true));
+               $this->assertEquals('notsecured', print_r($configCache->get(1, 'database', 'username'), true));
+       }
+
+       /**
+        * Test disabling the hiding of passwords inside the cache
+        */
+       public function testPasswordShow()
+       {
+               $configCache = new PConfigCache(false);
+
+               $configCache->load(1, [
+                       'database' => [
+                               'password' => 'supersecure',
+                               'username' => 'notsecured',
+                       ]
+               ]);
+
+               $this->assertEquals('supersecure', $configCache->get(1, 'database', 'password'));
+               $this->assertEquals('supersecure', print_r($configCache->get(1, 'database', 'password'), true));
+               $this->assertEquals('notsecured', print_r($configCache->get(1, 'database', 'username'), true));
+       }
+
+       /**
+        * Test a empty password
+        */
+       public function testEmptyPassword()
+       {
+               $configCache = new PConfigCache();
+
+               $configCache->load(1, [
+                       'database' => [
+                               'password' => '',
+                               'username' => '',
+                       ]
+               ]);
+
+               $this->assertEmpty($configCache->get(1, 'database', 'password'));
+               $this->assertEmpty($configCache->get(1, 'database', 'username'));
+       }
+
+       public function testWrongTypePassword()
+       {
+               $configCache = new PConfigCache();
+
+               $configCache->load(1, [
+                       'database' => [
+                               'password' => new \stdClass(),
+                               'username' => '',
+                       ]
+               ]);
+
+               $this->assertNotEmpty($configCache->get(1, 'database', 'password'));
+               $this->assertEmpty($configCache->get(1, 'database', 'username'));
+
+               $configCache = new PConfigCache();
+
+               $configCache->load(1, [
+                       'database' => [
+                               'password' => 23,
+                               'username' => '',
+                       ],
+               ]);
+
+               $this->assertEquals(23, $configCache->get(1, 'database', 'password'));
+               $this->assertEmpty($configCache->get(1, 'database', 'username'));
+       }
+
+       /**
+        * Test two different UID configs and make sure that there is no overlapping possible
+        */
+       public function testTwoUid()
+       {
+               $configCache = new PConfigCache();
+
+               $configCache->load(1, [
+                       'cat1' => [
+                               'key1' => 'value1',
+                       ],
+               ]);
+
+
+               $configCache->load(2, [
+                       'cat2' => [
+                               'key2' => 'value2',
+                       ],
+               ]);
+
+               $this->assertEquals('value1', $configCache->get(1, 'cat1', 'key1'));
+               $this->assertEquals('value2', $configCache->get(2, 'cat2', 'key2'));
+
+               $this->assertNull($configCache->get(1, 'cat2', 'key2'));
+               $this->assertNull($configCache->get(2, 'cat1', 'key1'));
+       }
+}
index b07f9e6302bd0fa1f5ff8c19a5fb3f86a0de8bcd..fda69896fdcc0f6c505fb24ee9915d32dc5c0742 100644 (file)
@@ -4,7 +4,6 @@ namespace Friendica\Test\src\Core\Config;
 
 use Friendica\Core\Config\Adapter\IConfigAdapter;
 use Friendica\Core\Config\Cache\ConfigCache;
-use Friendica\Core\Config\Cache\IConfigCache;
 use Friendica\Core\Config\Configuration;
 use Friendica\Test\MockedTest;
 
@@ -35,7 +34,7 @@ class ConfigurationTest extends MockedTest
 
                $configuration = new Configuration($configCache, $configAdapter);
 
-               $this->assertInstanceOf(IConfigCache::class, $configuration->getCache());
+               $this->assertInstanceOf(ConfigCache::class, $configuration->getCache());
        }
 
        /**
index 294a73bba46a920f574651ba6c89e85d843264bb..f2f1857a69b9667daed508d061f05b26bcd92a12 100644 (file)
@@ -3,7 +3,7 @@
 namespace Friendica\Test\src\Core\Config;
 
 use Friendica\Core\Config\Adapter\IPConfigAdapter;
-use Friendica\Core\Config\Cache\ConfigCache;
+use Friendica\Core\Config\Cache\PConfigCache;
 use Friendica\Core\Config\PConfiguration;
 use Friendica\Test\MockedTest;
 
@@ -29,7 +29,7 @@ class PConfigurationTest extends MockedTest
        public function testCacheLoad()
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(true)->twice();
                // expected loading
@@ -51,7 +51,7 @@ class PConfigurationTest extends MockedTest
        public function testCacheLoadDouble()
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(true)->times(4);
                // expected loading
@@ -77,7 +77,7 @@ class PConfigurationTest extends MockedTest
        public function testSetGetWithoutDB($data)
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(false)->times(2);
 
@@ -95,7 +95,7 @@ class PConfigurationTest extends MockedTest
        public function testSetGetWithDB($data)
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(true)->times(2);
                $configAdapter->shouldReceive('isLoaded')->with($uid, 'test', 'it')->andReturn(true)->once();
@@ -114,7 +114,7 @@ class PConfigurationTest extends MockedTest
        public function testGetWrongWithoutDB()
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(false)->times(3);
 
@@ -137,7 +137,7 @@ class PConfigurationTest extends MockedTest
        public function testGetWithRefresh($data)
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(true)->times(4);
                $configAdapter->shouldReceive('isLoaded')->with($uid, 'test', 'it')->andReturn(false)->once();
@@ -168,7 +168,7 @@ class PConfigurationTest extends MockedTest
        public function testGetWithoutLoaded($data)
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(true)->times(3);
 
@@ -199,7 +199,7 @@ class PConfigurationTest extends MockedTest
        public function testDeleteWithoutDB($data)
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(false)->times(4);
 
@@ -218,7 +218,7 @@ class PConfigurationTest extends MockedTest
        public function testDeleteWithDB()
        {
                $uid = 234;
-               $configCache = new ConfigCache();
+               $configCache = new PConfigCache();
                $configAdapter = \Mockery::mock(IPConfigAdapter::class);
                $configAdapter->shouldReceive('isConnected')->andReturn(true)->times(6);
                $configAdapter->shouldReceive('set')->with($uid, 'test', 'it', 'now')->andReturn(false)->once();
index a238bf8e7d9389383ef0bc3738163c2a694d0978..738403bc4e1bb251ebdbf71d637fa1733f3dd3e8 100644 (file)
@@ -3,7 +3,7 @@
 // this is in the same namespace as Install for mocking 'function_exists'
 namespace Friendica\Core;
 
-use Friendica\Core\Config\Cache\IConfigCache;
+use Friendica\Core\Config\Cache\ConfigCache;
 use Friendica\Network\CurlResult;
 use Friendica\Object\Image;
 use Friendica\Test\MockedTest;
@@ -402,7 +402,7 @@ class InstallerTest extends MockedTest
                $this->mockL10nT();
 
                $install = new Installer();
-               $configCache = \Mockery::mock(IConfigCache::class);
+               $configCache = \Mockery::mock(ConfigCache::class);
                $configCache->shouldReceive('set')->with('config', 'php_path', \Mockery::any())->once();
                $configCache->shouldReceive('set')->with('system', 'basepath', '/test/')->once();
 
index 28f51733f428d9f7748dd0d52fa5a037a50bc047..7202058e4af4552569d6012c3fc5016c8fc822a0 100644 (file)
@@ -2,9 +2,11 @@
 
 namespace Friendica\Test\src\Core\Lock;
 
+use Friendica\Core\Logger;
 use Friendica\Test\MockedTest;
 use Friendica\Test\Util\AppMockTrait;
 use Friendica\Test\Util\VFSTrait;
+use Psr\Log\NullLogger;
 
 abstract class LockTest extends MockedTest
 {
@@ -32,6 +34,8 @@ abstract class LockTest extends MockedTest
                        ->shouldReceive('getHostname')
                        ->andReturn('friendica.local');
 
+               Logger::init(new NullLogger());
+
                parent::setUp();
                $this->instance = $this->getInstance();
                $this->instance->releaseAll();
index 1443d9920016fa6d354dc5346d74d8c5930a4819..912c7f0f43a73a6c5fa551a38de71b37d51ca0f9 100644 (file)
@@ -22,7 +22,7 @@ class DBATest extends DatabaseTest
                $profiler = Factory\ProfilerFactory::create($configCache);
                $database = Factory\DBFactory::init($configCache, $profiler, $_SERVER);
                $config = Factory\ConfigFactory::createConfig($configCache);
-               Factory\ConfigFactory::createPConfig($configCache);
+               Factory\ConfigFactory::createPConfig(new Config\Cache\PConfigCache());
                $logger = Factory\LoggerFactory::create('test', $database, $config, $profiler);
                $baseUrl = new BaseURL($config, $_SERVER);
                $this->app = new App($database, $config, $mode, $router, $baseUrl, $logger, $profiler, false);
index ada73476a9a701af52d13aa4352b8ea9bda03f47..266bd98745989e4f5ea65eab5702bda31f5a6c34 100644 (file)
@@ -3,6 +3,7 @@
 namespace Friendica\Test\src\Database;
 
 use Friendica\App;
+use Friendica\Core\Config\Cache\PConfigCache;
 use Friendica\Database\DBStructure;
 use Friendica\Factory;
 use Friendica\Test\DatabaseTest;
@@ -22,7 +23,7 @@ class DBStructureTest extends DatabaseTest
                $profiler = Factory\ProfilerFactory::create($configCache);
                $database = Factory\DBFactory::init($configCache, $profiler, $_SERVER);
                $config = Factory\ConfigFactory::createConfig($configCache);
-               Factory\ConfigFactory::createPConfig($configCache);
+               Factory\ConfigFactory::createPConfig(new PConfigCache());
                $logger = Factory\LoggerFactory::create('test', $database, $config, $profiler);
                $baseUrl = new BaseURL($config, $_SERVER);
                $this->app = new App($database, $config, $mode, $router, $baseUrl, $logger, $profiler, false);