<?php
/**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Dice\Dice;
use Friendica\App;
-use Friendica\Core\Cache\ICache;
-use Friendica\Core\Cache\IMemoryCache;
-use Friendica\Core\Config\Cache;
-use Friendica\Core\Config\IConfig;
-use Friendica\Core\Lock\ILock;
+use Friendica\Core\Cache\Capability\ICanCache;
+use Friendica\Core\Cache\Capability\ICanCacheInMemory;
+use Friendica\Core\Config\ValueObject\Cache;
+use Friendica\Core\Config\Capability\IManageConfigValues;
+use Friendica\Core\Lock\Capability\ICanLock;
use Friendica\Database\Database;
use Friendica\Test\Util\VFSTrait;
use Friendica\Util\BasePath;
-use Friendica\Util\ConfigFileLoader;
+use Friendica\Core\Config\Util\ConfigFileLoader;
use Friendica\Util\Profiler;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
*/
private $dice;
- protected function setUp()
+ protected function setUp() : void
{
parent::setUp();
public function testDatabase()
{
+ // PDO needs to be disabled for PHP 7.2, see https://jira.mariadb.org/browse/MDEV-24121
+ if (version_compare(PHP_VERSION, '7.3') < 0) {
+ $configCache = $this->dice->create(Cache::class);
+ $configCache->set('database', 'disable_pdo', true);
+ }
+
/** @var Database $database */
$database = $this->dice->create(Database::class);
self::assertInstanceOf(Database::class, $database);
- self::assertContains($database->getDriver(), [Database::PDO, Database::MYSQLI]);
- self::assertNotNull($database->getConnection());
- self::assertTrue($database->connected());
+ self::assertContains($database->getDriver(), [Database::PDO, Database::MYSQLI], 'The driver returns an unexpected value');
+ self::assertNotNull($database->getConnection(), 'There is no database connection');
+
+ $result = $database->p("SELECT 1");
+ self::assertEquals('', $database->errorMessage(), 'There had been a database error message');
+ self::assertEquals(0, $database->errorNo(), 'There had been a database error number');
+
+ self::assertTrue($database->connected(), 'The database is not connected');
}
public function testAppMode()
{
+ // PDO needs to be disabled for PHP 7.2, see https://jira.mariadb.org/browse/MDEV-24121
+ if (version_compare(PHP_VERSION, '7.3') < 0) {
+ $configCache = $this->dice->create(Cache::class);
+ $configCache->set('database', 'disable_pdo', true);
+ }
+
/** @var App\Mode $mode */
$mode = $this->dice->create(App\Mode::class);
self::assertInstanceOf(App\Mode::class, $mode);
- self::assertTrue($mode->has((App\Mode::LOCALCONFIGPRESENT), 'No local config present'));
- self::assertTrue($mode->has((App\Mode::DBAVAILABLE), 'Database is not available'));
- self::assertTrue($mode->has((App\Mode::DBCONFIGAVAILABLE), 'Database config is not available'));
- self::assertTrue($mode->has((App\Mode::MAINTENANCEDISABLED), 'In maintenance mode'));
+ self::assertTrue($mode->has(App\Mode::LOCALCONFIGPRESENT), 'No local config present');
+ self::assertTrue($mode->has(App\Mode::DBAVAILABLE), 'Database is not available');
+ self::assertTrue($mode->has(App\Mode::DBCONFIGAVAILABLE), 'Database config is not available');
+ self::assertTrue($mode->has(App\Mode::MAINTENANCEDISABLED), 'In maintenance mode');
self::assertTrue($mode->isNormal(), 'Not in normal mode');
}
public function testConfiguration()
{
- /** @var IConfig $config */
- $config = $this->dice->create(IConfig::class);
+ /** @var IManageConfigValues $config */
+ $config = $this->dice->create(IManageConfigValues::class);
- self::assertInstanceOf(IConfig::class, $config);
+ self::assertInstanceOf(IManageConfigValues::class, $config);
self::assertNotEmpty($config->get('database', 'username'));
}
public function testDevLogger()
{
- /** @var IConfig $config */
- $config = $this->dice->create(IConfig::class);
+ /** @var IManageConfigValues $config */
+ $config = $this->dice->create(IManageConfigValues::class);
$config->set('system', 'dlogfile', $this->root->url() . '/friendica.log');
/** @var LoggerInterface $logger */
public function testCache()
{
- /** @var ICache $cache */
- $cache = $this->dice->create(ICache::class);
+ /** @var ICanCache $cache */
+ $cache = $this->dice->create(ICanCache::class);
- self::assertInstanceOf(ICache::class, $cache);
+ self::assertInstanceOf(ICanCache::class, $cache);
}
public function testMemoryCache()
{
- /** @var IMemoryCache $cache */
- $cache = $this->dice->create(IMemoryCache::class);
+ /** @var ICanCacheInMemory $cache */
+ $cache = $this->dice->create(ICanCacheInMemory::class);
// We need to check "just" ICache, because the default Cache is DB-Cache, which isn't a memorycache
- self::assertInstanceOf(ICache::class, $cache);
+ self::assertInstanceOf(ICanCache::class, $cache);
}
public function testLock()
{
- /** @var ILock $cache */
- $lock = $this->dice->create(ILock::class);
+ /** @var ICanLock $cache */
+ $lock = $this->dice->create(ICanLock::class);
- self::assertInstanceOf(ILock::class, $lock);
+ self::assertInstanceOf(ICanLock::class, $lock);
}
}