2 /* vim: set expandtab sw=4 ts=4 sts=4: */
4 * tests for PhpMyAdmin\MultSubmits
6 * @package PhpMyAdmin-test
8 namespace PhpMyAdmin\Tests
;
10 use PhpMyAdmin\MultSubmits
;
12 use PHPUnit\Framework\TestCase
;
15 * PhpMyAdmin\Tests\MultSubmitsTest class
17 * this class is for testing PhpMyAdmin\MultSubmits methods
19 * @package PhpMyAdmin-test
21 class MultSubmitsTest
extends TestCase
30 protected function setUp()
33 $GLOBALS['cfg']['MaxRows'] = 10;
34 $GLOBALS['cfg']['ServerDefault'] = "server";
35 $GLOBALS['cfg']['RememberSorting'] = true;
36 $GLOBALS['cfg']['SQP'] = [];
37 $GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 1000;
38 $GLOBALS['cfg']['ShowSQL'] = true;
39 $GLOBALS['cfg']['TableNavigationLinksMode'] = 'icons';
40 $GLOBALS['cfg']['LimitChars'] = 100;
41 $GLOBALS['cfg']['Server']['DisableIS'] = false;
42 $GLOBALS['server'] = 0;
43 $GLOBALS['cfg']['ActionLinksMode'] = "both";
46 $_SESSION['relation'][$GLOBALS['server']] = [
47 'PMA_VERSION' => PMA_VERSION
,
48 'table_coords' => "table_name",
49 'displaywork' => 'displaywork',
50 'db' => "information_schema",
51 'table_info' => 'table_info',
52 'relwork' => 'relwork',
53 'commwork' => 'commwork',
54 'pdfwork' => 'pdfwork',
55 'column_info' => 'column_info',
56 'relation' => 'relation',
62 $dbi = $this->getMockBuilder('PhpMyAdmin\DatabaseInterface')
63 ->disableOriginalConstructor()
66 $dbi->expects($this->any())
68 ->will($this->returnValue(true));
70 $GLOBALS['dbi'] = $dbi;
72 $this->multSubmits
= new MultSubmits();
76 * Test for getHtmlForReplacePrefixTable
80 public function testGetHtmlForReplacePrefixTable()
82 $action = 'delete_row';
83 $urlParams = ['url_query'=>'PMA_original_url_query'];
85 //Call the test function
86 $html = $this->multSubmits
->getHtmlForReplacePrefixTable($action, $urlParams);
89 $this->assertContains(
90 '<form id="ajax_form" action="delete_row" method="post">',
93 //$Url::getHiddenInputs
94 $this->assertContains(
95 Url
::getHiddenInputs($urlParams),
99 $this->assertContains(
100 '<input type="text" name="from_prefix" id="initialPrefix" />',
106 * Test for getHtmlForAddPrefixTable
110 public function testGetHtmlForAddPrefixTable()
112 $action = 'delete_row';
113 $urlParams = ['url_query'=>'PMA_original_url_query'];
115 //Call the test function
116 $html = $this->multSubmits
->getHtmlForAddPrefixTable($action, $urlParams);
119 $this->assertContains(
120 '<form id="ajax_form" action="' . $action . '" method="post">',
124 $this->assertContains(
125 Url
::getHiddenInputs($urlParams),
129 $this->assertContains(
136 * Test for getHtmlForOtherActions
140 public function testGetHtmlForOtherActions()
142 $what = 'replace_prefix_tbl';
143 $action = 'delete_row';
144 $urlParams = ['url_query'=>'PMA_original_url_query'];
145 $fullQuery = 'select column from PMA_table';
147 //Call the test function
148 $html = $this->multSubmits
->getHtmlForOtherActions(
155 //validate 1: form action
156 $this->assertContains(
157 '<form action="' . $action . '" method="post">',
160 //validate 2: $urlParams
161 $this->assertContains(
162 Url
::getHiddenInputs($urlParams),
165 //validate 3: conform
166 $this->assertContains(
167 __('Do you really want to execute the following query?'),
171 $this->assertContains(
172 '<code>' . $fullQuery . '</code>',
175 //validate 5: button : yes or no
176 $this->assertContains(
180 $this->assertContains(
187 * Test for getUrlParams
191 public function testGetUrlParams()
193 $what = 'row_delete';
195 $action = 'db_delete_row';
197 $table = "PMA_table";
202 $originalSqlQuery = "original_sql_query";
203 $originalUrlQuery = "original_url_query";
205 $urlParams = $this->multSubmits
->getUrlParams(
218 $urlParams['query_type']
225 ['DELETE FROM `PMA_table` WHERE table1 LIMIT 1;'],
226 $urlParams['selected']
230 $urlParams['original_sql_query']
234 $urlParams['original_url_query']
239 * Test for buildOrExecuteQuery
243 public function testBuildOrExecuteQuery()
245 $queryType = 'row_delete';
247 $table = "PMA_table";
253 $fromPrefix = "from_prefix";
254 $toPrefix = "to_prefix";
256 $_REQUEST['pos'] = 1000;
257 $_SESSION['tmpval']['pos'] = 1000;
258 $_SESSION['tmpval']['max_rows'] = 25;
261 $result, $rebuildDatabaseList, $reloadRet,
262 $runParts, $executeQueryLater,,
263 ) = $this->multSubmits
->buildOrExecuteQuery(
274 //validate 1: $runParts
280 //validate 2: $result
286 //validate 3: $rebuildDatabaseList
292 //validate 4: $reloadRet
298 $queryType = 'analyze_tbl';
300 ,,,, $executeQueryLater,,
301 ) = $this->multSubmits
->buildOrExecuteQuery(
312 //validate 5: $executeQueryLater
320 * Test for getQueryFromSelected
324 public function testGetQueryFromSelected()
327 $table = "PMA_table";
335 list($fullQuery, $reload, $fullQueryViews)
336 = $this->multSubmits
->getQueryFromSelected(
343 //validate 1: $fullQuery
344 $this->assertContains(
345 "DROP VIEW `table1`, `table2`",
349 //validate 2: $reload
355 //validate 3: $fullQueryViews
363 list($fullQuery, $reload, $fullQueryViews)
364 = $this->multSubmits
->getQueryFromSelected(
371 //validate 1: $fullQuery
372 $this->assertContains(
373 "DROP DATABASE `table1`;<br />DROP DATABASE `table2`;",
377 //validate 2: $reload