X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Ffunctional%2FDependencyCheckTest.php;h=9065ca1685e4968f8ea60cb025392cefdac95322;hb=732ef70b8d1b0a8334c1d1444ce1ed376a1760e1;hp=336a34c344add825005b6a3fcf06f6dd61a42122;hpb=e7ea5dac2464e790142c134c7f3d0f01aab39fce;p=friendica.git diff --git a/tests/functional/DependencyCheckTest.php b/tests/functional/DependencyCheckTest.php index 336a34c344..9065ca1685 100644 --- a/tests/functional/DependencyCheckTest.php +++ b/tests/functional/DependencyCheckTest.php @@ -1,23 +1,42 @@ . + * + */ + +namespace Friendica\Test\functional; use Dice\Dice; use Friendica\App; -use Friendica\Core\Cache\ICache; -use Friendica\Core\Cache\IMemoryCache; -use Friendica\Core\Config\Cache\ConfigCache; -use Friendica\Core\Config\Configuration; -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; -class dependencyCheck extends TestCase +class DependencyCheckTest extends TestCase { use VFSTrait; @@ -26,7 +45,7 @@ class dependencyCheck extends TestCase */ private $dice; - protected function setUp() + protected function setUp() : void { parent::setUp(); @@ -44,8 +63,8 @@ class dependencyCheck extends TestCase /** @var BasePath $basePath */ $basePath = $this->dice->create(BasePath::class, [$this->root->url()]); - $this->assertInstanceOf(BasePath::class, $basePath); - $this->assertEquals($this->root->url(), $basePath->getPath()); + self::assertInstanceOf(BasePath::class, $basePath); + self::assertEquals($this->root->url(), $basePath->getPath()); } /** @@ -57,14 +76,14 @@ class dependencyCheck extends TestCase /** @var ConfigFileLoader $configFileLoader */ $configFileLoader = $this->dice->create(ConfigFileLoader::class); - $this->assertInstanceOf(ConfigFileLoader::class, $configFileLoader); + self::assertInstanceOf(ConfigFileLoader::class, $configFileLoader); - $configCache = new ConfigCache(); + $configCache = new Cache(); $configFileLoader->setupCache($configCache); - $this->assertNotEmpty($configCache->getAll()); - $this->assertArrayHasKey('database', $configCache->getAll()); - $this->assertArrayHasKey('system', $configCache->getAll()); + self::assertNotEmpty($configCache->getAll()); + self::assertArrayHasKey('database', $configCache->getAll()); + self::assertArrayHasKey('system', $configCache->getAll()); } /** @@ -75,9 +94,9 @@ class dependencyCheck extends TestCase /** @var Profiler $profiler */ $profiler = $this->dice->create(Profiler::class); - $this->assertInstanceOf(Profiler::class, $profiler); + self::assertInstanceOf(Profiler::class, $profiler); - $configCache = new ConfigCache([ + $configCache = new Cache([ 'system' => [ 'profiler' => true, ], @@ -90,37 +109,61 @@ class dependencyCheck extends TestCase $this->dice = new Dice(); $profiler = $this->dice->create(Profiler::class, [$configCache]); - $this->assertInstanceOf(Profiler::class, $profiler); - $this->assertTrue($profiler->isRendertime()); + self::assertInstanceOf(Profiler::class, $profiler); + self::assertTrue($profiler->isRendertime()); } 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); - $this->assertInstanceOf(Database::class, $database); - $this->assertTrue($database->connected()); + self::assertInstanceOf(Database::class, $database); + 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); - $this->assertInstanceOf(App\Mode::class, $mode); + 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'); - $this->assertTrue($mode->isNormal()); + self::assertTrue($mode->isNormal(), 'Not in normal mode'); } public function testConfiguration() { - /** @var Configuration $config */ - $config = $this->dice->create(Configuration::class); + /** @var IManageConfigValues $config */ + $config = $this->dice->create(IManageConfigValues::class); - $this->assertInstanceOf(Configuration::class, $config); + self::assertInstanceOf(IManageConfigValues::class, $config); - $this->assertNotEmpty($config->get('database', 'username')); + self::assertNotEmpty($config->get('database', 'username')); } public function testLogger() @@ -128,43 +171,43 @@ class dependencyCheck extends TestCase /** @var LoggerInterface $logger */ $logger = $this->dice->create(LoggerInterface::class, ['test']); - $this->assertInstanceOf(LoggerInterface::class, $logger); + self::assertInstanceOf(LoggerInterface::class, $logger); } public function testDevLogger() { - /** @var Configuration $config */ - $config = $this->dice->create(Configuration::class); + /** @var IManageConfigValues $config */ + $config = $this->dice->create(IManageConfigValues::class); $config->set('system', 'dlogfile', $this->root->url() . '/friendica.log'); /** @var LoggerInterface $logger */ $logger = $this->dice->create('$devLogger', ['dev']); - $this->assertInstanceOf(LoggerInterface::class, $logger); + self::assertInstanceOf(LoggerInterface::class, $logger); } public function testCache() { - /** @var ICache $cache */ - $cache = $this->dice->create(ICache::class); + /** @var ICanCache $cache */ + $cache = $this->dice->create(ICanCache::class); - $this->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 - $this->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); - $this->assertInstanceOf(ILock::class, $lock); + self::assertInstanceOf(ICanLock::class, $lock); } }