339 lines
9.3 KiB
PHP
339 lines
9.3 KiB
PHP
<?php
|
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
|
/**
|
|
* tests for display_export.lib.php
|
|
*
|
|
* @package PhpMyAdmin-test
|
|
*/
|
|
|
|
/*
|
|
* Include to test.
|
|
*/
|
|
use PMA\libraries\Theme;
|
|
|
|
|
|
require_once 'libraries/url_generating.lib.php';
|
|
|
|
require_once 'libraries/display_export.lib.php';
|
|
|
|
require_once 'libraries/database_interface.inc.php';
|
|
require_once 'libraries/charset_conversion.lib.php';
|
|
require_once 'libraries/plugin_interface.lib.php';
|
|
require_once 'libraries/sanitizing.lib.php';
|
|
require_once 'libraries/js_escape.lib.php';
|
|
require_once 'libraries/relation.lib.php';
|
|
|
|
/**
|
|
* class PMA_DisplayExport_Test
|
|
*
|
|
* this class is for testing display_export.lib.php functions
|
|
*
|
|
* @package PhpMyAdmin-test
|
|
* @group large
|
|
*/
|
|
class PMA_DisplayExport_Test extends PHPUnit_Framework_TestCase
|
|
{
|
|
/**
|
|
* Test for setUp
|
|
*
|
|
* @return void
|
|
*/
|
|
public function setUp()
|
|
{
|
|
//$GLOBALS
|
|
$GLOBALS['cfg']['MaxRows'] = 10;
|
|
$GLOBALS['cfg']['ExecTimeLimit'] = 300;
|
|
$GLOBALS['cfg']['ServerDefault'] = "PMA_server";
|
|
$GLOBALS['cfg']['TableNavigationLinksMode'] = 'icons';
|
|
$GLOBALS['cfg']['LimitChars'] = 100;
|
|
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
|
$GLOBALS['cfg']['Server']['host'] = "localhost";
|
|
$GLOBALS['cfg']['Server']['user'] = "pma_user";
|
|
$GLOBALS['cfg']['ShowHint'] = true;
|
|
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
|
$GLOBALS['cfg']['ZipDump'] = true;
|
|
$GLOBALS['cfg']['GZipDump'] = false;
|
|
$GLOBALS['cfg']['BZipDump'] = false;
|
|
$GLOBALS['cfg']['Export']['asfile'] = true;
|
|
$GLOBALS['cfg']['Export']['file_template_server'] = "file_template_server";
|
|
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
|
$GLOBALS['PMA_recoding_engine'] = "InnerDB";
|
|
$GLOBALS['server'] = 0;
|
|
|
|
$GLOBALS['table'] = "table";
|
|
$GLOBALS['pmaThemeImage'] = 'image';
|
|
$GLOBALS['db'] = "PMA";
|
|
|
|
//$_SESSION
|
|
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
|
$_SESSION['PMA_Theme'] = new Theme();
|
|
$_SESSION['relation'][$GLOBALS['server']] = "";
|
|
|
|
$pmaconfig = $this->getMockBuilder('PMA\libraries\Config')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
$pmaconfig->expects($this->any())
|
|
->method('getUserValue')
|
|
->will($this->returnValue('user value for test'));
|
|
|
|
$GLOBALS['PMA_Config'] = $pmaconfig;
|
|
}
|
|
|
|
/**
|
|
* Test for PMA_getHtmlForHiddenInput
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testPMAGetHtmlForHiddenInput()
|
|
{
|
|
$export_type = "server";
|
|
$db = "PMA";
|
|
$table = "PMA_test";
|
|
$single_table_str = "PMA_single_str";
|
|
$sql_query_str = "sql_query_str";
|
|
|
|
//Call the test function
|
|
$html = PMA_getHtmlForHiddenInput(
|
|
$export_type,
|
|
$db,
|
|
$table,
|
|
$single_table_str,
|
|
$sql_query_str
|
|
);
|
|
|
|
//validate 1: PMA_URL_getHiddenInputs
|
|
//$single_table
|
|
$this->assertContains(
|
|
'<input type="hidden" name="single_table" value="TRUE"',
|
|
$html
|
|
);
|
|
//$export_type
|
|
$this->assertContains(
|
|
'<input type="hidden" name="export_type" value="server"',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'<input type="hidden" name="export_method" value="quick"',
|
|
$html
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Test for PMA_getHtmlForExportOptions
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testPMAGetHtmlForExportOptions()
|
|
{
|
|
global $cfg;
|
|
$cfg['Export']['method'] = "XML";
|
|
$cfg['SaveDir'] = "/tmp";
|
|
|
|
$export_type = "server";
|
|
$db = "PMA";
|
|
$table = "PMA_test";
|
|
$multi_values_str = "multi_values_str";
|
|
$num_tables_str = "10";
|
|
$unlim_num_rows_str = "unlim_num_rows_str";
|
|
$single_table = "single_table";
|
|
$GLOBALS['dbi']->cacheTableContent(array($db, $table, 'ENGINE'), 'MERGE');
|
|
|
|
$columns_info = array(
|
|
'test_column1' => array(
|
|
'COLUMN_NAME' => 'test_column1'
|
|
),
|
|
'test_column2' => array(
|
|
'COLUMN_NAME' => 'test_column2'
|
|
)
|
|
);
|
|
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
$dbi->expects($this->any())->method('getColumnsFull')
|
|
->will($this->returnValue($columns_info));
|
|
|
|
$GLOBALS['dbi'] = $dbi;
|
|
|
|
/* Scan for plugins */
|
|
$export_list = PMA_getPlugins(
|
|
"export",
|
|
'libraries/plugins/export/',
|
|
array(
|
|
'export_type' => $export_type,
|
|
'single_table' => isset($single_table)
|
|
)
|
|
);
|
|
|
|
//Call the test function
|
|
$html = PMA_getHtmlForExportOptions(
|
|
$export_type,
|
|
$db,
|
|
$table,
|
|
$multi_values_str,
|
|
$num_tables_str,
|
|
$export_list,
|
|
$unlim_num_rows_str
|
|
);
|
|
|
|
//validate 2: PMA_getHtmlForExportOptionsMethod
|
|
$this->assertContains(
|
|
$cfg['Export']['method'],
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'<div class="exportoptions" id="quick_or_custom">',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
__('Export method:'),
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
__('Custom - display all possible options'),
|
|
$html
|
|
);
|
|
|
|
//validate 3: PMA_getHtmlForExportOptionsSelection
|
|
$this->assertContains(
|
|
'<div class="exportoptions" id="databases_and_tables">',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'<h3>' . __('Databases:') . '</h3>',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
$multi_values_str,
|
|
$html
|
|
);
|
|
|
|
//validate 4: PMA_getHtmlForExportOptionsQuickExport
|
|
$this->assertContains(
|
|
'<input type="checkbox" name="onserver" value="saveit" ',
|
|
$html
|
|
);
|
|
$dir = htmlspecialchars(PMA\libraries\Util::userDir($cfg['SaveDir']));
|
|
$this->assertContains(
|
|
'Save on server in the directory <b>' . $dir . '</b>',
|
|
$html
|
|
);
|
|
|
|
//validate 5: PMA_getHtmlForAliasModalDialog
|
|
$this->assertContains(
|
|
'<div id="alias_modal" class="hide" title="'
|
|
. 'Rename exported databases/tables/columns">',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'Select database',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'Select table',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'New database name',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'New table name',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'test_column',
|
|
$html
|
|
);
|
|
|
|
//validate 6: PMA_getHtmlForExportOptionsOutput
|
|
$this->assertContains(
|
|
'<div class="exportoptions" id="output">',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'user value for test',
|
|
$html
|
|
);
|
|
|
|
//validate 7: PMA_getHtmlForExportOptionsFormat
|
|
$this->assertContains(
|
|
'<div class="exportoptions" id="format">',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'<h3>' . __('Format:') . '</h3>',
|
|
$html
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Test for PMA_getHtmlForAliasModalDialog
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testPMAGetHtmlForAliasModalDialog()
|
|
{
|
|
$columns_info = array(
|
|
'test\'_db' => array(
|
|
'test_<b>table' => array(
|
|
'co"l1' => array(
|
|
'COLUMN_NAME' => 'co"l1'
|
|
),
|
|
'col<2' => array(
|
|
'COLUMN_NAME' => 'col<2'
|
|
)
|
|
)
|
|
)
|
|
);
|
|
|
|
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
$dbi->expects($this->any())->method('getColumnsFull')
|
|
->will($this->returnValue($columns_info));
|
|
|
|
$GLOBALS['dbi'] = $dbi;
|
|
|
|
$html = PMA_getHtmlForAliasModalDialog();
|
|
|
|
$this->assertContains(
|
|
'<div id="alias_modal" class="hide" title="'
|
|
. 'Rename exported databases/tables/columns">',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'test\'_db',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'test_<b>table',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'col<2',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'co"l1',
|
|
$html
|
|
);
|
|
$this->assertContains(
|
|
'<hr/>',
|
|
$html
|
|
);
|
|
|
|
$name_attr = 'aliases[test\'_db][tables][test_<b>table][alias]';
|
|
$id_attr = mb_substr(md5($name_attr), 0, 12);
|
|
|
|
$this->assertContains(
|
|
'<input type="text" value="" name="' . $name_attr . '" '
|
|
. 'id="' . $id_attr . '" placeholder="'
|
|
. 'test_<b>table alias" class="" disabled="disabled"/>',
|
|
$html
|
|
);
|
|
}
|
|
}
|