phpmyadmin/test/libraries/PMA_server_databases_test.php
Jeff Chan 3f0f634c38 Import config to make unit tests friendlier to running independently
The HHVM test runner runs the unit tests in parallel. Currently some tests
fail because not all the dependencies are properly included.

This is similar to 607cb3b0b3

Signed-off-by: Jeff Chan <jefftchan@gmail.com>
2014-03-12 03:30:36 +00:00

291 lines
8.1 KiB
PHP

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* tests for server_databases.lib.php
*
* @package PhpMyAdmin-test
*/
/*
* Include to test.
*/
require_once 'libraries/Util.class.php';
require_once 'libraries/php-gettext/gettext.inc';
require_once 'libraries/build_html_for_db.lib.php';
require_once 'libraries/url_generating.lib.php';
require_once 'libraries/server_databases.lib.php';
require_once 'libraries/mysql_charsets.lib.php';
require_once 'libraries/Theme.class.php';
require_once 'libraries/database_interface.inc.php';
require_once 'libraries/Message.class.php';
require_once 'libraries/sanitizing.lib.php';
require_once 'libraries/sqlparser.lib.php';
require_once 'libraries/js_escape.lib.php';
require_once 'libraries/Config.class.php';
require_once 'libraries/config.default.php';
/**
* PMA_ServerDatabases_Test class
*
* this class is for testing server_databases.lib.php functions
*
* @package PhpMyAdmin-test
*/
class PMA_ServerDatabases_Test extends PHPUnit_Framework_TestCase
{
/**
* Prepares environment for the test.
*
* @return void
*/
public function setUp()
{
//$_REQUEST
$_REQUEST['log'] = "index1";
$_REQUEST['pos'] = 3;
//$GLOBALS
$GLOBALS['PMA_Config'] = new PMA_Config();
$GLOBALS['PMA_Config']->enableBc();
$GLOBALS['cfg']['MaxRows'] = 10;
$GLOBALS['cfg']['MaxDbList'] = 100;
$GLOBALS['cfg']['ServerDefault'] = "server";
$GLOBALS['cfg']['RememberSorting'] = true;
$GLOBALS['cfg']['SQP'] = array();
$GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 1000;
$GLOBALS['cfg']['ShowSQL'] = true;
$GLOBALS['cfg']['TableNavigationLinksMode'] = 'icons';
$GLOBALS['cfg']['LimitChars'] = 100;
$GLOBALS['cfg']['DBG']['sql'] = false;
$GLOBALS['cfg']['ActionLinksMode'] = "both";
$GLOBALS['cfg']['DefaultTabDatabase'] = 'db_structure.php';
$GLOBALS['table'] = "table";
$GLOBALS['server_master_status'] = false;
$GLOBALS['server_slave_status'] = false;
$GLOBALS['pmaThemeImage'] = 'image';
$GLOBALS['text_dir'] = "text_dir";
//$_SESSION
$_SESSION['PMA_Theme'] = PMA_Theme::load('./themes/pmahomme');
$_SESSION['PMA_Theme'] = new PMA_Theme();
}
/**
* Test for PMA_getHtmlForDatabase
*
* @return void
*/
public function testPMAGetHtmlForDatabase()
{
//Mock DBI
$dbi = $this->getMockBuilder('PMA_DatabaseInterface')
->disableOriginalConstructor()
->getMock();
$GLOBALS['dbi'] = $dbi;
//Call the test function
$databases = array(
array("SCHEMA_NAME" => "pma_bookmark"),
array("SCHEMA_NAME" => "information_schema"),
array("SCHEMA_NAME" => "mysql"),
array("SCHEMA_NAME" => "performance_schema"),
array("SCHEMA_NAME" => "phpmyadmin")
);
$databases_count = 5;
$pos = 0;
$dbstats = 0;
$sort_by = "SCHEMA_NAME";
$sort_order = "asc";
$is_superuser = true;
$cfg = array(
"AllowUserDropDatabase" => false,
"ActionLinksMode" => "both",
);
$replication_types = array("master", "slave");
$replication_info = array(
"master" => array(
"status" => true,
"Ignore_DB" => array("DB" => "Ignore_DB"),
"Do_DB" => array(""),
),
"slave" => array(
"status" => false,
"Ignore_DB" => array("DB" => "Ignore_DB"),
"Do_DB" => array(""),
),
);
$url_query = "token=27ae04f0b003a84e5c2796182f361ff1";
$html = PMA_getHtmlForDatabase(
$databases,
$databases_count,
$pos,
$dbstats,
$sort_by,
$sort_order,
$is_superuser,
$cfg,
$replication_types,
$replication_info,
$url_query
);
//validate 1: General info
$this->assertContains(
'<div id="tableslistcontainer">',
$html
);
//validate 2:ajax Form
$this->assertContains(
'<form class="ajax" action="server_databases.php" ',
$html
);
$this->assertContains(
'<table id="tabledatabases" class="data">',
$html
);
//validate 3: PMA_getHtmlForColumnOrderWithSort
$this->assertContains(
'<a href="server_databases.php?pos=0',
$html
);
$this->assertContains(
'sort_by=SCHEMA_NAME',
$html
);
//validate 4: PMA_getHtmlAndColumnOrderForDatabaseList
$this->assertContains(
'title="pma_bookmark" value="pma_bookmark"',
$html
);
$this->assertContains(
'title="information_schema" value="information_schema"',
$html
);
$this->assertContains(
'title="performance_schema" value="performance_schema"',
$html
);
$this->assertContains(
'title="phpmyadmin" value="phpmyadmin"',
$html
);
//validate 5: PMA_getHtmlForTableFooter
$this->assertContains(
'Total: <span id="databases_count">5</span>',
$html
);
//validate 6: PMA_getHtmlForTableFooterButtons
$this->assertContains(
'Check All',
$html
);
//validate 7: PMA_getHtmlForNoticeEnableStatistics
$this->assertContains(
'Note: Enabling the database statistics here might cause heavy traffic',
$html
);
$this->assertContains(
'Enable Statistics',
$html
);
}
/**
* Test for PMA_getListForSortDatabase
*
* @return void
*/
public function testPMAGetListForSortDatabase()
{
//$_REQUEST['sort_by'] and $_REQUEST['sort_order'] are empty
list($sort_by, $sort_order) = PMA_getListForSortDatabase();
$this->assertEquals(
'SCHEMA_NAME',
$sort_by
);
$this->assertEquals(
'asc',
$sort_order
);
// $_REQUEST['sort_by'] = 'DEFAULT_COLLATION_NAME'
// and $_REQUEST['sort_order'] is not 'desc'
$_REQUEST['sort_by'] = 'DEFAULT_COLLATION_NAME';
$_REQUEST['sort_order'] = 'abc';
list($sort_by, $sort_order) = PMA_getListForSortDatabase();
$this->assertEquals(
'DEFAULT_COLLATION_NAME',
$sort_by
);
$this->assertEquals(
'asc',
$sort_order
);
// $_REQUEST['sort_by'] = 'DEFAULT_COLLATION_NAME'
// and $_REQUEST['sort_order'] is 'desc'
$_REQUEST['sort_by'] = 'DEFAULT_COLLATION_NAME';
$_REQUEST['sort_order'] = 'desc';
list($sort_by, $sort_order) = PMA_getListForSortDatabase();
$this->assertEquals(
'DEFAULT_COLLATION_NAME',
$sort_by
);
$this->assertEquals(
'desc',
$sort_order
);
}
/**
* Test for PMA_getHtmlForColumnOrder
*
* @return void
*/
public function testPMAGetHtmlForColumnOrder()
{
//Mock DBI
$dbi = $this->getMockBuilder('PMA_DatabaseInterface')
->disableOriginalConstructor()
->getMock();
$GLOBALS['dbi'] = $dbi;
$column_order = array(
"first_database" => array(
'format' => 'byte',
'footer' => '10333',
)
);
$first_database = array(
"first_database" => "db1"
);
$html = PMA_getHtmlForColumnOrder($column_order, $first_database);
$stat = $column_order["first_database" ];
list($value, $unit)
= PMA_Util::formatByteDown($stat['footer'], 3, 1);
$this->assertContains(
$value,
$html
);
$this->assertContains(
$unit,
$html
);
}
}