Removing composer.lock
[phpmyadmin.git] / test / classes / MultSubmitsTest.php
blob16636c1428f49325df711cb005d4147afcf69218
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * tests for PhpMyAdmin\MultSubmits
6 * @package PhpMyAdmin-test
7 */
8 namespace PhpMyAdmin\Tests;
10 use PhpMyAdmin\MultSubmits;
11 use PhpMyAdmin\Url;
12 use PHPUnit\Framework\TestCase;
14 /**
15 * PhpMyAdmin\Tests\MultSubmitsTest class
17 * this class is for testing PhpMyAdmin\MultSubmits methods
19 * @package PhpMyAdmin-test
21 class MultSubmitsTest extends TestCase
23 private $multSubmits;
25 /**
26 * Test for setUp
28 * @return void
30 protected function setUp()
32 //$GLOBALS
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";
45 //_SESSION
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',
59 //$_SESSION
61 //Mock DBI
62 $dbi = $this->getMockBuilder('PhpMyAdmin\DatabaseInterface')
63 ->disableOriginalConstructor()
64 ->getMock();
66 $dbi->expects($this->any())
67 ->method('query')
68 ->will($this->returnValue(true));
70 $GLOBALS['dbi'] = $dbi;
72 $this->multSubmits = new MultSubmits();
75 /**
76 * Test for getHtmlForReplacePrefixTable
78 * @return void
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);
88 //form action
89 $this->assertContains(
90 '<form id="ajax_form" action="delete_row" method="post">',
91 $html
93 //$Url::getHiddenInputs
94 $this->assertContains(
95 Url::getHiddenInputs($urlParams),
96 $html
98 //from_prefix
99 $this->assertContains(
100 '<input type="text" name="from_prefix" id="initialPrefix" />',
101 $html
106 * Test for getHtmlForAddPrefixTable
108 * @return void
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);
118 //form action
119 $this->assertContains(
120 '<form id="ajax_form" action="' . $action . '" method="post">',
121 $html
123 //$urlParams
124 $this->assertContains(
125 Url::getHiddenInputs($urlParams),
126 $html
128 //from_prefix
129 $this->assertContains(
130 __('Add prefix'),
131 $html
136 * Test for getHtmlForOtherActions
138 * @return void
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(
149 $what,
150 $action,
151 $urlParams,
152 $fullQuery
155 //validate 1: form action
156 $this->assertContains(
157 '<form action="' . $action . '" method="post">',
158 $html
160 //validate 2: $urlParams
161 $this->assertContains(
162 Url::getHiddenInputs($urlParams),
163 $html
165 //validate 3: conform
166 $this->assertContains(
167 __('Do you really want to execute the following query?'),
168 $html
170 //validate 4: query
171 $this->assertContains(
172 '<code>' . $fullQuery . '</code>',
173 $html
175 //validate 5: button : yes or no
176 $this->assertContains(
177 __('Yes'),
178 $html
180 $this->assertContains(
181 __('No'),
182 $html
187 * Test for getUrlParams
189 * @return void
191 public function testGetUrlParams()
193 $what = 'row_delete';
194 $reload = true;
195 $action = 'db_delete_row';
196 $db = "PMA_db";
197 $table = "PMA_table";
198 $selected = [
199 "index1" => "table1"
201 $views = null;
202 $originalSqlQuery = "original_sql_query";
203 $originalUrlQuery = "original_url_query";
205 $urlParams = $this->multSubmits->getUrlParams(
206 $what,
207 $reload,
208 $action,
209 $db,
210 $table,
211 $selected,
212 $views,
213 $originalSqlQuery,
214 $originalUrlQuery
216 $this->assertEquals(
217 $what,
218 $urlParams['query_type']
220 $this->assertEquals(
221 $db,
222 $urlParams['db']
224 $this->assertEquals(
225 ['DELETE FROM `PMA_table` WHERE table1 LIMIT 1;'],
226 $urlParams['selected']
228 $this->assertEquals(
229 $originalSqlQuery,
230 $urlParams['original_sql_query']
232 $this->assertEquals(
233 $originalUrlQuery,
234 $urlParams['original_url_query']
239 * Test for buildOrExecuteQuery
241 * @return void
243 public function testBuildOrExecuteQuery()
245 $queryType = 'row_delete';
246 $db = "PMA_db";
247 $table = "PMA_table";
248 $selected = [
249 "table1", "table2"
251 $views = null;
252 $primary = null;
253 $fromPrefix = "from_prefix";
254 $toPrefix = "to_prefix";
256 $_REQUEST['pos'] = 1000;
257 $_SESSION['tmpval']['pos'] = 1000;
258 $_SESSION['tmpval']['max_rows'] = 25;
260 list(
261 $result, $rebuildDatabaseList, $reloadRet,
262 $runParts, $executeQueryLater,,
263 ) = $this->multSubmits->buildOrExecuteQuery(
264 $queryType,
265 $selected,
266 $db,
267 $table,
268 $views,
269 $primary,
270 $fromPrefix,
271 $toPrefix
274 //validate 1: $runParts
275 $this->assertEquals(
276 true,
277 $runParts
280 //validate 2: $result
281 $this->assertEquals(
282 true,
283 $result
286 //validate 3: $rebuildDatabaseList
287 $this->assertEquals(
288 false,
289 $rebuildDatabaseList
292 //validate 4: $reloadRet
293 $this->assertEquals(
294 null,
295 $reloadRet
298 $queryType = 'analyze_tbl';
299 list(
300 ,,,, $executeQueryLater,,
301 ) = $this->multSubmits->buildOrExecuteQuery(
302 $queryType,
303 $selected,
304 $db,
305 $table,
306 $views,
307 $primary,
308 $fromPrefix,
309 $toPrefix
312 //validate 5: $executeQueryLater
313 $this->assertEquals(
314 true,
315 $executeQueryLater
320 * Test for getQueryFromSelected
322 * @return void
324 public function testGetQueryFromSelected()
326 $what = "drop_tbl";
327 $table = "PMA_table";
328 $selected = [
329 "table1", "table2"
331 $views = [
332 "table1", "table2"
335 list($fullQuery, $reload, $fullQueryViews)
336 = $this->multSubmits->getQueryFromSelected(
337 $what,
338 $table,
339 $selected,
340 $views
343 //validate 1: $fullQuery
344 $this->assertContains(
345 "DROP VIEW `table1`, `table2`",
346 $fullQuery
349 //validate 2: $reload
350 $this->assertEquals(
351 false,
352 $reload
355 //validate 3: $fullQueryViews
356 $this->assertEquals(
357 null,
358 $fullQueryViews
361 $what = "drop_db";
363 list($fullQuery, $reload, $fullQueryViews)
364 = $this->multSubmits->getQueryFromSelected(
365 $what,
366 $table,
367 $selected,
368 $views
371 //validate 1: $fullQuery
372 $this->assertContains(
373 "DROP DATABASE `table1`;<br />DROP DATABASE `table2`;",
374 $fullQuery
377 //validate 2: $reload
378 $this->assertEquals(
379 true,
380 $reload