diff --git a/bin/console b/bin/console index a31ed99c27..eae5abc1db 100755 --- a/bin/console +++ b/bin/console @@ -7,7 +7,7 @@ use PhpMyAdmin\Command\SetVersionCommand; use PhpMyAdmin\Command\WriteGitRevisionCommand; use PhpMyAdmin\Command\TwigLintCommand; use PhpMyAdmin\Config; -use PhpMyAdmin\Core; +use PhpMyAdmin\Container\ContainerBuilder; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Tests\Stubs\DbiDummy; use Symfony\Component\Console\Application; @@ -26,7 +26,7 @@ if (! class_exists(Application::class)) { exit(1); } -$containerBuilder = Core::getContainerBuilder(); +$containerBuilder = ContainerBuilder::getContainer(); $cfg['environment'] = 'production'; $config = new Config(); $config->loadAndCheck(CONFIG_FILE); diff --git a/composer.json b/composer.json index b138b3b0b0..32c0047e92 100644 --- a/composer.json +++ b/composer.json @@ -65,6 +65,7 @@ "phpmyadmin/shapefile": "^4.0-dev", "phpmyadmin/sql-parser": "^6.0-dev", "phpmyadmin/twig-i18n-extension": "^5.0-dev", + "psr/container": "^2.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.1", "psr/http-server-handler": "^1.0", diff --git a/composer.lock b/composer.lock index 28d5173e3a..84d1f99fc3 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7533829654de25bcf0c6bc1a3b29bfb7", + "content-hash": "aefe28bbea442c1dc86fae2004bd3ff0", "packages": [ { "name": "composer/ca-bundle", diff --git a/psalm-baseline.xml b/psalm-baseline.xml index a5597c765a..909594aca3 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1144,11 +1144,6 @@ getParsedBodyParam('sql_query')]]> - - - __construct - - __construct @@ -2149,9 +2144,6 @@ - - __construct - @@ -2234,9 +2226,6 @@ $itemName $itemType - - __construct - @@ -2428,9 +2417,6 @@ $showTable $showTable - - __construct - @@ -3176,9 +3162,6 @@ $column $currValue - - __construct - @@ -3209,9 +3192,6 @@ $currentValue $whereClause - - __construct - @@ -12242,11 +12222,6 @@ - - - DatabaseInterface::getInstance() - - DatabaseInterface::getInstance() @@ -12580,7 +12555,6 @@ Config::getInstance() - DatabaseInterface::getInstance() @@ -13196,6 +13170,7 @@ DatabaseInterface::getInstance() DatabaseInterface::getInstance() DatabaseInterface::getInstance() + DatabaseInterface::getInstance() $currentTable diff --git a/src/Application.php b/src/Application.php index 0a8faaa1ed..7e1003005f 100644 --- a/src/Application.php +++ b/src/Application.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin; use Fig\Http\Message\StatusCodeInterface; use Laminas\HttpHandlerRunner\Emitter\SapiEmitter; use Laminas\HttpHandlerRunner\RequestHandlerRunner; +use PhpMyAdmin\Container\ContainerBuilder; use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\Http\Handler\ApplicationHandler; @@ -66,7 +67,7 @@ class Application public static function init(): self { /** @var Application $application */ - $application = Core::getContainerBuilder()->get(self::class); + $application = ContainerBuilder::getContainer()->get(self::class); return $application; } @@ -139,7 +140,7 @@ class Application return Routing::callControllerForRoute( $request, Routing::getDispatcher(), - Core::getContainerBuilder(), + ContainerBuilder::getContainer(), $this->responseFactory, ); } diff --git a/src/Container/ContainerBuilder.php b/src/Container/ContainerBuilder.php new file mode 100644 index 0000000000..290bc7a8c4 --- /dev/null +++ b/src/Container/ContainerBuilder.php @@ -0,0 +1,37 @@ +load('services_loader.php'); + + return $container; + } +} diff --git a/src/Controllers/Export/ExportController.php b/src/Controllers/Export/ExportController.php index 232eb5046e..0a363a59e1 100644 --- a/src/Controllers/Export/ExportController.php +++ b/src/Controllers/Export/ExportController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Export; use PhpMyAdmin\Config; +use PhpMyAdmin\Container\ContainerBuilder; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\ExportController as DatabaseExportController; use PhpMyAdmin\Core; @@ -301,7 +302,7 @@ final class ExportController extends AbstractController ); $GLOBALS['active_page'] = Url::getFromRoute('/database/export'); /** @var DatabaseExportController $controller */ - $controller = Core::getContainerBuilder()->get(DatabaseExportController::class); + $controller = ContainerBuilder::getContainer()->get(DatabaseExportController::class); $controller($request); return; diff --git a/src/Controllers/View/CreateController.php b/src/Controllers/View/CreateController.php index 5a56de7113..8e766a15d8 100644 --- a/src/Controllers/View/CreateController.php +++ b/src/Controllers/View/CreateController.php @@ -5,9 +5,9 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\View; use PhpMyAdmin\Config; +use PhpMyAdmin\Container\ContainerBuilder; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Table\StructureController; -use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; @@ -232,7 +232,7 @@ class CreateController extends AbstractController if ($ajaxdialog) { $GLOBALS['message'] = Message::success(); /** @var StructureController $controller */ - $controller = Core::getContainerBuilder()->get(StructureController::class); + $controller = ContainerBuilder::getContainer()->get(StructureController::class); $controller($request); } else { $this->response->addJSON( diff --git a/src/Core.php b/src/Core.php index 53ad31f51e..9da5233879 100644 --- a/src/Core.php +++ b/src/Core.php @@ -6,9 +6,6 @@ namespace PhpMyAdmin; use PhpMyAdmin\Exceptions\MissingExtensionException; use PhpMyAdmin\Http\ServerRequest; -use Symfony\Component\Config\FileLocator; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; use function __; use function array_keys; @@ -57,8 +54,6 @@ use const FILTER_VALIDATE_IP; */ class Core { - public static ContainerBuilder|null $containerBuilder = null; - /** * Removes insecure parts in a path; used before include() or * require() when a part of the path comes from an insecure source @@ -746,19 +741,6 @@ class Core return hash_equals($hmac, $signature); } - public static function getContainerBuilder(): ContainerBuilder - { - if (self::$containerBuilder !== null) { - return self::$containerBuilder; - } - - self::$containerBuilder = new ContainerBuilder(); - $loader = new PhpFileLoader(self::$containerBuilder, new FileLocator(ROOT_PATH . 'app')); - $loader->load('services_loader.php'); - - return self::$containerBuilder; - } - public static function populateRequestWithEncryptedQueryParams(ServerRequest $request): ServerRequest { $queryParams = $request->getQueryParams(); diff --git a/src/Display/Results.php b/src/Display/Results.php index 34c1890ed8..a0cfe41fd4 100644 --- a/src/Display/Results.php +++ b/src/Display/Results.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Display; use PhpMyAdmin\Config; use PhpMyAdmin\Config\SpecialSchemaLinks; use PhpMyAdmin\ConfigStorage\Relation; +use PhpMyAdmin\Container\ContainerBuilder; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; @@ -1152,7 +1153,7 @@ class Results } /** @var ThemeManager $themeManager */ - $themeManager = Core::getContainerBuilder()->get(ThemeManager::class); + $themeManager = ContainerBuilder::getContainer()->get(ThemeManager::class); $tmpImage = 'getResponseHtmlResult(), + $output, ); $this->dummyDbi->assertAllQueriesConsumed(); diff --git a/tests/classes/Controllers/NavigationControllerTest.php b/tests/classes/Controllers/NavigationControllerTest.php index a67698c5dd..ca59489ec0 100644 --- a/tests/classes/Controllers/NavigationControllerTest.php +++ b/tests/classes/Controllers/NavigationControllerTest.php @@ -5,13 +5,18 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers; use PhpMyAdmin\Config; +use PhpMyAdmin\Config\PageSettings; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\NavigationController; -use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\Navigation\Navigation; +use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; +use PhpMyAdmin\Tests\Stubs\ResponseRenderer; +use PhpMyAdmin\UserPreferences; use PHPUnit\Framework\Attributes\CoversClass; use function sprintf; @@ -34,8 +39,6 @@ class NavigationControllerTest extends AbstractTestCase public function testIndex(): void { - parent::loadDbiIntoContainerBuilder(); - parent::setLanguage(); $GLOBALS['server'] = 1; @@ -44,8 +47,6 @@ class NavigationControllerTest extends AbstractTestCase $config->selectedServer['DisableIS'] = false; $config->selectedServer['auth_type'] = 'cookie'; - parent::loadResponseIntoContainerBuilder(); - // This example path data has nothing to do with the actual test // root.air-balloon_burner_dev2 $_POST['n0_aPath'] = 'cm9vdA==.YWlyLWJhbGxvb25fYnVybmVyX2RldjI='; @@ -122,17 +123,26 @@ class NavigationControllerTest extends AbstractTestCase [[0]], ); - /** @var NavigationController $navigationController */ - $navigationController = Core::getContainerBuilder()->get(NavigationController::class); + $responseRenderer = new ResponseRenderer(); + $template = new Template(); + $relation = new Relation($this->dbi); + $navigationController = new NavigationController( + $responseRenderer, + $template, + new Navigation($template, $relation, $this->dbi), + $relation, + new PageSettings(new UserPreferences($this->dbi, $relation, $template)), + ); + $_POST['full'] = '1'; $request = $this->createStub(ServerRequest::class); $request->method('isAjax')->willReturn(true); $navigationController($request); - $this->assertResponseWasSuccessfull(); + $this->assertTrue($responseRenderer->hasSuccessState(), 'expected the request not to fail'); - $responseMessage = $this->getResponseJsonResult()['message']; + $responseMessage = $responseRenderer->getJSONResult()['message']; $this->assertStringContainsString('
', $responseMessage); @@ -182,8 +192,6 @@ class NavigationControllerTest extends AbstractTestCase public function testIndexWithPosAndValue(): void { - parent::loadDbiIntoContainerBuilder(); - parent::setLanguage(); $GLOBALS['server'] = 1; @@ -192,8 +200,6 @@ class NavigationControllerTest extends AbstractTestCase $config->selectedServer['DisableIS'] = false; $config->selectedServer['auth_type'] = 'cookie'; - parent::loadResponseIntoContainerBuilder(); - // root.air-balloon_burner_dev2 $_POST['n0_aPath'] = 'cm9vdA==.YWlyLWJhbGxvb25fYnVybmVyX2RldjI='; // root.air-balloon.burner_dev2 @@ -272,17 +278,26 @@ class NavigationControllerTest extends AbstractTestCase [[0]], ); - /** @var NavigationController $navigationController */ - $navigationController = Core::getContainerBuilder()->get(NavigationController::class); + $responseRenderer = new ResponseRenderer(); + $template = new Template(); + $relation = new Relation($this->dbi); + $navigationController = new NavigationController( + $responseRenderer, + $template, + new Navigation($template, $relation, $this->dbi), + $relation, + new PageSettings(new UserPreferences($this->dbi, $relation, $template)), + ); + $_POST['full'] = '1'; $request = $this->createStub(ServerRequest::class); $request->method('isAjax')->willReturn(true); $navigationController($request); - $this->assertResponseWasSuccessfull(); + $this->assertTrue($responseRenderer->hasSuccessState(), 'expected the request not to fail'); - $responseMessage = $this->getResponseJsonResult()['message']; + $responseMessage = $responseRenderer->getJSONResult()['message']; $this->assertStringContainsString('
', $responseMessage); diff --git a/tests/classes/Controllers/Normalization/MainControllerTest.php b/tests/classes/Controllers/Normalization/MainControllerTest.php index 28c60f2cc4..077c23abc9 100644 --- a/tests/classes/Controllers/Normalization/MainControllerTest.php +++ b/tests/classes/Controllers/Normalization/MainControllerTest.php @@ -33,12 +33,8 @@ class MainControllerTest extends AbstractTestCase $this->dbi = $this->createDatabaseInterface($this->dummyDbi); DatabaseInterface::$instance = $this->dbi; - parent::loadDbiIntoContainerBuilder(); - $GLOBALS['server'] = 1; - parent::loadResponseIntoContainerBuilder(); - Current::$database = 'my_db'; Current::$table = 'test_tbl'; } diff --git a/tests/classes/Controllers/Operations/TableControllerTest.php b/tests/classes/Controllers/Operations/TableControllerTest.php index 68ac0eb80a..518821ea6e 100644 --- a/tests/classes/Controllers/Operations/TableControllerTest.php +++ b/tests/classes/Controllers/Operations/TableControllerTest.php @@ -5,16 +5,20 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Operations; use PhpMyAdmin\Charsets; +use PhpMyAdmin\CheckUserPrivileges; use PhpMyAdmin\Config; +use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\Operations\TableController; -use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Http\Factory\ServerRequestFactory; +use PhpMyAdmin\Operations; use PhpMyAdmin\StorageEngine; use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; +use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PHPUnit\Framework\Attributes\CoversClass; #[CoversClass(TableController::class)] @@ -45,9 +49,6 @@ class TableControllerTest extends AbstractTestCase $config->selectServer('1'); $config->settings['MaxDbList'] = 0; - $this->loadDbiIntoContainerBuilder(); - $this->loadResponseIntoContainerBuilder(); - $this->dummyDbi->addResult( 'SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`', [['test_db']], @@ -121,10 +122,19 @@ class TableControllerTest extends AbstractTestCase $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withQueryParams(['db' => 'test_db', 'table' => 'test_table']); - /** @var TableController $controller */ - $controller = Core::getContainerBuilder()->get(TableController::class); + $responseRenderer = new ResponseRenderer(); + $relation = new Relation($this->dbi); + $controller = new TableController( + $responseRenderer, + new Template($config), + new Operations($this->dbi, $relation), + new CheckUserPrivileges($this->dbi), + $relation, + $this->dbi, + new DbTableExists($this->dbi), + ); $controller($request); - $this->assertEquals($expectedOutput, $this->getResponseHtmlResult()); + $this->assertEquals($expectedOutput, $responseRenderer->getHTMLResult()); } } diff --git a/tests/classes/Controllers/Sql/EnumValuesControllerTest.php b/tests/classes/Controllers/Sql/EnumValuesControllerTest.php index 817c033270..070dc02c43 100644 --- a/tests/classes/Controllers/Sql/EnumValuesControllerTest.php +++ b/tests/classes/Controllers/Sql/EnumValuesControllerTest.php @@ -4,13 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Sql; +use PhpMyAdmin\Bookmarks\BookmarkRepository; +use PhpMyAdmin\CheckUserPrivileges; +use PhpMyAdmin\ConfigStorage\Relation; +use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\Sql\EnumValuesController; -use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\Operations; +use PhpMyAdmin\Sql; +use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; +use PhpMyAdmin\Tests\Stubs\ResponseRenderer; +use PhpMyAdmin\Transformations; use PHPUnit\Framework\Attributes\CoversClass; #[CoversClass(EnumValuesController::class)] @@ -28,12 +36,8 @@ class EnumValuesControllerTest extends AbstractTestCase $this->dbi = $this->createDatabaseInterface($this->dummyDbi); DatabaseInterface::$instance = $this->dbi; - parent::loadDbiIntoContainerBuilder(); - $GLOBALS['server'] = 1; $GLOBALS['text_dir'] = 'ltr'; - - parent::loadResponseIntoContainerBuilder(); } public function testGetEnumValuesError(): void @@ -52,16 +56,31 @@ class EnumValuesControllerTest extends AbstractTestCase ['curr_value', null, 'b&c'], ]); - /** @var EnumValuesController $sqlController */ - $sqlController = Core::getContainerBuilder()->get(EnumValuesController::class); + $responseRenderer = new ResponseRenderer(); + $template = new Template(); + $relation = new Relation($this->dbi); + $bookmarkRepository = new BookmarkRepository($this->dbi, $relation); + $sql = new Sql( + $this->dbi, + $relation, + self::createStub(RelationCleanup::class), + self::createStub(Operations::class), + self::createStub(Transformations::class), + $template, + $bookmarkRepository, + ); + + $sqlController = new EnumValuesController( + $responseRenderer, + $template, + $sql, + new CheckUserPrivileges($this->dbi), + ); $sqlController($request); - $this->assertResponseWasNotSuccessfull(); + $this->assertFalse($responseRenderer->hasSuccessState(), 'expected the request to fail'); - $this->assertSame( - ['message' => 'Error in processing request'], - $this->getResponseJsonResult(), - ); + $this->assertSame(['message' => 'Error in processing request'], $responseRenderer->getJSONResult()); } public function testGetEnumValuesSuccess(): void @@ -93,11 +112,29 @@ class EnumValuesControllerTest extends AbstractTestCase ['curr_value', null, 'b&c'], ]); - /** @var EnumValuesController $sqlController */ - $sqlController = Core::getContainerBuilder()->get(EnumValuesController::class); + $responseRenderer = new ResponseRenderer(); + $template = new Template(); + $relation = new Relation($this->dbi); + $bookmarkRepository = new BookmarkRepository($this->dbi, $relation); + $sql = new Sql( + $this->dbi, + $relation, + self::createStub(RelationCleanup::class), + self::createStub(Operations::class), + self::createStub(Transformations::class), + $template, + $bookmarkRepository, + ); + + $sqlController = new EnumValuesController( + $responseRenderer, + $template, + $sql, + new CheckUserPrivileges($this->dbi), + ); $sqlController($request); - $this->assertResponseWasSuccessfull(); + $this->assertTrue($responseRenderer->hasSuccessState(), 'expected the request not to fail'); $this->assertSame( [ @@ -114,7 +151,7 @@ class EnumValuesControllerTest extends AbstractTestCase . ' ' . "\n" . ' ' . "\n", ], - $this->getResponseJsonResult(), + $responseRenderer->getJSONResult(), ); } } diff --git a/tests/classes/Controllers/Sql/SetValuesControllerTest.php b/tests/classes/Controllers/Sql/SetValuesControllerTest.php index 690cabf61a..d02908bcba 100644 --- a/tests/classes/Controllers/Sql/SetValuesControllerTest.php +++ b/tests/classes/Controllers/Sql/SetValuesControllerTest.php @@ -4,13 +4,21 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Sql; +use PhpMyAdmin\Bookmarks\BookmarkRepository; +use PhpMyAdmin\CheckUserPrivileges; +use PhpMyAdmin\ConfigStorage\Relation; +use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\Sql\SetValuesController; -use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\Operations; +use PhpMyAdmin\Sql; +use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; +use PhpMyAdmin\Tests\Stubs\ResponseRenderer; +use PhpMyAdmin\Transformations; use PHPUnit\Framework\Attributes\CoversClass; #[CoversClass(SetValuesController::class)] @@ -28,12 +36,8 @@ class SetValuesControllerTest extends AbstractTestCase $this->dbi = $this->createDatabaseInterface($this->dummyDbi); DatabaseInterface::$instance = $this->dbi; - parent::loadDbiIntoContainerBuilder(); - $GLOBALS['server'] = 1; $GLOBALS['text_dir'] = 'ltr'; - - parent::loadResponseIntoContainerBuilder(); } public function testError(): void @@ -53,16 +57,31 @@ class SetValuesControllerTest extends AbstractTestCase Current::$database = 'cvv'; Current::$table = 'enums'; - /** @var SetValuesController $sqlController */ - $sqlController = Core::getContainerBuilder()->get(SetValuesController::class); + $responseRenderer = new ResponseRenderer(); + $template = new Template(); + $relation = new Relation($this->dbi); + $bookmarkRepository = new BookmarkRepository($this->dbi, $relation); + $sql = new Sql( + $this->dbi, + $relation, + self::createStub(RelationCleanup::class), + self::createStub(Operations::class), + self::createStub(Transformations::class), + $template, + $bookmarkRepository, + ); + + $sqlController = new SetValuesController( + $responseRenderer, + $template, + $sql, + new CheckUserPrivileges($this->dbi), + ); $sqlController($request); - $this->assertResponseWasNotSuccessfull(); + $this->assertFalse($responseRenderer->hasSuccessState(), 'expected the request to fail'); - $this->assertSame( - ['message' => 'Error in processing request'], - $this->getResponseJsonResult(), - ); + $this->assertSame(['message' => 'Error in processing request'], $responseRenderer->getJSONResult()); } public function testSuccess(): void @@ -95,11 +114,29 @@ class SetValuesControllerTest extends AbstractTestCase Current::$database = 'cvv'; Current::$table = 'enums'; - /** @var SetValuesController $sqlController */ - $sqlController = Core::getContainerBuilder()->get(SetValuesController::class); + $responseRenderer = new ResponseRenderer(); + $template = new Template(); + $relation = new Relation($this->dbi); + $bookmarkRepository = new BookmarkRepository($this->dbi, $relation); + $sql = new Sql( + $this->dbi, + $relation, + self::createStub(RelationCleanup::class), + self::createStub(Operations::class), + self::createStub(Transformations::class), + $template, + $bookmarkRepository, + ); + + $sqlController = new SetValuesController( + $responseRenderer, + $template, + $sql, + new CheckUserPrivileges($this->dbi), + ); $sqlController($request); - $this->assertResponseWasSuccessfull(); + $this->assertTrue($responseRenderer->hasSuccessState(), 'expected the request not to fail'); $this->assertSame( [ @@ -112,7 +149,7 @@ class SetValuesControllerTest extends AbstractTestCase . ' ' . "\n" . ' ' . "\n", ], - $this->getResponseJsonResult(), + $responseRenderer->getJSONResult(), ); } } diff --git a/tests/classes/Controllers/Table/ExportControllerTest.php b/tests/classes/Controllers/Table/ExportControllerTest.php index 8609325abd..8daf38db1b 100644 --- a/tests/classes/Controllers/Table/ExportControllerTest.php +++ b/tests/classes/Controllers/Table/ExportControllerTest.php @@ -40,8 +40,6 @@ class ExportControllerTest extends AbstractTestCase public function testExportController(): void { - parent::loadDbiIntoContainerBuilder(); - Current::$database = 'test_db'; Current::$table = 'test_table'; $config = Config::getInstance(); diff --git a/tests/classes/Controllers/Table/SearchControllerTest.php b/tests/classes/Controllers/Table/SearchControllerTest.php index c057488b62..e24b876842 100644 --- a/tests/classes/Controllers/Table/SearchControllerTest.php +++ b/tests/classes/Controllers/Table/SearchControllerTest.php @@ -125,10 +125,6 @@ class SearchControllerTest extends AbstractTestCase $this->dbi = $this->createDatabaseInterface($this->dummyDbi); DatabaseInterface::$instance = $this->dbi; - parent::loadDbiIntoContainerBuilder(); - - parent::loadResponseIntoContainerBuilder(); - $_SESSION[' HMAC_secret '] = hash('sha1', 'test'); $this->dummyDbi->addResult( @@ -151,8 +147,14 @@ class SearchControllerTest extends AbstractTestCase ], ); - /** @var SearchController $ctrl */ - $ctrl = Core::getContainerBuilder()->get(SearchController::class); + $ctrl = new SearchController( + $this->response, + $this->template, + new Search($this->dbi), + new Relation($this->dbi), + $this->dbi, + new DbTableExists($this->dbi), + ); $_POST['db'] = 'PMA'; $_POST['table'] = 'PMA_BookMark'; @@ -161,7 +163,7 @@ class SearchControllerTest extends AbstractTestCase $expected = ['col1' => 1, 'col2' => 2]; $ctrl->getDataRowAction(); - $json = $this->getResponseJsonResult(); + $json = $this->response->getJSONResult(); $this->assertEquals($expected, $json['row_info']); } } diff --git a/tests/classes/CoreTest.php b/tests/classes/CoreTest.php index 4119c4781c..fd58061397 100644 --- a/tests/classes/CoreTest.php +++ b/tests/classes/CoreTest.php @@ -732,14 +732,4 @@ class CoreTest extends AbstractTestCase self::assertSame('', Core::getEnv('PHPMYADMIN_GET_ENV_TEST')); } - - public function testGetContainerBuilder(): void - { - Core::$containerBuilder = null; - $containerBuilder = Core::getContainerBuilder(); - self::assertSame($containerBuilder, Core::getContainerBuilder()); - Core::$containerBuilder = null; - self::assertNotSame($containerBuilder, Core::getContainerBuilder()); - Core::$containerBuilder = null; - } } diff --git a/tests/classes/Export/OptionsTest.php b/tests/classes/Export/OptionsTest.php index 007a57c277..f6be9bd064 100644 --- a/tests/classes/Export/OptionsTest.php +++ b/tests/classes/Export/OptionsTest.php @@ -32,8 +32,6 @@ class OptionsTest extends AbstractTestCase $dbi = $this->createDatabaseInterface(); DatabaseInterface::$instance = $dbi; - parent::loadDbiIntoContainerBuilder(); - $GLOBALS['server'] = 0; Current::$table = 'table'; diff --git a/tests/classes/PluginsTest.php b/tests/classes/PluginsTest.php index 9c18c013bb..aaf0effafa 100644 --- a/tests/classes/PluginsTest.php +++ b/tests/classes/PluginsTest.php @@ -21,8 +21,6 @@ class PluginsTest extends AbstractTestCase parent::setUp(); DatabaseInterface::$instance = $this->createDatabaseInterface(); - - parent::loadDbiIntoContainerBuilder(); } public function testGetExport(): void diff --git a/tests/classes/Table/TableTest.php b/tests/classes/Table/TableTest.php index 2eb56d20fa..07b3953167 100644 --- a/tests/classes/Table/TableTest.php +++ b/tests/classes/Table/TableTest.php @@ -1436,8 +1436,6 @@ class TableTest extends AbstractTestCase 'utf8mb4_unicode_ci', ]); - $this->loadDbiIntoContainerBuilder(); - $GLOBALS['sql_query'] = ''; $return = Table::moveCopy('aa', 'ad', 'bb', 'ad', 'structure', true, 'db_copy', true); $this->assertTrue($return); diff --git a/tests/classes/Tracking/TrackerTest.php b/tests/classes/Tracking/TrackerTest.php index bf57cd6bda..0b66232951 100644 --- a/tests/classes/Tracking/TrackerTest.php +++ b/tests/classes/Tracking/TrackerTest.php @@ -33,8 +33,6 @@ class TrackerTest extends AbstractTestCase DatabaseInterface::$instance = $this->createDatabaseInterface(); - parent::loadDbiIntoContainerBuilder(); - /** * SET these to avoid undefined index error */