From 357680474eeda00850d2a8e397b40b7d6b55420c Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Tue, 4 Apr 2023 11:58:53 +0100 Subject: [PATCH] Memoize Relation Signed-off-by: Kamil Tekiela --- libraries/classes/ConfigStorage/Relation.php | 19 ++++++++-- test/classes/AbstractTestCase.php | 3 ++ test/classes/ConfigStorage/RelationTest.php | 24 +++++++++--- .../Console/Bookmark/AddControllerTest.php | 12 ++++-- .../Export/Template/CreateControllerTest.php | 9 +++-- .../Export/Template/LoadControllerTest.php | 9 +++-- .../Table/RecentFavoriteControllerTest.php | 6 ++- .../Table/ReplaceControllerTest.php | 9 +++-- .../Table/StructureControllerTest.php | 3 +- test/classes/Database/CentralColumnsTest.php | 10 +++-- test/classes/Database/Designer/CommonTest.php | 33 ++++++++++------ test/classes/Display/ResultsTest.php | 10 +++-- .../Nodes/NodeDatabaseChildTest.php | 10 +++-- .../Plugins/Export/ExportHtmlwordTest.php | 25 +++++++----- .../Plugins/Export/ExportLatexTest.php | 25 +++++++----- test/classes/Plugins/Export/ExportOdtTest.php | 17 ++++++--- test/classes/Plugins/Export/ExportSqlTest.php | 9 +++-- .../Plugins/Export/ExportTexytextTest.php | 9 +++-- test/classes/Server/PrivilegesTest.php | 23 +++++++---- test/classes/SqlQueryFormTest.php | 8 ++-- test/classes/SystemDatabaseTest.php | 10 +++-- test/classes/Table/ColumnsDefinitionTest.php | 1 - test/classes/Tracking/TrackerTest.php | 38 ++++++++++++------- test/classes/Tracking/TrackingCheckerTest.php | 9 +++-- test/classes/Tracking/TrackingTest.php | 9 +++-- test/classes/TransformationsTest.php | 16 +++++--- test/classes/UserPreferencesTest.php | 28 +++++++------- 27 files changed, 255 insertions(+), 129 deletions(-) diff --git a/libraries/classes/ConfigStorage/Relation.php b/libraries/classes/ConfigStorage/Relation.php index 557863994d..82716157b0 100644 --- a/libraries/classes/ConfigStorage/Relation.php +++ b/libraries/classes/ConfigStorage/Relation.php @@ -57,6 +57,9 @@ use const SQL_DIR; */ class Relation { + /** @var RelationParameters[] $cache */ + private static array $cache = []; + public function __construct(public DatabaseInterface $dbi) { } @@ -65,6 +68,10 @@ class Relation { $server = $GLOBALS['server']; + if (isset(self::$cache[$server])) { + return self::$cache[$server]; + } + if (! isset($_SESSION['relation']) || ! is_array($_SESSION['relation'])) { $_SESSION['relation'] = []; } @@ -74,13 +81,15 @@ class Relation && isset($_SESSION['relation'][$server]['version']) && $_SESSION['relation'][$server]['version'] === Version::VERSION ) { - return RelationParameters::fromArray($_SESSION['relation'][$server]); + self::$cache[$server] = RelationParameters::fromArray($_SESSION['relation'][$server]); + + return self::$cache[$server]; } - $relationParameters = RelationParameters::fromArray($this->checkRelationsParam()); - $_SESSION['relation'][$server] = $relationParameters->toArray(); + self::$cache[$server] = RelationParameters::fromArray($this->checkRelationsParam()); + $_SESSION['relation'][$server] = self::$cache[$server]->toArray(); - return $relationParameters; + return self::$cache[$server]; } /** @@ -1501,6 +1510,7 @@ class Relation // This is the case when the DB could be created but no tables just after // So just purge the cache and show the new configuration storage state unset($_SESSION['relation'][$GLOBALS['server']]); + unset(self::$cache[$GLOBALS['server']]); $this->getRelationParameters(); return true; @@ -1620,6 +1630,7 @@ class Relation $GLOBALS['cfg']['Server']['pmadb'] = $db; unset($_SESSION['relation'][$GLOBALS['server']]); + unset(self::$cache[$GLOBALS['server']]); $relationParameters = $this->getRelationParameters(); if ( diff --git a/test/classes/AbstractTestCase.php b/test/classes/AbstractTestCase.php index d58cd9bc92..09c6e8e7ec 100644 --- a/test/classes/AbstractTestCase.php +++ b/test/classes/AbstractTestCase.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Tests; use PhpMyAdmin\Cache; use PhpMyAdmin\Config; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Core; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\DbiExtension; @@ -82,6 +83,8 @@ abstract class AbstractTestCase extends TestCase // Config before DBI $this->setGlobalConfig(); Cache::purge(); + + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); } protected function loadContainerBuilder(): void diff --git a/test/classes/ConfigStorage/RelationTest.php b/test/classes/ConfigStorage/RelationTest.php index 899c4eefae..2d13a2be49 100644 --- a/test/classes/ConfigStorage/RelationTest.php +++ b/test/classes/ConfigStorage/RelationTest.php @@ -9,6 +9,7 @@ use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DummyResult; +use ReflectionClass; use function implode; @@ -236,6 +237,7 @@ class RelationTest extends AbstractTestCase $dummyDbi->addSelectDb('db_pma'); $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $relation->fixPmaTables('db_pma', false); @@ -513,6 +515,7 @@ class RelationTest extends AbstractTestCase $this->assertSame('', $GLOBALS['cfg']['Server']['pmadb']); $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $relation->fixPmaTables('db_pma', true); $this->assertArrayNotHasKey('message', $GLOBALS); @@ -799,6 +802,7 @@ class RelationTest extends AbstractTestCase $this->assertSame('db_pma', $GLOBALS['cfg']['Server']['pmadb']); $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $dummyDbi->addSelectDb('db_pma'); $dummyDbi->addSelectDb('db_pma'); @@ -877,6 +881,7 @@ class RelationTest extends AbstractTestCase $this->assertSame('', $GLOBALS['cfg']['Server']['pmadb']); $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $relation->fixPmaTables('db_pma', true); @@ -1441,6 +1446,7 @@ class RelationTest extends AbstractTestCase ); $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $relation = new Relation($dbi); $relation->initRelationParamsCache(); @@ -1510,6 +1516,7 @@ class RelationTest extends AbstractTestCase ); $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $dummyDbi->addSelectDb('phpmyadmin'); $relation = new Relation($dbi); @@ -1601,6 +1608,7 @@ class RelationTest extends AbstractTestCase $dummyDbi->addResult('SELECT NULL FROM `pma__userconfig` LIMIT 0', false); $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $dummyDbi->addSelectDb('phpmyadmin'); $relation = new Relation($dbi); @@ -1697,6 +1705,7 @@ class RelationTest extends AbstractTestCase $dummyDbi->addSelectDb('PMA-storage'); $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $relation = new Relation($dbi); $relation->initRelationParamsCache(); @@ -1726,6 +1735,7 @@ class RelationTest extends AbstractTestCase $dummyDbi->addSelectDb('PMA-storage'); /** @psalm-suppress EmptyArrayAccess */ unset($_SESSION['relation'][$GLOBALS['server']]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $relationData = $relation->getRelationParameters(); $dummyDbi->assertAllSelectsConsumed(); @@ -1777,8 +1787,10 @@ class RelationTest extends AbstractTestCase $relation = new Relation($dbi); $GLOBALS['server'] = 1; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray($params)->toArray(); + $relationParameters = RelationParameters::fromArray($params); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); foreach ($queries as $query) { $dummyDbi->addResult($query, []); @@ -1839,14 +1851,16 @@ class RelationTest extends AbstractTestCase $relation = new Relation($dbi); $GLOBALS['server'] = 1; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'user' => 'user', 'db' => 'pma`db', 'pdfwork' => true, 'pdf_pages' => 'pdf_pages', 'table_coords' => 'table`coords', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $dummyDbi->addResult( 'UPDATE `pma``db`.`table``coords` SET db_name = \'db\\\'1\', table_name = \'table\\\'2\'' diff --git a/test/classes/Controllers/Console/Bookmark/AddControllerTest.php b/test/classes/Controllers/Console/Bookmark/AddControllerTest.php index 687594cecb..decdb616e5 100644 --- a/test/classes/Controllers/Console/Bookmark/AddControllerTest.php +++ b/test/classes/Controllers/Console/Bookmark/AddControllerTest.php @@ -4,12 +4,14 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Console\Bookmark; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\Controllers\Console\Bookmark\AddController; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; +use ReflectionClass; /** @covers \PhpMyAdmin\Controllers\Console\Bookmark\AddController */ class AddControllerTest extends AbstractTestCase @@ -34,7 +36,7 @@ class AddControllerTest extends AbstractTestCase public function testWithoutRelationParameters(): void { $GLOBALS['cfg']['Server']['user'] = 'user'; - $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $dbi = $this->createDatabaseInterface(); $GLOBALS['dbi'] = $dbi; $response = new ResponseRenderer(); @@ -54,13 +56,15 @@ class AddControllerTest extends AbstractTestCase { $GLOBALS['cfg']['Server']['user'] = 'test_user'; $GLOBALS['server'] = 1; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'user' => 'test_user', 'db' => 'pmadb', 'bookmarkwork' => true, 'bookmark' => 'bookmark', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $dbiDummy = $this->createDbiDummy(); // phpcs:ignore Generic.Files.LineLength.TooLong diff --git a/test/classes/Controllers/Export/Template/CreateControllerTest.php b/test/classes/Controllers/Export/Template/CreateControllerTest.php index 328a165351..8fb1f82362 100644 --- a/test/classes/Controllers/Export/Template/CreateControllerTest.php +++ b/test/classes/Controllers/Export/Template/CreateControllerTest.php @@ -15,6 +15,7 @@ use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; +use ReflectionClass; /** @covers \PhpMyAdmin\Controllers\Export\Template\CreateController */ class CreateControllerTest extends AbstractTestCase @@ -37,12 +38,14 @@ class CreateControllerTest extends AbstractTestCase $GLOBALS['server'] = 1; $GLOBALS['text_dir'] = 'ltr'; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'exporttemplateswork' => true, 'db' => 'db', 'export_templates' => 'table', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $GLOBALS['cfg']['Server']['user'] = 'user'; diff --git a/test/classes/Controllers/Export/Template/LoadControllerTest.php b/test/classes/Controllers/Export/Template/LoadControllerTest.php index 0dd970f30e..b88789574e 100644 --- a/test/classes/Controllers/Export/Template/LoadControllerTest.php +++ b/test/classes/Controllers/Export/Template/LoadControllerTest.php @@ -14,6 +14,7 @@ use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; +use ReflectionClass; /** @covers \PhpMyAdmin\Controllers\Export\Template\LoadController */ class LoadControllerTest extends AbstractTestCase @@ -36,12 +37,14 @@ class LoadControllerTest extends AbstractTestCase $GLOBALS['server'] = 1; $GLOBALS['text_dir'] = 'ltr'; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'exporttemplateswork' => true, 'db' => 'db', 'export_templates' => 'table', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $GLOBALS['cfg']['Server']['user'] = 'user'; diff --git a/test/classes/Controllers/Table/RecentFavoriteControllerTest.php b/test/classes/Controllers/Table/RecentFavoriteControllerTest.php index 96c2d4a53b..bb507c42a7 100644 --- a/test/classes/Controllers/Table/RecentFavoriteControllerTest.php +++ b/test/classes/Controllers/Table/RecentFavoriteControllerTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Table; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\Sql\SqlController; use PhpMyAdmin\Controllers\Table\RecentFavoriteController; use PhpMyAdmin\DatabaseInterface; @@ -13,6 +14,7 @@ use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; +use ReflectionClass; use Symfony\Component\DependencyInjection\ContainerBuilder; /** @@ -41,7 +43,7 @@ class RecentFavoriteControllerTest extends AbstractTestCase $GLOBALS['text_dir'] = 'ltr'; $_REQUEST['db'] = 'test_db'; $_REQUEST['table'] = 'test_table'; - $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $_SESSION['tmpval'] = []; $_SESSION['tmpval']['recentTables'][2] = [['db' => 'test_db', 'table' => 'test_table']]; @@ -72,7 +74,7 @@ class RecentFavoriteControllerTest extends AbstractTestCase $GLOBALS['text_dir'] = 'ltr'; $_REQUEST['db'] = 'invalid_db'; $_REQUEST['table'] = 'invalid_table'; - $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $_SESSION['tmpval'] = []; $_SESSION['tmpval']['recentTables'][2] = [['db' => 'invalid_db', 'table' => 'invalid_table']]; diff --git a/test/classes/Controllers/Table/ReplaceControllerTest.php b/test/classes/Controllers/Table/ReplaceControllerTest.php index 7b86a4f96e..185ba90e90 100644 --- a/test/classes/Controllers/Table/ReplaceControllerTest.php +++ b/test/classes/Controllers/Table/ReplaceControllerTest.php @@ -22,6 +22,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Transformations; +use ReflectionClass; use Symfony\Component\DependencyInjection\ContainerBuilder; /** @covers \PhpMyAdmin\Controllers\Table\ReplaceController */ @@ -46,8 +47,7 @@ class ReplaceControllerTest extends AbstractTestCase $GLOBALS['cfg']['Server']['user'] = 'user'; $GLOBALS['cfg']['Server']['DisableIS'] = false; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'table_coords' => 'table_name', 'displaywork' => true, 'db' => 'information_schema', @@ -62,7 +62,10 @@ class ReplaceControllerTest extends AbstractTestCase 'bookmark' => 'bookmark', 'uiprefswork' => true, 'table_uiprefs' => 'table_uiprefs', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); } public function testReplace(): void diff --git a/test/classes/Controllers/Table/StructureControllerTest.php b/test/classes/Controllers/Table/StructureControllerTest.php index eca0513ced..165f023e65 100644 --- a/test/classes/Controllers/Table/StructureControllerTest.php +++ b/test/classes/Controllers/Table/StructureControllerTest.php @@ -16,6 +16,7 @@ use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Transformations; use PhpMyAdmin\Util; +use ReflectionClass; /** @covers \PhpMyAdmin\Controllers\Table\StructureController */ class StructureControllerTest extends AbstractTestCase @@ -44,7 +45,7 @@ class StructureControllerTest extends AbstractTestCase $GLOBALS['cfg']['Server']['DisableIS'] = true; $GLOBALS['cfg']['ShowStats'] = false; $GLOBALS['cfg']['ShowPropertyComments'] = false; - $_SESSION['relation'] = []; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); $this->dummyDbi->addSelectDb('test_db'); $this->dummyDbi->addSelectDb('test_db'); diff --git a/test/classes/Database/CentralColumnsTest.php b/test/classes/Database/CentralColumnsTest.php index b03c245209..7d371c26b4 100644 --- a/test/classes/Database/CentralColumnsTest.php +++ b/test/classes/Database/CentralColumnsTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Database; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\DatabaseInterface; @@ -11,6 +12,7 @@ use PhpMyAdmin\Dbal\Connection; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Types; +use ReflectionClass; use function array_slice; @@ -108,14 +110,16 @@ class CentralColumnsTest extends AbstractTestCase $GLOBALS['table'] = 'PMA_table'; $GLOBALS['server'] = 1; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'centralcolumnswork' => true, 'relwork' => true, 'db' => 'phpmyadmin', 'relation' => 'relation', 'central_columns' => 'pma_central_columns', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); // mock DBI $dbi = $this->getMockBuilder(DatabaseInterface::class) diff --git a/test/classes/Database/Designer/CommonTest.php b/test/classes/Database/Designer/CommonTest.php index 95a023d85c..40250d859c 100644 --- a/test/classes/Database/Designer/CommonTest.php +++ b/test/classes/Database/Designer/CommonTest.php @@ -13,6 +13,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Version; +use ReflectionClass; use function sprintf; @@ -349,11 +350,13 @@ class CommonTest extends AbstractTestCase { $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['cfg']['NaturalOrder'] = false; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'relation' => 'rel db', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->dummyDbi = $this->createDbiDummy(); $this->dbi = $this->createDatabaseInterface($this->dummyDbi); @@ -371,12 +374,14 @@ class CommonTest extends AbstractTestCase { $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['cfg']['NaturalOrder'] = false; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'relwork' => true, 'relation' => 'rel db', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->dummyDbi = $this->createDbiDummy(); $this->dbi = $this->createDatabaseInterface($this->dummyDbi); @@ -413,12 +418,14 @@ class CommonTest extends AbstractTestCase { $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['cfg']['NaturalOrder'] = false; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'relwork' => true, 'relation' => 'rel db', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->dummyDbi = $this->createDbiDummy(); $this->dbi = $this->createDatabaseInterface($this->dummyDbi); @@ -475,12 +482,14 @@ class CommonTest extends AbstractTestCase { $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['cfg']['NaturalOrder'] = false; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'relwork' => true, 'relation' => 'rel db', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->dummyDbi = $this->createDbiDummy(); $this->dbi = $this->createDatabaseInterface($this->dummyDbi); diff --git a/test/classes/Display/ResultsTest.php b/test/classes/Display/ResultsTest.php index a6221cbca4..4c5eb21a7f 100644 --- a/test/classes/Display/ResultsTest.php +++ b/test/classes/Display/ResultsTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Display; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Display\DeleteLinkEnum; @@ -22,6 +23,7 @@ use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Transformations; +use ReflectionClass; use stdClass; use function count; @@ -654,12 +656,14 @@ class ResultsTest extends AbstractTestCase { // Fake relation settings $_SESSION['tmpval']['relational_display'] = 'K'; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'db', 'mimework' => true, 'column_info' => 'column_info', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $GLOBALS['cfg']['BrowseMIME'] = true; // Basic data diff --git a/test/classes/Navigation/Nodes/NodeDatabaseChildTest.php b/test/classes/Navigation/Nodes/NodeDatabaseChildTest.php index 8fe6d923f9..a5a6137008 100644 --- a/test/classes/Navigation/Nodes/NodeDatabaseChildTest.php +++ b/test/classes/Navigation/Nodes/NodeDatabaseChildTest.php @@ -4,12 +4,14 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Navigation\Nodes; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\Navigation\Nodes\NodeDatabase; use PhpMyAdmin\Navigation\Nodes\NodeDatabaseChild; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Url; use PHPUnit\Framework\MockObject\MockObject; +use ReflectionClass; /** * @covers \PhpMyAdmin\Navigation\Nodes\NodeDatabaseChild @@ -39,12 +41,14 @@ class NodeDatabaseChildTest extends AbstractTestCase $GLOBALS['cfg']['DefaultTabDatabase'] = 'structure'; $GLOBALS['server'] = 1; $GLOBALS['cfg']['ServerDefault'] = 1; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'navwork' => true, 'navigationhiding' => 'navigationhiding', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->object = $this->getMockForAbstractClass( NodeDatabaseChild::class, ['child'], diff --git a/test/classes/Plugins/Export/ExportHtmlwordTest.php b/test/classes/Plugins/Export/ExportHtmlwordTest.php index 46b59a7abf..5f007841a9 100644 --- a/test/classes/Plugins/Export/ExportHtmlwordTest.php +++ b/test/classes/Plugins/Export/ExportHtmlwordTest.php @@ -19,6 +19,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Transformations; +use ReflectionClass; use ReflectionMethod; use ReflectionProperty; @@ -421,15 +422,17 @@ class ExportHtmlwordTest extends AbstractTestCase ->with($columns, ['name1']) ->will($this->returnValue('1')); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'relwork' => true, 'commwork' => true, 'mimework' => true, 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $result = $this->object->getTableDef('database', '', true, true, true); @@ -490,15 +493,17 @@ class ExportHtmlwordTest extends AbstractTestCase $GLOBALS['dbi'] = $dbi; $this->object->relation = new Relation($dbi); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'relwork' => true, 'commwork' => true, 'mimework' => true, 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $result = $this->object->getTableDef('database', '', true, true, true); @@ -532,12 +537,14 @@ class ExportHtmlwordTest extends AbstractTestCase $GLOBALS['dbi'] = $dbi; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $result = $this->object->getTableDef('database', '', false, false, false); diff --git a/test/classes/Plugins/Export/ExportLatexTest.php b/test/classes/Plugins/Export/ExportLatexTest.php index aa578afa67..9778d1c1e5 100644 --- a/test/classes/Plugins/Export/ExportLatexTest.php +++ b/test/classes/Plugins/Export/ExportLatexTest.php @@ -18,6 +18,7 @@ use PhpMyAdmin\Properties\Plugins\ExportPluginProperties; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Transformations; +use ReflectionClass; use ReflectionMethod; use function __; @@ -588,15 +589,17 @@ class ExportLatexTest extends AbstractTestCase unset($GLOBALS['latex_caption']); } - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'relwork' => true, 'commwork' => true, 'mimework' => true, 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); ob_start(); $this->assertTrue( @@ -677,15 +680,17 @@ class ExportLatexTest extends AbstractTestCase $GLOBALS['dbi'] = $dbi; $this->object->relation = new Relation($dbi); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'relwork' => true, 'commwork' => true, 'mimework' => true, 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); ob_start(); $this->assertTrue( @@ -738,12 +743,14 @@ class ExportLatexTest extends AbstractTestCase $GLOBALS['cfg']['Server']['host'] = 'localhost'; $GLOBALS['cfg']['Server']['verbose'] = 'verb'; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); ob_start(); $this->assertTrue( diff --git a/test/classes/Plugins/Export/ExportOdtTest.php b/test/classes/Plugins/Export/ExportOdtTest.php index b808176aab..b578ce64a5 100644 --- a/test/classes/Plugins/Export/ExportOdtTest.php +++ b/test/classes/Plugins/Export/ExportOdtTest.php @@ -21,6 +21,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Transformations; +use ReflectionClass; use ReflectionMethod; use stdClass; @@ -615,15 +616,17 @@ class ExportOdtTest extends AbstractTestCase ->with(['Field' => 'fieldname']) ->will($this->returnValue('1')); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'relwork' => true, 'commwork' => true, 'mimework' => true, 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->assertTrue( $this->object->getTableDef( @@ -696,15 +699,17 @@ class ExportOdtTest extends AbstractTestCase $GLOBALS['dbi'] = $dbi; $this->object->relation = new Relation($dbi); $GLOBALS['odt_buffer'] = ''; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'relwork' => true, 'commwork' => true, 'mimework' => true, 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->assertTrue( $this->object->getTableDef( diff --git a/test/classes/Plugins/Export/ExportSqlTest.php b/test/classes/Plugins/Export/ExportSqlTest.php index f435846507..5a56c8f3a3 100644 --- a/test/classes/Plugins/Export/ExportSqlTest.php +++ b/test/classes/Plugins/Export/ExportSqlTest.php @@ -25,6 +25,7 @@ use PhpMyAdmin\Table; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Transformations; +use ReflectionClass; use ReflectionMethod; use stdClass; @@ -877,15 +878,17 @@ SQL; public function testGetTableComments(): void { - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'relwork' => true, 'commwork' => true, 'mimework' => true, 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $GLOBALS['sql_include_comments'] = true; $dbi = $this->getMockBuilder(DatabaseInterface::class) diff --git a/test/classes/Plugins/Export/ExportTexytextTest.php b/test/classes/Plugins/Export/ExportTexytextTest.php index 0f4b84571f..450c23905c 100644 --- a/test/classes/Plugins/Export/ExportTexytextTest.php +++ b/test/classes/Plugins/Export/ExportTexytextTest.php @@ -18,6 +18,7 @@ use PhpMyAdmin\Properties\Plugins\ExportPluginProperties; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Transformations; +use ReflectionClass; use ReflectionMethod; use ReflectionProperty; @@ -297,15 +298,17 @@ class ExportTexytextTest extends AbstractTestCase ->with(['Field' => 'fname', 'Comment' => 'comm'], ['cname']) ->will($this->returnValue('1')); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'relwork' => true, 'commwork' => true, 'mimework' => true, 'db' => 'database', 'relation' => 'rel', 'column_info' => 'col', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $result = $this->object->getTableDef('db', 'table', 'example.com', true, true, true); diff --git a/test/classes/Server/PrivilegesTest.php b/test/classes/Server/PrivilegesTest.php index 4571cc69f2..96581f9998 100644 --- a/test/classes/Server/PrivilegesTest.php +++ b/test/classes/Server/PrivilegesTest.php @@ -21,6 +21,7 @@ use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Url; use PhpMyAdmin\Util; +use ReflectionClass; use ReflectionMethod; use function __; @@ -1137,13 +1138,15 @@ class PrivilegesTest extends AbstractTestCase public function testGetUserGroupForUser(): void { $GLOBALS['server'] = 1; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'users' => 'users', 'usergroups' => 'usergroups', 'menuswork' => true, - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $dummyDbi = $this->createDbiDummy(); $dummyDbi->addResult( @@ -1163,15 +1166,17 @@ class PrivilegesTest extends AbstractTestCase $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['server'] = 1; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'users' => 'users', 'usergroups' => 'usergroups', 'menuswork' => true, 'trackingwork' => true, 'tracking' => 'tracking', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $dummyDbi = $this->createDbiDummy(); $dummyDbi->addResult('SELECT * FROM `pmadb`.`users`', []); @@ -1265,8 +1270,10 @@ class PrivilegesTest extends AbstractTestCase $_POST['change_copy'] = 'change_copy'; $_POST['old_hostname'] = 'old_hostname'; $_POST['old_username'] = 'old_username'; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([])->toArray(); + $relationParameters = RelationParameters::fromArray([]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $queries = []; diff --git a/test/classes/SqlQueryFormTest.php b/test/classes/SqlQueryFormTest.php index 789081ea18..192f6a0e85 100644 --- a/test/classes/SqlQueryFormTest.php +++ b/test/classes/SqlQueryFormTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Encoding; @@ -12,6 +13,7 @@ use PhpMyAdmin\SqlQueryForm; use PhpMyAdmin\Template; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Url; +use ReflectionClass; use function __; use function htmlspecialchars; @@ -70,15 +72,15 @@ class SqlQueryFormTest extends AbstractTestCase $GLOBALS['cfg']['CodemirrorEnable'] = true; $GLOBALS['cfg']['DefaultForeignKeyChecks'] = 'default'; - $_SESSION['relation'] = []; - $_SESSION['relation'][0] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'table_coords' => 'table_name', 'displaywork' => true, 'db' => 'information_schema', 'table_info' => 'table_info', 'relwork' => true, 'relation' => 'relation', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$relationParameters]); $GLOBALS['cfg']['Server']['user'] = 'user'; $GLOBALS['cfg']['Server']['pmadb'] = 'pmadb'; diff --git a/test/classes/SystemDatabaseTest.php b/test/classes/SystemDatabaseTest.php index a6eccdbbbd..97cbdc5a9c 100644 --- a/test/classes/SystemDatabaseTest.php +++ b/test/classes/SystemDatabaseTest.php @@ -4,11 +4,13 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\SystemColumn; use PhpMyAdmin\SystemDatabase; use PhpMyAdmin\Tests\Stubs\DummyResult; +use ReflectionClass; /** @covers \PhpMyAdmin\SystemDatabase */ class SystemDatabaseTest extends AbstractTestCase @@ -47,8 +49,7 @@ class SystemDatabaseTest extends AbstractTestCase return "'" . $string . "'"; })); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'table_coords' => 'table_name', 'displaywork' => true, 'db' => 'information_schema', @@ -59,7 +60,10 @@ class SystemDatabaseTest extends AbstractTestCase 'mimework' => true, 'column_info' => 'column_info', 'relation' => 'relation', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->sysDb = new SystemDatabase($dbi); } diff --git a/test/classes/Table/ColumnsDefinitionTest.php b/test/classes/Table/ColumnsDefinitionTest.php index 7a93c2d410..f74b9c4031 100644 --- a/test/classes/Table/ColumnsDefinitionTest.php +++ b/test/classes/Table/ColumnsDefinitionTest.php @@ -75,7 +75,6 @@ SQL; $GLOBALS['col_priv'] = true; $GLOBALS['is_reload_priv'] = true; $GLOBALS['mime_map'] = null; - $_SESSION['relation'] = []; $actual = $columnsDefinition->displayForm('/table/structure/save', 1, null, ['actor_id'], [$columnMeta]); diff --git a/test/classes/Tracking/TrackerTest.php b/test/classes/Tracking/TrackerTest.php index 70590ac8ec..bf58103e05 100644 --- a/test/classes/Tracking/TrackerTest.php +++ b/test/classes/Tracking/TrackerTest.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Tracking; use PhpMyAdmin\Cache; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\Connection; @@ -12,6 +13,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Tracking\Tracker; use PhpMyAdmin\Util; +use ReflectionClass; use ReflectionMethod; /** @covers \PhpMyAdmin\Tracking\Tracker */ @@ -41,12 +43,14 @@ class TrackerTest extends AbstractTestCase $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['export_type'] = null; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'trackingwork' => true, 'tracking' => 'tracking', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $dbi = $this->getMockBuilder(DatabaseInterface::class) ->disableOriginalConstructor() @@ -84,19 +88,23 @@ class TrackerTest extends AbstractTestCase Tracker::enable(); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([])->toArray(); + $relationParameters = RelationParameters::fromArray([]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->assertFalse( Tracker::isActive(), ); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'trackingwork' => true, 'db' => 'pmadb', 'tracking' => 'tracking', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->assertTrue( Tracker::isActive(), @@ -144,19 +152,23 @@ class TrackerTest extends AbstractTestCase Tracker::enable(); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([])->toArray(); + $relationParameters = RelationParameters::fromArray([]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->assertFalse( Tracker::isTracked('', ''), ); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'trackingwork' => true, 'db' => 'pmadb', 'tracking' => 'tracking', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->assertTrue( Tracker::isTracked('pma_test_db', 'pma_test_table'), diff --git a/test/classes/Tracking/TrackingCheckerTest.php b/test/classes/Tracking/TrackingCheckerTest.php index 810d6ca1b0..1935ff9595 100644 --- a/test/classes/Tracking/TrackingCheckerTest.php +++ b/test/classes/Tracking/TrackingCheckerTest.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tracking\TrackedTable; use PhpMyAdmin\Tracking\Tracker; use PhpMyAdmin\Tracking\TrackingChecker; +use ReflectionClass; /** @covers \PhpMyAdmin\Tracking\TrackingChecker */ class TrackingCheckerTest extends AbstractTestCase @@ -27,12 +28,14 @@ class TrackingCheckerTest extends AbstractTestCase $GLOBALS['dbi'] = $this->createDatabaseInterface(); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'tracking' => 'tracking', 'trackingwork' => true, - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $this->trackingChecker = new TrackingChecker( $GLOBALS['dbi'], diff --git a/test/classes/Tracking/TrackingTest.php b/test/classes/Tracking/TrackingTest.php index 32cca40084..c6cc711720 100644 --- a/test/classes/Tracking/TrackingTest.php +++ b/test/classes/Tracking/TrackingTest.php @@ -14,6 +14,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tracking\Tracking; use PhpMyAdmin\Tracking\TrackingChecker; use PhpMyAdmin\Url; +use ReflectionClass; use function __; use function _pgettext; @@ -48,12 +49,14 @@ class TrackingTest extends AbstractTestCase $GLOBALS['cfg']['Server']['DisableIS'] = true; $GLOBALS['cfg']['Server']['tracking_default_statements'] = 'DELETE'; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relationParameters = RelationParameters::fromArray([ 'db' => 'pmadb', 'tracking' => 'tracking', 'trackingwork' => true, - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue( + [$GLOBALS['server'] => $relationParameters], + ); $template = new Template(); $this->tracking = new Tracking( diff --git a/test/classes/TransformationsTest.php b/test/classes/TransformationsTest.php index aebed5f3b0..e8ae8d959c 100644 --- a/test/classes/TransformationsTest.php +++ b/test/classes/TransformationsTest.php @@ -4,10 +4,12 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Transformations; +use ReflectionClass; /** @covers \PhpMyAdmin\Transformations */ class TransformationsTest extends AbstractTestCase @@ -165,13 +167,13 @@ class TransformationsTest extends AbstractTestCase */ public function testGetMime(): void { - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relation = RelationParameters::fromArray([ 'db' => 'pmadb', 'mimework' => true, 'trackingwork' => true, 'column_info' => 'column_info', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$GLOBALS['server'] => $relation]); $this->assertEquals( [ 'o' => [ @@ -209,16 +211,18 @@ class TransformationsTest extends AbstractTestCase ->will($this->returnValue($this->createStub(DummyResult::class))); $GLOBALS['dbi'] = $dbi; + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([]); + // Case 1 : no configuration storage $actual = $this->transformations->clear('db'); $this->assertFalse($actual); - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relation = RelationParameters::fromArray([ 'db' => 'pmadb', 'mimework' => true, 'column_info' => 'column_info', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$GLOBALS['server'] => $relation]); // Case 2 : database delete $actual = $this->transformations->clear('db'); diff --git a/test/classes/UserPreferencesTest.php b/test/classes/UserPreferencesTest.php index 09ffbc998b..7b24600007 100644 --- a/test/classes/UserPreferencesTest.php +++ b/test/classes/UserPreferencesTest.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; use PhpMyAdmin\Config\ConfigFile; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\Connection; @@ -12,6 +13,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\Tests\Stubs\DummyResult; use PhpMyAdmin\Url; use PhpMyAdmin\UserPreferences; +use ReflectionClass; use function json_encode; use function time; @@ -55,8 +57,8 @@ class UserPreferencesTest extends AbstractNetworkTestCase */ public function testLoad(): void { - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([])->toArray(); + $relation = RelationParameters::fromArray([]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$GLOBALS['server'] => $relation]); unset($_SESSION['userconfig']); @@ -80,13 +82,13 @@ class UserPreferencesTest extends AbstractNetworkTestCase $this->assertEquals('session', $result['type']); // case 2 - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relation = RelationParameters::fromArray([ 'user' => 'user', 'db' => "pma'db", 'userconfig' => 'testconf', 'userconfigwork' => true, - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$GLOBALS['server'] => $relation]); $dbi = $this->getMockBuilder(DatabaseInterface::class) ->disableOriginalConstructor() @@ -125,8 +127,8 @@ class UserPreferencesTest extends AbstractNetworkTestCase { $GLOBALS['cfg']['Server']['DisableIS'] = true; $GLOBALS['server'] = 2; - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([])->toArray(); + $relation = RelationParameters::fromArray([]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$GLOBALS['server'] => $relation]); unset($_SESSION['userconfig']); @@ -159,13 +161,13 @@ class UserPreferencesTest extends AbstractNetworkTestCase $this->assertTrue($assert); // case 2 - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([ + $relation = RelationParameters::fromArray([ 'userconfigwork' => true, 'db' => 'pmadb', 'userconfig' => 'testconf', 'user' => 'user', - ])->toArray(); + ]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$GLOBALS['server'] => $relation]); $query1 = 'SELECT `username` FROM `pmadb`.`testconf` WHERE `username` = \'user\''; @@ -287,15 +289,15 @@ class UserPreferencesTest extends AbstractNetworkTestCase */ public function testPersistOption(): void { - $_SESSION['relation'] = []; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([])->toArray(); + $relation = RelationParameters::fromArray([]); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$GLOBALS['server'] => $relation]); $_SESSION['userconfig'] = []; $_SESSION['userconfig']['ts'] = '123'; $_SESSION['userconfig']['db'] = ['Server/hide_db' => true, 'Server/only_db' => true]; $GLOBALS['server'] = 2; - $_SESSION['relation'][$GLOBALS['server']] = RelationParameters::fromArray([])->toArray(); + (new ReflectionClass(Relation::class))->getProperty('cache')->setValue([$GLOBALS['server'] => $relation]); $userPreferences = new UserPreferences($GLOBALS['dbi']); $this->assertTrue(