dummyDbi = $this->createDbiDummy(); $this->dbi = $this->createDatabaseInterface($this->dummyDbi); $GLOBALS['dbi'] = $this->dbi; } public function testIndex(): void { parent::loadContainerBuilder(); parent::loadDbiIntoContainerBuilder(); parent::setLanguage(); $this->setTheme(); $GLOBALS['server'] = 1; $GLOBALS['db'] = 'air-balloon_burner_dev2'; $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['cfg']['Server']['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='; // root.air-balloon.burner_dev2 $_POST['n0_vPath'] = 'cm9vdA==.YWlyLWJhbGxvb24=.YnVybmVyX2RldjI='; $this->dummyDbi->removeDefaultResults(); $this->dummyDbi->addResult( 'SELECT CURRENT_USER();', [['pma_test@localhost']], ); $this->dummyDbi->addResult( 'SHOW GRANTS', [], ); $this->dummyDbi->addResult( 'SELECT (COUNT(DB_first_level) DIV 100) * 100 from (' . ' SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, \'_\', 1) DB_first_level ' . 'FROM INFORMATION_SCHEMA.SCHEMATA WHERE `SCHEMA_NAME` < \'air-balloon_burner_dev2\' ) t', [], ); $this->dummyDbi->addResult( 'SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`, ' . '(SELECT DB_first_level FROM ( SELECT DISTINCT ' . "SUBSTRING_INDEX(SCHEMA_NAME, '_', 1) DB_first_level " . 'FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t ORDER BY ' . 'DB_first_level ASC LIMIT 0, 100) t2 WHERE TRUE AND 1 = LOCATE(' . "CONCAT(DB_first_level, '_'), CONCAT(SCHEMA_NAME, '_')) " . 'ORDER BY SCHEMA_NAME ASC', [['air-balloon_burner_dev2']], ['SCHEMA_NAME'], ); $sqlCount = 'SELECT COUNT(*) FROM ( SELECT DISTINCT SUBSTRING_INDEX(SCHEMA_NAME, \'_\', 1) ' . 'DB_first_level FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t'; $this->dummyDbi->addResult( $sqlCount, [[179]], ); $this->dummyDbi->addResult( $sqlCount, [[179]], ); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=\'air-balloon_burner_dev2\'' . ' AND `TABLE_TYPE` IN(\'BASE TABLE\', \'SYSTEM VERSIONED\')', [[0]], ); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=\'air-balloon_burner_dev2\'' . ' AND `TABLE_TYPE` NOT IN(\'BASE TABLE\', \'SYSTEM VERSIONED\')', [[0]], ); $this->dummyDbi->addResult('SELECT @@lower_case_table_names', [['0']]); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`ROUTINES` WHERE ' . '`ROUTINE_SCHEMA` COLLATE utf8_bin=\'air-balloon_burner_dev2\' AND `ROUTINE_TYPE`=\'FUNCTION\'', [[0]], ); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`ROUTINES`' . ' WHERE `ROUTINE_SCHEMA` COLLATE utf8_bin=\'air-balloon_burner_dev2\'' . 'AND `ROUTINE_TYPE`=\'PROCEDURE\'', [[0]], ); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`EVENTS`' . ' WHERE `EVENT_SCHEMA` COLLATE utf8_bin=\'air-balloon_burner_dev2\'', [[0]], ); /** @var NavigationController $navigationController */ $navigationController = $GLOBALS['containerBuilder']->get(NavigationController::class); $_POST['full'] = '1'; $request = $this->createStub(ServerRequest::class); $request->method('isAjax')->willReturn(true); $navigationController($request); $this->assertResponseWasSuccessfull(); $responseMessage = $this->getResponseJsonResult()['message']; $this->assertStringContainsString('
', $responseMessage); // root.air-balloon_burner_dev2 // cm9vdA==.YWlyLWJhbGxvb25fYnVybmVyX2RldjI= $this->assertStringContainsString( '
' . "\n" . ' ' . "\n" . '
', $responseMessage, ); $this->dummyDbi->assertAllQueriesConsumed(); } public function testIndexWithPosAndValue(): void { parent::loadContainerBuilder(); parent::loadDbiIntoContainerBuilder(); parent::setLanguage(); $GLOBALS['server'] = 1; $GLOBALS['db'] = 'air-balloon_burner_dev2'; $GLOBALS['cfg']['Server']['DisableIS'] = false; $GLOBALS['cfg']['Server']['auth_type'] = 'cookie'; parent::loadResponseIntoContainerBuilder(); // root.air-balloon_burner_dev2 $_POST['n0_aPath'] = 'cm9vdA==.YWlyLWJhbGxvb25fYnVybmVyX2RldjI='; // root.air-balloon.burner_dev2 $_POST['n0_vPath'] = 'cm9vdA==.YWlyLWJhbGxvb24=.YnVybmVyX2RldjI='; $_POST['n0_pos2_name'] = 'tables'; $_POST['n0_pos2_value'] = 0; $this->dummyDbi->removeDefaultResults(); $this->dummyDbi->addResult( 'SELECT CURRENT_USER();', [['pma_test@localhost']], ); $this->dummyDbi->addResult( 'SHOW GRANTS', [], ); $this->dummyDbi->addResult( 'SELECT (COUNT(DB_first_level) DIV 100) * 100 from (' . ' SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, \'_\', 1) DB_first_level ' . 'FROM INFORMATION_SCHEMA.SCHEMATA WHERE `SCHEMA_NAME` < \'air-balloon_burner_dev2\' ) t', [], ); $this->dummyDbi->addResult( 'SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`, ' . '(SELECT DB_first_level FROM ( SELECT DISTINCT ' . "SUBSTRING_INDEX(SCHEMA_NAME, '_', 1) DB_first_level " . 'FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t ORDER BY ' . 'DB_first_level ASC LIMIT 0, 100) t2 WHERE TRUE AND 1 = LOCATE(' . "CONCAT(DB_first_level, '_'), CONCAT(SCHEMA_NAME, '_')) " . 'ORDER BY SCHEMA_NAME ASC', [['air-balloon_burner_dev'], ['air-balloon_burner_dev2'], ['air-balloon_dev']], ['SCHEMA_NAME'], ); $sqlCount = 'SELECT COUNT(*) FROM ( SELECT DISTINCT SUBSTRING_INDEX(SCHEMA_NAME, \'_\', 1) ' . 'DB_first_level FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t'; $this->dummyDbi->addResult( $sqlCount, [[179]], ); $this->dummyDbi->addResult( $sqlCount, [[179]], ); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=\'air-balloon_burner_dev2\'' . ' AND `TABLE_TYPE` IN(\'BASE TABLE\', \'SYSTEM VERSIONED\')', [[0]], ); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=\'air-balloon_burner_dev2\'' . ' AND `TABLE_TYPE` NOT IN(\'BASE TABLE\', \'SYSTEM VERSIONED\')', [[0]], ); $this->dummyDbi->addResult('SELECT @@lower_case_table_names', [['0']]); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`ROUTINES` WHERE ' . '`ROUTINE_SCHEMA` COLLATE utf8_bin=\'air-balloon_burner_dev2\' AND `ROUTINE_TYPE`=\'FUNCTION\'', [[0]], ); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`EVENTS` WHERE' . ' `EVENT_SCHEMA` COLLATE utf8_bin=\'air-balloon_burner_dev2\'', [[0]], ); $this->dummyDbi->addResult( 'SELECT COUNT(*) FROM `INFORMATION_SCHEMA`.`ROUTINES` WHERE ' . '`ROUTINE_SCHEMA` COLLATE utf8_bin=\'air-balloon_burner_dev2\'AND `ROUTINE_TYPE`=\'PROCEDURE\'', [[0]], ); /** @var NavigationController $navigationController */ $navigationController = $GLOBALS['containerBuilder']->get(NavigationController::class); $_POST['full'] = '1'; $request = $this->createStub(ServerRequest::class); $request->method('isAjax')->willReturn(true); $navigationController($request); $this->assertResponseWasSuccessfull(); $responseMessage = $this->getResponseJsonResult()['message']; $this->assertStringContainsString('
', $responseMessage); $dbTemplate = '
  • ' . "\n" . '
    ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' Expand/Collapse' . "\n" . ' ' . "\n" . '
    ' . "\n" . ' ' . "\n" . '
    ' . "\n" . ' ' . 'Database operations' . "\n" . '
    ' . "\n" . "\n" . ' %s' . "\n" . ' ' . "\n" . ' ' . "\n" . "\n" . ' ' . "\n" . '
    ' . "\n" . "\n" . "\n" . "\n" . '
  • '; $dbTemplateLast = '
  • ' . "\n"// "last" class added . '
    ' . "\n" . ' ' . "\n" . ' ' . "\n"// node is removed . ' ' . "\n" . ' ' . "\n" . ' Expand/Collapse' . "\n" . ' ' . "\n" . '
    ' . "\n" . ' ' . "\n" . '
    ' . "\n" . ' ' . 'Database operations' . "\n" . '
    ' . "\n" . "\n" . ' %s' . "\n" . ' ' . "\n" . ' ' . "\n" . "\n" . ' ' . "\n" . '
    ' . "\n" . "\n" . "\n" . "\n" . '
  • '; $dbTemplateExpanded = '
  • ' . "\n" . '
    ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n" . ' ' . "\n"// Icon changes . ' ' . "\n" . '
    ' . "\n" . ' ' . "\n" . '
    ' . "\n" . ' ' . 'Database operations' . "\n" . '
    ' . "\n" . "\n" . ' %s' . "\n" . ' ' . "\n" . ' ' . "\n" . "\n" . ' ' . "\n" . '
    ' . "\n" . "\n" . "\n" . "\n" . '
  • '; // root.air-balloon_burner_dev2 // cm9vdA==.YWlyLWJhbGxvb25fYnVybmVyX2RldjI= $this->assertStringContainsString( '
    ' . "\n" . '
      ' . "\n" . '
    ' . "\n" . '
    ' . "\n", $responseMessage, ); $this->dummyDbi->assertAllQueriesConsumed(); } }