selectedServer['DisableIS'] = true; $dummyDbi = $this->createDbiDummy(); // phpcs:disable Generic.Files.LineLength.TooLong $dummyDbi->removeDefaultResults(); $dummyDbi->addSelectDb('test_db'); $dummyDbi->addResult('SELECT CURRENT_USER();', [['definer@localhost']], ['CURRENT_USER()']); $dummyDbi->addResult( 'SHOW GRANTS', [['GRANT ALL PRIVILEGES ON *.* TO `definer`@`localhost`']], ['Grants for definer@localhost'], ); $dummyDbi->addResult( 'SHOW FUNCTION STATUS WHERE `Db` = \'test_db\'', [['test_db', 'test_func', 'FUNCTION', 'definer@localhost']], ['Db', 'Name', 'Type', 'Definer'], ); $dummyDbi->addResult( 'SHOW PROCEDURE STATUS WHERE `Db` = \'test_db\'', [['test_db', 'test_proc', 'PROCEDURE', 'definer@localhost']], ['Db', 'Name', 'Type', 'Definer'], ); $dummyDbi->addResult('SELECT @@lower_case_table_names', []); $dummyDbi->addResult( "SELECT `DEFINER` FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA COLLATE utf8_bin='test_db' AND SPECIFIC_NAME='test_func' AND ROUTINE_TYPE='FUNCTION';", [['definer@localhost']], ['DEFINER'], ); $dummyDbi->addResult( "SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES` WHERE GRANTEE='''definer''@''localhost''' AND PRIVILEGE_TYPE='CREATE ROUTINE'", [['CREATE ROUTINE']], ['PRIVILEGE_TYPE'], ); $dummyDbi->addResult( "SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES` WHERE GRANTEE='''definer''@''localhost''' AND PRIVILEGE_TYPE='EXECUTE'", [['EXECUTE']], ['PRIVILEGE_TYPE'], ); $dummyDbi->addResult( 'SHOW CREATE FUNCTION `test_db`.`test_func`', [['test_func', 'CREATE FUNCTION `test_func` (p INT) RETURNS int(11) BEGIN END']], ['Function', 'Create Function'], ); $dummyDbi->addResult( "SELECT `DEFINER` FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA COLLATE utf8_bin='test_db' AND SPECIFIC_NAME='test_proc' AND ROUTINE_TYPE='PROCEDURE';", [['definer@localhost']], ['DEFINER'], ); $dummyDbi->addResult( "SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES` WHERE GRANTEE='''definer''@''localhost''' AND PRIVILEGE_TYPE='CREATE ROUTINE'", [['CREATE ROUTINE']], ['PRIVILEGE_TYPE'], ); $dummyDbi->addResult( "SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES` WHERE GRANTEE='''definer''@''localhost''' AND PRIVILEGE_TYPE='EXECUTE'", [['EXECUTE']], ['PRIVILEGE_TYPE'], ); $dummyDbi->addResult( 'SHOW CREATE PROCEDURE `test_db`.`test_proc`', [['test_proc2', 'CREATE PROCEDURE `test_proc2` (p INT) BEGIN END']], ['Procedure', 'Create Procedure'], ); $dummyDbi->addResult( "SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES` WHERE GRANTEE='''definer''@''localhost''' AND PRIVILEGE_TYPE='CREATE ROUTINE'", [['CREATE ROUTINE']], ['PRIVILEGE_TYPE'], ); // phpcs:enable $dbi = $this->createDatabaseInterface($dummyDbi); DatabaseInterface::$instance = $dbi; $template = new Template(); $response = new ResponseRenderer(); $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withQueryParams(['db' => 'test_db']); (new RoutinesController( $response, $template, new CheckUserPrivileges($dbi), $dbi, new Routines($dbi), new DbTableExists($dbi), ))($request); $actual = $response->getHTMLResult(); // phpcs:disable Generic.Files.LineLength.TooLong $expected = <<<'HTML'
HTML; // phpcs:enable $this->assertSame($expected, $actual); } public function testWithoutRoutines(): void { $GLOBALS['server'] = 2; $GLOBALS['text_dir'] = 'ltr'; $GLOBALS['PMA_PHP_SELF'] = 'index.php'; $GLOBALS['db'] = 'test_db'; Config::getInstance()->selectedServer['DisableIS'] = true; $dummyDbi = $this->createDbiDummy(); // phpcs:disable Generic.Files.LineLength.TooLong $dummyDbi->removeDefaultResults(); $dummyDbi->addSelectDb('test_db'); $dummyDbi->addResult('SELECT CURRENT_USER();', [['definer@localhost']], ['CURRENT_USER()']); $dummyDbi->addResult( 'SHOW GRANTS', [['GRANT ALL PRIVILEGES ON *.* TO `definer`@`localhost`']], ['Grants for definer@localhost'], ); $dummyDbi->addResult('SHOW FUNCTION STATUS WHERE `Db` = \'test_db\'', [], ['Db', 'Name', 'Type', 'Definer']); $dummyDbi->addResult('SHOW PROCEDURE STATUS WHERE `Db` = \'test_db\'', [], ['Db', 'Name', 'Type', 'Definer']); $dummyDbi->addResult( "SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.`USER_PRIVILEGES` WHERE GRANTEE='''definer''@''localhost''' AND PRIVILEGE_TYPE='CREATE ROUTINE'", [['CREATE ROUTINE']], ['PRIVILEGE_TYPE'], ); // phpcs:enable $dbi = $this->createDatabaseInterface($dummyDbi); DatabaseInterface::$instance = $dbi; $template = new Template(); $response = new ResponseRenderer(); $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withQueryParams(['db' => 'test_db']); (new RoutinesController( $response, $template, new CheckUserPrivileges($dbi), $dbi, new Routines($dbi), new DbTableExists($dbi), ))($request); $actual = $response->getHTMLResult(); // phpcs:disable Generic.Files.LineLength.TooLong $expected = <<<'HTML' HTML; // phpcs:enable $this->assertSame($expected, $actual); } }