diff --git a/src/Core/Config/JitConfiguration.php b/src/Core/Config/JitConfiguration.php index f8260c9e47..e5b7b5e47c 100644 --- a/src/Core/Config/JitConfiguration.php +++ b/src/Core/Config/JitConfiguration.php @@ -50,8 +50,10 @@ class JitConfiguration extends Configuration $config = $this->configModel->load($cat); - foreach ($config[$cat] as $key => $value) { - $this->in_db[$cat][$key] = true; + if (!empty($config[$cat])) { + foreach ($config[$cat] as $key => $value) { + $this->in_db[$cat][$key] = true; + } } // load the whole category out of the DB into the cache diff --git a/src/Model/Config/DbaConfig.php b/src/Model/Config/DbaConfig.php index bbd62c7cbe..aa6a1f3e27 100644 --- a/src/Model/Config/DbaConfig.php +++ b/src/Model/Config/DbaConfig.php @@ -11,7 +11,7 @@ abstract class DbaConfig public function __construct(Database $dba) { - $this->dba = $dba; + $this->dba = $dba; } /** diff --git a/tests/DatabaseTest.php b/tests/DatabaseTest.php index b3418c20f4..999da871db 100644 --- a/tests/DatabaseTest.php +++ b/tests/DatabaseTest.php @@ -5,12 +5,15 @@ namespace Friendica\Test; -use Friendica\App; -use Friendica\Database\DBA; -use Friendica\Factory; +use Friendica\App\Mode; +use Friendica\App\Router; +use Friendica\Core\Config\Cache\ConfigCache; +use Friendica\Database\Database; +use Friendica\Factory\ConfigFactory; +use Friendica\Factory\DBFactory; +use Friendica\Factory\ProfilerFactory; use Friendica\Util\BasePath; use Friendica\Util\Config\ConfigFileLoader; -use Friendica\Util\Logger\VoidLogger; use Friendica\Util\Profiler; use PHPUnit\DbUnit\DataSet\YamlDataSet; use PHPUnit\DbUnit\TestCaseTrait; @@ -25,6 +28,33 @@ abstract class DatabaseTest extends MockedTest { use TestCaseTrait; + /** @var Database */ + protected static $dba; + + /** @var BasePath */ + protected static $basePath; + + /** @var Mode */ + protected static $mode; + + /** @var ConfigCache */ + protected static $configCache; + + /** @var Profiler */ + protected static $profiler; + + public static function setUpBeforeClass() + { + parent::setUpBeforeClass(); + + self::$basePath = BasePath::create(dirname(__DIR__)); + self::$mode = new Mode(self::$basePath); + $configLoader = new ConfigFileLoader(self::$basePath, self::$mode); + self::$configCache = ConfigFactory::createCache($configLoader); + self::$profiler = ProfilerFactory::create(self::$configCache); + self::$dba = DBFactory::init(self::$configCache, self::$profiler, $_SERVER); + } + /** * Get database connection. * @@ -42,27 +72,13 @@ abstract class DatabaseTest extends MockedTest $this->markTestSkipped('Please set the MYSQL_* environment variables to your test database credentials.'); } - $basePath = BasePath::create(dirname(__DIR__)); - $mode = new App\Mode($basePath); - $configLoader = new ConfigFileLoader($basePath, $mode); - $config = Factory\ConfigFactory::createCache($configLoader); - - $profiler = \Mockery::mock(Profiler::class); - - DBA::connect( - $config, - $profiler, - new VoidLogger(), - getenv('MYSQL_HOST'), - getenv('MYSQL_USERNAME'), - getenv('MYSQL_PASSWORD'), - getenv('MYSQL_DATABASE')); - - if (!DBA::connected()) { - $this->markTestSkipped('Could not connect to the database.'); + if (!self::$dba->isConnected()) { + if (!self::$dba->connect()) { + $this->markTestSkipped('Could not connect to the database.'); + } } - return $this->createDefaultDBConnection(DBA::getConnection(), getenv('MYSQL_DATABASE')); + return $this->createDefaultDBConnection(self::$dba->getConnection(), getenv('MYSQL_DATABASE')); } /** diff --git a/tests/include/ApiTest.php b/tests/include/ApiTest.php index 94557ac69c..17b7469fa1 100644 --- a/tests/include/ApiTest.php +++ b/tests/include/ApiTest.php @@ -49,18 +49,13 @@ class ApiTest extends DatabaseTest */ public function setUp() { - $basePath = BasePath::create(dirname(__DIR__) . '/../'); - $mode = new App\Mode($basePath); - $router = new App\Router(); - $configLoader = new ConfigFileLoader($basePath, $mode); - $configCache = Factory\ConfigFactory::createCache($configLoader); - $profiler = Factory\ProfilerFactory::create($configCache); - $database = Factory\DBFactory::init($configCache, $profiler, $_SERVER); - $config = Factory\ConfigFactory::createConfig($configCache); - Factory\ConfigFactory::createPConfig($configCache, new Config\Cache\PConfigCache()); - $logger = Factory\LoggerFactory::create('test', $database, $config, $profiler); + $configModel = new \Friendica\Model\Config\Config(self::$dba); + $config = Factory\ConfigFactory::createConfig(self::$configCache, $configModel); + Factory\ConfigFactory::createPConfig(new Config\Cache\PConfigCache()); + $logger = Factory\LoggerFactory::create('test', self::$dba, $config, self::$profiler); $baseUrl = new BaseURL($config, $_SERVER); - $this->app = new App($database, $config, $mode, $router, $baseUrl, $logger, $profiler, false); + $router = new App\Router(); + $this->app = new App(self::$dba, $config, self::$mode, $router, $baseUrl, $logger, self::$profiler, false); parent::setUp(); diff --git a/tests/src/Core/Config/ConfigurationTest.php b/tests/src/Core/Config/ConfigurationTest.php index b9546cea7f..2191d86f1c 100644 --- a/tests/src/Core/Config/ConfigurationTest.php +++ b/tests/src/Core/Config/ConfigurationTest.php @@ -252,6 +252,20 @@ abstract class ConfigurationTest extends MockedTest } } + /** + * Test the configuration load without result + */ + public function testLoadWrong() + { + $this->configModel->shouldReceive('isConnected')->andReturn(true)->once(); + $this->configModel->shouldReceive('load')->withAnyArgs()->andReturn([])->once(); + + $this->testedConfig = $this->getInstance(); + $this->assertInstanceOf(ConfigCache::class, $this->testedConfig->getCache()); + + $this->assertEmpty($this->testedConfig->getCache()->getAll()); + } + /** * Test the configuration get() and set() methods without adapter * diff --git a/tests/src/Database/DBATest.php b/tests/src/Database/DBATest.php index 84d17dc899..24f723e5a0 100644 --- a/tests/src/Database/DBATest.php +++ b/tests/src/Database/DBATest.php @@ -6,26 +6,19 @@ use Friendica\Core\Config; use Friendica\Database\DBA; use Friendica\Factory; use Friendica\Test\DatabaseTest; -use Friendica\Util\BasePath; use Friendica\Util\BaseURL; -use Friendica\Util\Config\ConfigFileLoader; class DBATest extends DatabaseTest { public function setUp() { - $basePath = BasePath::create(dirname(__DIR__) . '/../../'); - $mode = new App\Mode($basePath); - $router = new App\Router(); - $configLoader = new ConfigFileLoader($basePath, $mode); - $configCache = Factory\ConfigFactory::createCache($configLoader); - $profiler = Factory\ProfilerFactory::create($configCache); - $database = Factory\DBFactory::init($configCache, $profiler, $_SERVER); - $config = Factory\ConfigFactory::createConfig($configCache); - Factory\ConfigFactory::createPConfig($configCache, new Config\Cache\PConfigCache()); - $logger = Factory\LoggerFactory::create('test', $database, $config, $profiler); + $configModel = new \Friendica\Model\Config\Config(self::$dba); + $config = Factory\ConfigFactory::createConfig(self::$configCache, $configModel); + Factory\ConfigFactory::createPConfig(new Config\Cache\PConfigCache()); + $logger = Factory\LoggerFactory::create('test', self::$dba, $config, self::$profiler); $baseUrl = new BaseURL($config, $_SERVER); - $this->app = new App($database, $config, $mode, $router, $baseUrl, $logger, $profiler, false); + $router = new App\Router(); + $this->app = new App(self::$dba, $config, self::$mode, $router, $baseUrl, $logger, self::$profiler, false); parent::setUp(); diff --git a/tests/src/Database/DBStructureTest.php b/tests/src/Database/DBStructureTest.php index b005d8d53d..51707873cb 100644 --- a/tests/src/Database/DBStructureTest.php +++ b/tests/src/Database/DBStructureTest.php @@ -7,26 +7,19 @@ use Friendica\Core\Config\Cache\PConfigCache; use Friendica\Database\DBStructure; use Friendica\Factory; use Friendica\Test\DatabaseTest; -use Friendica\Util\BasePath; use Friendica\Util\BaseURL; -use Friendica\Util\Config\ConfigFileLoader; class DBStructureTest extends DatabaseTest { public function setUp() { - $basePath = BasePath::create(dirname(__DIR__) . '/../../'); - $mode = new App\Mode($basePath); - $router = new App\Router(); - $configLoader = new ConfigFileLoader($basePath, $mode); - $configCache = Factory\ConfigFactory::createCache($configLoader); - $profiler = Factory\ProfilerFactory::create($configCache); - $database = Factory\DBFactory::init($configCache, $profiler, $_SERVER); - $config = Factory\ConfigFactory::createConfig($configCache); - Factory\ConfigFactory::createPConfig($configCache, new PConfigCache()); - $logger = Factory\LoggerFactory::create('test', $database, $config, $profiler); + $configModel = new \Friendica\Model\Config\Config(self::$dba); + $config = Factory\ConfigFactory::createConfig(self::$configCache, $configModel); + Factory\ConfigFactory::createPConfig(new PConfigCache()); + $logger = Factory\LoggerFactory::create('test', self::$dba, $config, self::$profiler); $baseUrl = new BaseURL($config, $_SERVER); - $this->app = new App($database, $config, $mode, $router, $baseUrl, $logger, $profiler, false); + $router = new App\Router(); + $this->app = new App(self::$dba, $config, self::$mode, $router, $baseUrl, $logger, self::$profiler, false); parent::setUp(); }