]> git.mxchange.org Git - friendica.git/blobdiff - tests/src/Core/StorageManagerTest.php
Fix a lot of notices/warnings/deprecation notes in the test directory
[friendica.git] / tests / src / Core / StorageManagerTest.php
index fd72eb7fb29c96e529de29813376bbbfe347f202..e3fd747e4a4d9a6ec80bfd7a25d8c3231feb9c2f 100644 (file)
@@ -1,12 +1,31 @@
 <?php
+/**
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Test\src\Core;
 
 use Dice\Dice;
-use Friendica\Core\Config\IConfiguration;
-use Friendica\Core\Config\PreloadConfiguration;
+use Friendica\Core\Config\IConfig;
+use Friendica\Core\Config\PreloadConfig;
 use Friendica\Core\Hook;
-use Friendica\Core\L10n\L10n;
+use Friendica\Core\L10n;
 use Friendica\Core\Session\ISession;
 use Friendica\Core\StorageManager;
 use Friendica\Database\Database;
@@ -15,6 +34,7 @@ use Friendica\Factory\ConfigFactory;
 use Friendica\Model\Config\Config;
 use Friendica\Model\Storage;
 use Friendica\Core\Session;
+use Friendica\Model\Storage\StorageException;
 use Friendica\Test\DatabaseTest;
 use Friendica\Test\Util\Database\StaticDatabase;
 use Friendica\Test\Util\VFSTrait;
@@ -28,7 +48,7 @@ class StorageManagerTest extends DatabaseTest
 {
        /** @var Database */
        private $dba;
-       /** @var IConfiguration */
+       /** @var IConfig */
        private $config;
        /** @var LoggerInterface */
        private $logger;
@@ -37,7 +57,7 @@ class StorageManagerTest extends DatabaseTest
 
        use VFSTrait;
 
-       public function setUp()
+       protected function setUp()
        {
                parent::setUp();
 
@@ -56,7 +76,7 @@ class StorageManagerTest extends DatabaseTest
                $this->dba = new StaticDatabase($configCache, $profiler, $this->logger);
 
                $configModel  = new Config($this->dba);
-               $this->config = new PreloadConfiguration($configCache, $configModel);
+               $this->config = new PreloadConfig($configCache, $configModel);
 
                $this->l10n = \Mockery::mock(L10n::class);
        }
@@ -68,7 +88,7 @@ class StorageManagerTest extends DatabaseTest
        {
                $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
 
-               $this->assertInstanceOf(StorageManager::class, $storageManager);
+               self::assertInstanceOf(StorageManager::class, $storageManager);
        }
 
        public function dataStorages()
@@ -109,10 +129,42 @@ class StorageManagerTest extends DatabaseTest
                ];
        }
 
+       /**
+        * Data array for legacy backends
+        *
+        * @todo 2020.09 After 2 releases, remove the legacy functionality and these data array with it
+        *
+        * @return array
+        */
+       public function dataLegacyBackends()
+       {
+               return [
+                       'legacyDatabase'          => [
+                               'name'        => 'Friendica\Model\Storage\Database',
+                               'assert'      => Storage\Database::class,
+                               'assertName'  => Storage\Database::NAME,
+                               'userBackend' => true,
+                       ],
+                       'legacyFilesystem'       => [
+                               'name'        => 'Friendica\Model\Storage\Filesystem',
+                               'assert'      => Storage\Filesystem::class,
+                               'assertName'  => Storage\Filesystem::NAME,
+                               'userBackend' => true,
+                       ],
+                       'legacySystemResource'     => [
+                               'name'        => 'Friendica\Model\Storage\SystemResource',
+                               'assert'      => Storage\SystemResource::class,
+                               'assertName'  => Storage\SystemResource::NAME,
+                               'userBackend' => false,
+                       ],
+               ];
+       }
+
        /**
         * Test the getByName() method
         *
         * @dataProvider dataStorages
+        * @dataProvider dataLegacyBackends
         */
        public function testGetByName($name, $assert, $assertName, $userBackend)
        {
@@ -121,13 +173,12 @@ class StorageManagerTest extends DatabaseTest
                $storage = $storageManager->getByName($name, $userBackend);
 
                if (!empty($assert)) {
-                       $this->assertInstanceOf(Storage\IStorage::class, $storage);
-                       $this->assertInstanceOf($assert, $storage);
-                       $this->assertEquals($name, $storage::getName());
+                       self::assertInstanceOf(Storage\IStorage::class, $storage);
+                       self::assertInstanceOf($assert, $storage);
                } else {
-                       $this->assertNull($storage);
+                       self::assertNull($storage);
                }
-               $this->assertEquals($assertName, $storage);
+               self::assertEquals($assertName, $storage);
        }
 
        /**
@@ -140,10 +191,10 @@ class StorageManagerTest extends DatabaseTest
                $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
 
                // true in every of the backends
-               $this->assertEquals(!empty($assertName), $storageManager->isValidBackend($name));
+               self::assertEquals(!empty($assertName), $storageManager->isValidBackend($name));
 
                // if userBackend is set to true, filter out e.g. SystemRessource
-               $this->assertEquals($userBackend, $storageManager->isValidBackend($name, true));
+               self::assertEquals($userBackend, $storageManager->isValidBackend($name, true));
        }
 
        /**
@@ -153,7 +204,7 @@ class StorageManagerTest extends DatabaseTest
        {
                $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
 
-               $this->assertEquals(StorageManager::DEFAULT_BACKENDS, $storageManager->listBackends());
+               self::assertEquals(StorageManager::DEFAULT_BACKENDS, $storageManager->listBackends());
        }
 
        /**
@@ -165,12 +216,12 @@ class StorageManagerTest extends DatabaseTest
        {
                $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
 
-               $this->assertNull($storageManager->getBackend());
+               self::assertNull($storageManager->getBackend());
 
                if ($userBackend) {
                        $storageManager->setBackend($name);
 
-                       $this->assertInstanceOf($assert, $storageManager->getBackend());
+                       self::assertInstanceOf($assert, $storageManager->getBackend());
                }
        }
 
@@ -178,6 +229,7 @@ class StorageManagerTest extends DatabaseTest
         * Test the method getBackend() with a pre-configured backend
         *
         * @dataProvider dataStorages
+        * @dataProvider dataLegacyBackends
         */
        public function testPresetBackend($name, $assert, $assertName, $userBackend)
        {
@@ -186,9 +238,9 @@ class StorageManagerTest extends DatabaseTest
                $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
 
                if ($userBackend) {
-                       $this->assertInstanceOf($assert, $storageManager->getBackend());
+                       self::assertInstanceOf($assert, $storageManager->getBackend());
                } else {
-                       $this->assertNull($storageManager->getBackend());
+                       self::assertNull($storageManager->getBackend());
                }
        }
 
@@ -210,12 +262,12 @@ class StorageManagerTest extends DatabaseTest
 
                $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
 
-               $this->assertTrue($storageManager->register(SampleStorageBackend::class));
+               self::assertTrue($storageManager->register(SampleStorageBackend::class));
 
-               $this->assertEquals(array_merge(StorageManager::DEFAULT_BACKENDS, [
+               self::assertEquals(array_merge(StorageManager::DEFAULT_BACKENDS, [
                        SampleStorageBackend::getName() => SampleStorageBackend::class,
                ]), $storageManager->listBackends());
-               $this->assertEquals(array_merge(StorageManager::DEFAULT_BACKENDS, [
+               self::assertEquals(array_merge(StorageManager::DEFAULT_BACKENDS, [
                        SampleStorageBackend::getName() => SampleStorageBackend::class,
                ]), $this->config->get('storage', 'backends'));
 
@@ -223,17 +275,17 @@ class StorageManagerTest extends DatabaseTest
                SampleStorageBackend::registerHook();
                Hook::loadHooks();
 
-               $this->assertTrue($storageManager->setBackend(SampleStorageBackend::NAME));
-               $this->assertEquals(SampleStorageBackend::NAME, $this->config->get('storage', 'name'));
+               self::assertTrue($storageManager->setBackend(SampleStorageBackend::NAME));
+               self::assertEquals(SampleStorageBackend::NAME, $this->config->get('storage', 'name'));
 
-               $this->assertInstanceOf(SampleStorageBackend::class, $storageManager->getBackend());
+               self::assertInstanceOf(SampleStorageBackend::class, $storageManager->getBackend());
 
-               $this->assertTrue($storageManager->unregister(SampleStorageBackend::class));
-               $this->assertEquals(StorageManager::DEFAULT_BACKENDS, $this->config->get('storage', 'backends'));
-               $this->assertEquals(StorageManager::DEFAULT_BACKENDS, $storageManager->listBackends());
+               self::assertTrue($storageManager->unregister(SampleStorageBackend::class));
+               self::assertEquals(StorageManager::DEFAULT_BACKENDS, $this->config->get('storage', 'backends'));
+               self::assertEquals(StorageManager::DEFAULT_BACKENDS, $storageManager->listBackends());
 
-               $this->assertNull($storageManager->getBackend());
-               $this->assertNull($this->config->get('storage', 'name'));
+               self::assertNull($storageManager->getBackend());
+               self::assertNull($this->config->get('storage', 'name'));
        }
 
        /**
@@ -257,23 +309,23 @@ class StorageManagerTest extends DatabaseTest
 
                while ($photo = $this->dba->fetch($photos)) {
 
-                       $this->assertEmpty($photo['data']);
+                       self::assertEmpty($photo['data']);
 
                        $storage = $storageManager->getByName($photo['backend-class']);
                        $data = $storage->get($photo['backend-ref']);
 
-                       $this->assertNotEmpty($data);
+                       self::assertNotEmpty($data);
                }
        }
 
        /**
         * Test moving data to a WRONG storage
-        *
-        * @expectedException \Friendica\Model\Storage\StorageException
-        * @expectedExceptionMessageRegExp /Can't move to storage backend '.*'/
         */
        public function testMoveStorageWrong()
        {
+               $this->expectExceptionMessage("Can't move to storage backend 'SystemResource'");
+               $this->expectException(StorageException::class);
+
                $storageManager = new StorageManager($this->dba, $this->config, $this->logger, $this->l10n);
                $storage = $storageManager->getByName(Storage\SystemResource::getName());
                $storageManager->move($storage);