Initial commit
This commit is contained in:
46
#pma/test/libraries/Files_test.php
Normal file
46
#pma/test/libraries/Files_test.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for bookmark.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* tests for bookmark.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class FilesTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Sets up the fixture, for example, opens a network connection.
|
||||
* This method is called before a test is executed.
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
}
|
||||
|
||||
public function testJsMessages()
|
||||
{
|
||||
ob_start();
|
||||
$GLOBALS['pmaThemeImage'] = '';
|
||||
$cfg = array(
|
||||
'AllowUserDropDatabase' => true,
|
||||
'GridEditing' => 'click',
|
||||
);
|
||||
require 'js/messages.php';
|
||||
$out = ob_get_contents();
|
||||
ob_end_clean();
|
||||
$this->assertContains('var PMA_messages = new Array();', $out);
|
||||
}
|
||||
|
||||
}
|
||||
582
#pma/test/libraries/PMA_FormDisplay_tpl_test.php
Normal file
582
#pma/test/libraries/PMA_FormDisplay_tpl_test.php
Normal file
@@ -0,0 +1,582 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for FromDisplay.tpl.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
require_once 'libraries/config/FormDisplay.tpl.php';
|
||||
require_once 'libraries/user_preferences.lib.php';
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for FromDisplay.tpl.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_FormDisplay_Tpl_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_displayFormTop()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayFormTop()
|
||||
{
|
||||
$_SERVER['REQUEST_URI'] = 'https://www.phpmyadmin.net';
|
||||
$GLOBALS['cfg']['ServerDefault'] = '';
|
||||
$result = PMA_displayFormTop(null, 'posted', array(1));
|
||||
|
||||
$this->assertContains(
|
||||
'<form method="get" action="https://www.phpmyadmin.net" ' .
|
||||
'class="config-form disableAjax">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="tab_hash" value="" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="lang" value="en" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="token" value="token" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="0" value="1" />',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayTabsTop()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayTabsTop()
|
||||
{
|
||||
$result = PMA_displayTabsTop(array('one', 'two'));
|
||||
|
||||
$this->assertContains(
|
||||
'<ul class="tabs"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a href="#0"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a href="#1"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<div class="tabs_contents"',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayFieldsetTop()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayFieldsetTop()
|
||||
{
|
||||
$attributes = array('name' => 'attrname');
|
||||
$errors = array('e1', 'e2');
|
||||
|
||||
$result = PMA_displayFieldsetTop("TitleTest", "DescTest", $errors, $attributes);
|
||||
|
||||
$this->assertContains(
|
||||
'<fieldset class="optbox" name="attrname">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<legend>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<p>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<dl class="errors">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<dd>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<table width="100%" cellspacing="0">',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayInput()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayInput()
|
||||
{
|
||||
if (! PMA_HAS_RUNKIT) {
|
||||
$this->markTestSkipped('Cannot modify constant');
|
||||
}
|
||||
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$GLOBALS['pmaThemeImage'] = 'testImage';
|
||||
$GLOBALS['_FormDislayGroup'] = 1;
|
||||
$opts = array();
|
||||
$opts['errors'] = array('e1');
|
||||
$opts['userprefs_allow'] = false;
|
||||
$opts['setvalue'] = ':group';
|
||||
$opts['doc'] = "https://example.com/";
|
||||
$opts['comment'] = "testComment";
|
||||
$opts['comment_warning'] = true;
|
||||
$opts['show_restore_default'] = true;
|
||||
$result = PMA_displayInput(
|
||||
'test/path', 'testName', 'text', 'val',
|
||||
'desc', false, $opts
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<tr class="group-header-field group-header-1 disabled-field">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<label for="test/path">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a href="https://example.com/" target="documentation"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<img src="testImageb_help.png" title="Documentation" ' .
|
||||
'alt="Documentation" /',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<span class="disabled-notice"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<small>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="text" size="40" name="test/path" id="test/path" ' .
|
||||
'class="custom field-error" value="val" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<span class="field-comment-mark field-comment-warning" '
|
||||
. 'title="testComment">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a class="restore-default" href="#test/path"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<dl class="inline_errors"><dd>e1</dd></dl>',
|
||||
$result
|
||||
);
|
||||
|
||||
// second case
|
||||
|
||||
define('PMA_SETUP', true);
|
||||
$GLOBALS['_FormDislayGroup'] = 0;
|
||||
$GLOBALS['cfg']['ThemePath'] = 'themePath';
|
||||
$opts = array();
|
||||
$opts['errors'] = array();
|
||||
$opts['setvalue'] = 'setVal';
|
||||
$opts['comment'] = "testComment";
|
||||
$opts['show_restore_default'] = true;
|
||||
$opts['userprefs_comment'] = 'userprefsComment';
|
||||
$opts['userprefs_allow'] = true;
|
||||
|
||||
$result = PMA_displayInput(
|
||||
'test/path', 'testName', 'checkbox', 'val',
|
||||
'', false, $opts
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<tr class="group-field group-field-1">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="checkbox" name="test/path" id="test/path" ' .
|
||||
'checked="checked" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a class="userprefs-comment" title="userprefsComment">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<td class="userprefs-allow" title="Allow users to customize ' .
|
||||
'this value">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a class="set-value" href="#test/path=setVal" ' .
|
||||
'title="Set value: setVal" style="display:none">',
|
||||
$result
|
||||
);
|
||||
|
||||
// short_text
|
||||
$GLOBALS['_FormDislayGroup'] = 0;
|
||||
$GLOBALS['cfg']['ThemePath'] = 'themePath';
|
||||
$opts = array();
|
||||
$opts['errors'] = array();
|
||||
|
||||
$result = PMA_displayInput(
|
||||
'test/path', 'testName', 'short_text', 'val',
|
||||
'', true, $opts
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="text" size="25" name="test/path" id="test/path" ' .
|
||||
'value="val" />',
|
||||
$result
|
||||
);
|
||||
|
||||
// number_text
|
||||
$result = PMA_displayInput(
|
||||
'test/path', 'testName', 'number_text', 'val',
|
||||
'', true, $opts
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="number" name="test/path" ' .
|
||||
'id="test/path" value="val" />',
|
||||
$result
|
||||
);
|
||||
|
||||
// select case 1
|
||||
$opts['values_escaped'] = true;
|
||||
$opts['values_disabled'] = array(1, 2);
|
||||
$opts['values'] = array(
|
||||
1 => 'test',
|
||||
'key1' => true,
|
||||
'key2' => false,
|
||||
);
|
||||
$result = PMA_displayInput(
|
||||
'test/path', 'testName', 'select', true,
|
||||
'', true, $opts
|
||||
);
|
||||
$this->assertContains(
|
||||
'<select name="test/path" id="test/path">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<option value="1" selected="selected" disabled="disabled">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<option value="key1">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<option value="key2">',
|
||||
$result
|
||||
);
|
||||
|
||||
// select case 2
|
||||
$opts['values_escaped'] = false;
|
||||
$opts['values_disabled'] = array(1, 2);
|
||||
$opts['values'] = array(
|
||||
'a<b' => 'c&d',
|
||||
'key1' => true,
|
||||
'key2' => false,
|
||||
);
|
||||
$result = PMA_displayInput(
|
||||
'test/path', 'testName', 'select', false,
|
||||
'', true, $opts
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<select name="test/path" id="test/path">',
|
||||
$result
|
||||
);
|
||||
|
||||
// assertContains doesn't seem to work with htmlentities
|
||||
$this->assertContains(
|
||||
'<option value="a<b">c&d</option>',
|
||||
$result
|
||||
);
|
||||
|
||||
// list
|
||||
$result = PMA_displayInput(
|
||||
'test/path', 'testName', 'list', array('foo', 'bar'),
|
||||
'', true, $opts
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<textarea cols="40" rows="5" name="test/path" id="test/path">',
|
||||
$result
|
||||
);
|
||||
runkit_constant_remove('PMA_SETUP');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayGroupHeader()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayGroupHeader()
|
||||
{
|
||||
if (! PMA_HAS_RUNKIT) {
|
||||
$this->markTestSkipped('Cannot modify constant');
|
||||
}
|
||||
|
||||
$this->assertNull(
|
||||
PMA_displayGroupHeader('')
|
||||
);
|
||||
|
||||
$GLOBALS['_FormDisplayGroup'] = 3;
|
||||
|
||||
if (!defined('PMA_SETUP')) {
|
||||
define('PMA_SETUP', true);
|
||||
}
|
||||
|
||||
$result = PMA_displayGroupHeader('headerText');
|
||||
|
||||
$this->assertContains(
|
||||
'<tr class="group-header group-header-4">',
|
||||
$result
|
||||
);
|
||||
|
||||
// without PMA_SETUP
|
||||
|
||||
runkit_constant_remove('PMA_SETUP');
|
||||
$GLOBALS['_FormDisplayGroup'] = 3;
|
||||
|
||||
$result = PMA_displayGroupHeader('headerText');
|
||||
|
||||
$this->assertContains(
|
||||
'<tr class="group-header group-header-4">',
|
||||
$result
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayGroupFooter()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayGroupFooter()
|
||||
{
|
||||
$GLOBALS['_FormDisplayGroup'] = 3;
|
||||
PMA_displayGroupFooter();
|
||||
$this->assertEquals(
|
||||
2,
|
||||
$GLOBALS['_FormDisplayGroup']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayFieldsetBottom()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayFieldsetBottom()
|
||||
{
|
||||
if (! PMA_HAS_RUNKIT) {
|
||||
$this->markTestSkipped('Cannot modify constant');
|
||||
}
|
||||
|
||||
// with PMA_SETUP
|
||||
|
||||
if (!defined('PMA_SETUP')) {
|
||||
define('PMA_SETUP', true);
|
||||
}
|
||||
|
||||
$result = PMA_displayFieldsetBottom();
|
||||
|
||||
$this->assertContains(
|
||||
'<td colspan="3" class="lastrow">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="submit" name="submit_save" value="Apply"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="button" name="submit_reset" value="Reset" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'</fieldset>',
|
||||
$result
|
||||
);
|
||||
|
||||
// without PMA_SETUP
|
||||
|
||||
runkit_constant_remove('PMA_SETUP');
|
||||
|
||||
$result = PMA_displayFieldsetBottom();
|
||||
|
||||
$this->assertContains(
|
||||
'<td colspan="2" class="lastrow">',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayFieldsetBottomSimple()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayFieldsetBottomSimple()
|
||||
{
|
||||
$result = PMA_displayFieldsetBottomSimple();
|
||||
$this->assertEquals(
|
||||
'</table></fieldset>',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayTabsBottom()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayTabsBottom()
|
||||
{
|
||||
$result = PMA_displayTabsBottom();
|
||||
$this->assertEquals(
|
||||
"</div>\n",
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayFormBottom()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayFormBottom()
|
||||
{
|
||||
$result = PMA_displayFormBottom();
|
||||
$this->assertEquals(
|
||||
"</form>\n",
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_addJsValidate()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testAddJsValidate()
|
||||
{
|
||||
$validators = array(
|
||||
'one' => array('\\\';', '\r\n\\\'<scrIpt></\' + \'script>'),
|
||||
'two' => array()
|
||||
);
|
||||
|
||||
$js = array();
|
||||
|
||||
PMA_addJsValidate('testID', $validators, $js);
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'validateField(\'testID\', \'PMA_\\\';\', true, '
|
||||
. '[\'\\\\r\\\\n\\\\\\\''
|
||||
. '<scrIpt></\\\' + \\\'script>\'])',
|
||||
'validateField(\'testID\', \'PMA_\', true)'
|
||||
),
|
||||
$js
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayJavascript()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayJavascript()
|
||||
{
|
||||
$this->assertNull(
|
||||
PMA_displayJavascript(array())
|
||||
);
|
||||
|
||||
$result = PMA_displayJavascript(array('var i = 1', 'i++'));
|
||||
|
||||
$this->assertEquals(
|
||||
'<script type="text/javascript">' . "\n"
|
||||
. 'if (typeof configInlineParams === "undefined"'
|
||||
. ' || !Array.isArray(configInlineParams)) '
|
||||
. 'configInlineParams = [];' . "\n"
|
||||
. 'configInlineParams.push(function() {' . "\n"
|
||||
. 'var i = 1;' . "\n"
|
||||
. 'i++;' . "\n"
|
||||
. '});' . "\n"
|
||||
. 'if (typeof configScriptLoaded !== "undefined"'
|
||||
. ' && configInlineParams) loadInlineConfig();'
|
||||
. "\n" . '</script>',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_displayErrors()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDisplayErrors()
|
||||
{
|
||||
$errors = array('<err1>', '&err2');
|
||||
|
||||
$result = PMA_displayErrors('err"Name1"', $errors);
|
||||
|
||||
$this->assertEquals(
|
||||
'<dl><dt>err"Name1"</dt>' .
|
||||
'<dd><err1></dd><dd>&err2</dd></dl>',
|
||||
$result
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
129
#pma/test/libraries/PMA_Form_Processing_test.php
Normal file
129
#pma/test/libraries/PMA_Form_Processing_test.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for methods under Formset processing library
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test
|
||||
*/
|
||||
require_once 'setup/lib/form_processing.lib.php';
|
||||
|
||||
|
||||
/**
|
||||
* tests for methods under Formset processing library
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Form_Processing_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['cfg']['ServerDefault'] = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for process_formset()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testProcessFormSet()
|
||||
{
|
||||
if (!defined('PMA_TEST_HEADERS')) {
|
||||
$this->markTestSkipped(
|
||||
'Cannot redefine constant/function - missing runkit extension'
|
||||
);
|
||||
}
|
||||
|
||||
// case 1
|
||||
$formDisplay = $this->getMockBuilder('PMA\libraries\config\FormDisplay')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(array('process', 'getDisplay'))
|
||||
->getMock();
|
||||
|
||||
$formDisplay->expects($this->once())
|
||||
->method('process')
|
||||
->with(false)
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$formDisplay->expects($this->once())
|
||||
->method('getDisplay')
|
||||
->with(true, true);
|
||||
|
||||
PMA_Process_formset($formDisplay);
|
||||
|
||||
// case 2
|
||||
$formDisplay = $this->getMockBuilder('PMA\libraries\config\FormDisplay')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(array('process', 'hasErrors', 'displayErrors'))
|
||||
->getMock();
|
||||
|
||||
$formDisplay->expects($this->once())
|
||||
->method('process')
|
||||
->with(false)
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$formDisplay->expects($this->once())
|
||||
->method('hasErrors')
|
||||
->with()
|
||||
->will($this->returnValue(true));
|
||||
|
||||
ob_start();
|
||||
PMA_Process_formset($formDisplay);
|
||||
$result = ob_get_clean();
|
||||
|
||||
$this->assertContains(
|
||||
'<div class="error">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a href="?lang=en&token=token&page=&mode=revert">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a class="btn" href="index.php?lang=en&token=token">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a class="btn" href="?lang=en&token=token&page=&mode=edit">',
|
||||
$result
|
||||
);
|
||||
|
||||
// case 3
|
||||
$formDisplay = $this->getMockBuilder('PMA\libraries\config\FormDisplay')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(array('process', 'hasErrors'))
|
||||
->getMock();
|
||||
|
||||
$formDisplay->expects($this->once())
|
||||
->method('process')
|
||||
->with(false)
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$formDisplay->expects($this->once())
|
||||
->method('hasErrors')
|
||||
->with()
|
||||
->will($this->returnValue(false));
|
||||
|
||||
PMA_Process_formset($formDisplay);
|
||||
|
||||
$this->assertEquals(
|
||||
array('HTTP/1.1 303 See Other', 'Location: index.php?lang=en&token=token'),
|
||||
$GLOBALS['header']
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
74
#pma/test/libraries/PMA_GIS_modifyQuery_test.php
Normal file
74
#pma/test/libraries/PMA_GIS_modifyQuery_test.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for PMA_GIS_modifyQuery method
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Include to test
|
||||
*/
|
||||
//require_once 'libraries/tbl_gis_visualization.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for PMA_GIS_modifyQuery method
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_GIS_ModifyQueryTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
//@todo: Move this test to GIS_Visualization's
|
||||
/**
|
||||
* Test PMA_GIS_modifyQuery method
|
||||
*
|
||||
* @internal param string $sql_query query to modify
|
||||
* @internal param array $settings visualization settings
|
||||
* @internal param string $modified_query modified query
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provider
|
||||
*/
|
||||
public function testModifyQuery(/*$sql_query, $settings, $modified_query*/)
|
||||
{
|
||||
// $this->assertEquals(
|
||||
// PMA_GIS_modifyQuery($sql_query, $settings),
|
||||
// $modified_query
|
||||
// );
|
||||
$this->markTestIncomplete('Not yet implemented!');
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for testModifyQuery
|
||||
*
|
||||
* @return array data for testModifyQuery
|
||||
*/
|
||||
public function provider()
|
||||
{
|
||||
return array(
|
||||
// with label column
|
||||
array(
|
||||
"SELECT * FROM `foo` WHERE `bar` = `zoo`",
|
||||
array('spatialColumn' => 'moo', 'labelColumn' => 'noo'),
|
||||
"SELECT `noo`, ASTEXT(`moo`) AS `moo`, SRID(`moo`) AS `srid` "
|
||||
. "FROM (SELECT * FROM `foo` WHERE `bar` = `zoo`) AS `temp_gis`"
|
||||
),
|
||||
// with no label column
|
||||
array(
|
||||
"SELECT * FROM `foo` WHERE `bar` = `zoo`",
|
||||
array('spatialColumn' => 'moo'),
|
||||
"SELECT ASTEXT(`moo`) AS `moo`, SRID(`moo`) AS `srid` "
|
||||
. "FROM (SELECT * FROM `foo` WHERE `bar` = `zoo`) AS `temp_gis`"
|
||||
),
|
||||
// with spatial column generated on the fly
|
||||
array(
|
||||
"SELECT name, PointFromText( Concat( 'POINT (', geo_lat, ' ', geo_lon, ')' ) ) AS coordinates FROM users",
|
||||
array('spatialColumn' => 'coordinates', 'labelColumn' => 'name'),
|
||||
"SELECT `name`, ASTEXT(`coordinates`) AS `coordinates`, SRID(`coordinates`) AS `srid` "
|
||||
. "FROM (SELECT name, PointFromText( Concat( 'POINT (', geo_lat, ' ', geo_lon, ')' ) ) AS coordinates FROM users) AS `temp_gis`"
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
276
#pma/test/libraries/PMA_PMD_common_test.php
Normal file
276
#pma/test/libraries/PMA_PMD_common_test.php
Normal file
@@ -0,0 +1,276 @@
|
||||
<?php
|
||||
/**
|
||||
* Tests for libraries/pmd_common.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
|
||||
/**
|
||||
* Tests for libraries/pmd_common.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_PMD_CommonTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Setup for test cases
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['controllink'] = 2;
|
||||
$_SESSION = array(
|
||||
'relation' => array(
|
||||
'1' => array(
|
||||
'PMA_VERSION' => PMA_VERSION,
|
||||
'db' => 'pmadb',
|
||||
'pdf_pages' => 'pdf_pages',
|
||||
'pdfwork' => true,
|
||||
'table_coords' => 'table_coords'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
include_once 'libraries/relation.lib.php';
|
||||
include_once 'libraries/pmd_common.php';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test for PMA_getTablePositions()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetTablePositions()
|
||||
{
|
||||
$pg = 1;
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbi->expects($this->any())->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"
|
||||
SELECT CONCAT_WS('.', `db_name`, `table_name`) AS `name`,
|
||||
`x` AS `X`,
|
||||
`y` AS `Y`,
|
||||
1 AS `V`,
|
||||
1 AS `H`
|
||||
FROM `pmadb`.`table_coords`
|
||||
WHERE pdf_page_number = " . $pg,
|
||||
'name',
|
||||
null,
|
||||
2,
|
||||
PMA\libraries\DatabaseInterface::QUERY_STORE
|
||||
);
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
PMA_getTablePositions($pg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getPageName()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetPageName()
|
||||
{
|
||||
$pg = 1;
|
||||
$pageName = 'pageName';
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbi->expects($this->any())->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT `page_descr` FROM `pmadb`.`pdf_pages`"
|
||||
. " WHERE `page_nr` = " . $pg,
|
||||
null,
|
||||
null,
|
||||
2,
|
||||
PMA\libraries\DatabaseInterface::QUERY_STORE
|
||||
)
|
||||
->will($this->returnValue(array($pageName)));
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$result = PMA_getPageName($pg);
|
||||
|
||||
$this->assertEquals($pageName, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_deletePage()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDeletePage()
|
||||
{
|
||||
$pg = 1;
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->exactly(2))
|
||||
->method('query')
|
||||
->willReturnOnConsecutiveCalls(
|
||||
true,
|
||||
true
|
||||
);
|
||||
$dbi->expects($this->any())->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$result = PMA_deletePage($pg);
|
||||
$this->assertEquals(true, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for testGetDefaultPage() when there is a default page
|
||||
* (a page having the same name as database)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetDefaultPage()
|
||||
{
|
||||
$db = 'db';
|
||||
$default_pg = '2';
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT `page_nr` FROM `pmadb`.`pdf_pages`"
|
||||
. " WHERE `db_name` = '" . $db . "'"
|
||||
. " AND `page_descr` = '" . $db . "'",
|
||||
null,
|
||||
null,
|
||||
2,
|
||||
PMA\libraries\DatabaseInterface::QUERY_STORE
|
||||
)
|
||||
->will($this->returnValue(array($default_pg)));
|
||||
$dbi->expects($this->any())->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$result = PMA_getDefaultPage($db);
|
||||
$this->assertEquals($default_pg, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for testGetDefaultPage() when there is no default page
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetDefaultPageWithNoDefaultPage()
|
||||
{
|
||||
$db = 'db';
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT `page_nr` FROM `pmadb`.`pdf_pages`"
|
||||
. " WHERE `db_name` = '" . $db . "'"
|
||||
. " AND `page_descr` = '" . $db . "'",
|
||||
null,
|
||||
null,
|
||||
2,
|
||||
PMA\libraries\DatabaseInterface::QUERY_STORE
|
||||
)
|
||||
->will($this->returnValue(array()));
|
||||
$dbi->expects($this->any())->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$result = PMA_getDefaultPage($db);
|
||||
$this->assertEquals(-1, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for testGetLoadingPage() when there is a default page
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetLoadingPageWithDefaultPage()
|
||||
{
|
||||
$db = 'db';
|
||||
$default_pg = '2';
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT `page_nr` FROM `pmadb`.`pdf_pages`"
|
||||
. " WHERE `db_name` = '" . $db . "'"
|
||||
. " AND `page_descr` = '" . $db . "'",
|
||||
null,
|
||||
null,
|
||||
2,
|
||||
PMA\libraries\DatabaseInterface::QUERY_STORE
|
||||
)
|
||||
->will($this->returnValue(array($default_pg)));
|
||||
$dbi->expects($this->any())->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$result = PMA_getLoadingPage($db);
|
||||
$this->assertEquals($default_pg, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for testGetLoadingPage() when there is no default page
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetLoadingPageWithNoDefaultPage()
|
||||
{
|
||||
$db = 'db';
|
||||
$first_pg = '1';
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->exactly(2))
|
||||
->method('fetchResult')
|
||||
->willReturnOnConsecutiveCalls(
|
||||
array(),
|
||||
array($first_pg)
|
||||
);
|
||||
$dbi->expects($this->any())->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$result = PMA_getLoadingPage($db);
|
||||
$this->assertEquals($first_pg, $result);
|
||||
}
|
||||
}
|
||||
397
#pma/test/libraries/PMA_SetupIndex_test.php
Normal file
397
#pma/test/libraries/PMA_SetupIndex_test.php
Normal file
@@ -0,0 +1,397 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for methods under setup/lib/index.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test
|
||||
*/
|
||||
use PMA\libraries\config\ConfigFile;
|
||||
use PMA\libraries\config\ServerConfigChecks;
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/config/config_functions.lib.php';
|
||||
require_once 'setup/lib/index.lib.php';
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
|
||||
/**
|
||||
* tests for methods under setup/lib/index.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_SetupIndex_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* SetUp for test cases
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
$GLOBALS['cfg']['ProxyUrl'] = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_messagesBegin()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAmessagesBegin()
|
||||
{
|
||||
$_SESSION['messages'] = array(
|
||||
array(
|
||||
array('foo'),
|
||||
array('bar')
|
||||
)
|
||||
);
|
||||
|
||||
PMA_messagesBegin();
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
array(
|
||||
array(
|
||||
0 => 'foo',
|
||||
'fresh' => false,
|
||||
'active' => false
|
||||
),
|
||||
array(
|
||||
0 => 'bar',
|
||||
'fresh' => false,
|
||||
'active' => false
|
||||
)
|
||||
)
|
||||
),
|
||||
$_SESSION['messages']
|
||||
);
|
||||
|
||||
// case 2
|
||||
|
||||
unset($_SESSION['messages']);
|
||||
PMA_messagesBegin();
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'error' => array(),
|
||||
'notice' => array()
|
||||
),
|
||||
$_SESSION['messages']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_messagesSet
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAmessagesSet()
|
||||
{
|
||||
PMA_messagesSet('type', '123', 'testTitle', 'msg');
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'fresh' => true,
|
||||
'active' => true,
|
||||
'title' => 'testTitle',
|
||||
'message' => 'msg'
|
||||
),
|
||||
$_SESSION['messages']['type']['123']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_messagesEnd
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAmessagesEnd()
|
||||
{
|
||||
$_SESSION['messages'] = array(
|
||||
array(
|
||||
array('msg' => 'foo', 'active' => false),
|
||||
array('msg' => 'bar', 'active' => true),
|
||||
)
|
||||
);
|
||||
|
||||
PMA_messagesEnd();
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
array(
|
||||
'1' => array(
|
||||
'msg' => 'bar',
|
||||
'active' => 1
|
||||
)
|
||||
)
|
||||
),
|
||||
$_SESSION['messages']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_messagesShowHtml
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAMessagesShowHTML()
|
||||
{
|
||||
$_SESSION['messages'] = array(
|
||||
'type' => array(
|
||||
array('title' => 'foo', 'message' => '123', 'fresh' => false),
|
||||
array('title' => 'bar', 'message' => '321', 'fresh' => true),
|
||||
)
|
||||
);
|
||||
|
||||
ob_start();
|
||||
PMA_messagesShowHtml();
|
||||
$result = ob_get_clean();
|
||||
|
||||
$this->assertContains(
|
||||
'<div class="type" id="0"><h4>foo</h4>123</div>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<div class="type" id="1"><h4>bar</h4>321</div>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<script type="text/javascript">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
"hiddenMessages.push('0');",
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
"</script>",
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_checkConfigRw
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMACheckConfigRw()
|
||||
{
|
||||
if (! PMA_HAS_RUNKIT) {
|
||||
$this->markTestSkipped('Cannot redefine constant');
|
||||
}
|
||||
|
||||
$redefine = null;
|
||||
$GLOBALS['cfg']['AvailableCharsets'] = array();
|
||||
$GLOBALS['server'] = 0;
|
||||
$GLOBALS['ConfigFile'] = new ConfigFile();
|
||||
if (!defined('SETUP_CONFIG_FILE')) {
|
||||
define('SETUP_CONFIG_FILE', 'test/test_data/configfile');
|
||||
} else {
|
||||
$redefine = 'SETUP_CONFIG_FILE';
|
||||
runkit_constant_redefine(
|
||||
'SETUP_CONFIG_FILE',
|
||||
'test/test_data/configfile'
|
||||
);
|
||||
}
|
||||
$is_readable = false;
|
||||
$is_writable = false;
|
||||
$file_exists = false;
|
||||
|
||||
PMA_checkConfigRw($is_readable, $is_writable, $file_exists);
|
||||
|
||||
$this->assertTrue(
|
||||
$is_readable
|
||||
);
|
||||
|
||||
$this->assertTrue(
|
||||
$is_writable
|
||||
);
|
||||
|
||||
$this->assertFalse(
|
||||
$file_exists
|
||||
);
|
||||
|
||||
runkit_constant_redefine(
|
||||
'SETUP_CONFIG_FILE',
|
||||
'test/test_data/test.file'
|
||||
);
|
||||
|
||||
PMA_checkConfigRw($is_readable, $is_writable, $file_exists);
|
||||
|
||||
$this->assertTrue(
|
||||
$is_readable
|
||||
);
|
||||
|
||||
$this->assertTrue(
|
||||
$is_writable
|
||||
);
|
||||
|
||||
$this->assertTrue(
|
||||
$file_exists
|
||||
);
|
||||
|
||||
if ($redefine !== null) {
|
||||
runkit_constant_redefine('SETUP_CONFIG_FILE', $redefine);
|
||||
} else {
|
||||
runkit_constant_remove('SETUP_CONFIG_FILE');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for ServerConfigChecks::performConfigChecks
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testServerConfigChecksPerformConfigChecks()
|
||||
{
|
||||
|
||||
$GLOBALS['cfg']['AvailableCharsets'] = array();
|
||||
$GLOBALS['cfg']['ServerDefault'] = 0;
|
||||
$GLOBALS['server'] = 0;
|
||||
|
||||
$cf = new ConfigFile();
|
||||
$GLOBALS['ConfigFile'] = $cf;
|
||||
|
||||
$reflection = new \ReflectionProperty('PMA\libraries\config\ConfigFile', '_id');
|
||||
$reflection->setAccessible(true);
|
||||
$sessionID = $reflection->getValue($cf);
|
||||
|
||||
$_SESSION[$sessionID]['Servers'] = array(
|
||||
'1' => array(
|
||||
'host' => 'localhost',
|
||||
'ssl' => false,
|
||||
'extension' => 'mysql',
|
||||
'auth_type' => 'config',
|
||||
'user' => 'username',
|
||||
'password' => 'password',
|
||||
'AllowRoot' => true,
|
||||
'AllowNoPassword' => true,
|
||||
)
|
||||
);
|
||||
|
||||
$_SESSION[$sessionID]['AllowArbitraryServer'] = true;
|
||||
$_SESSION[$sessionID]['LoginCookieValidity'] = 5000;
|
||||
$_SESSION[$sessionID]['LoginCookieStore'] = 4000;
|
||||
$_SESSION[$sessionID]['SaveDir'] = true;
|
||||
$_SESSION[$sessionID]['TempDir'] = true;
|
||||
$_SESSION[$sessionID]['GZipDump'] = true;
|
||||
$_SESSION[$sessionID]['BZipDump'] = true;
|
||||
$_SESSION[$sessionID]['ZipDump'] = true;
|
||||
|
||||
$noticeArrayKeys = array(
|
||||
'TempDir',
|
||||
'SaveDir',
|
||||
'LoginCookieValidity',
|
||||
'AllowArbitraryServer',
|
||||
'Servers/1/AllowNoPassword',
|
||||
'Servers/1/auth_type',
|
||||
'Servers/1/ssl'
|
||||
);
|
||||
|
||||
$errorArrayKeys = array(
|
||||
'LoginCookieValidity'
|
||||
);
|
||||
|
||||
if (@!function_exists('gzopen') || @!function_exists('gzencode')) {
|
||||
$errorArrayKeys[] = 'GZipDump';
|
||||
}
|
||||
|
||||
if (@!function_exists('bzopen') || @!function_exists('bzcompress')) {
|
||||
$errorArrayKeys[] = 'BZipDump';
|
||||
}
|
||||
|
||||
if (!@function_exists('zip_open')) {
|
||||
$errorArrayKeys[] = 'ZipDump_import';
|
||||
}
|
||||
|
||||
if (!@function_exists('gzcompress')) {
|
||||
$errorArrayKeys[] = 'ZipDump_export';
|
||||
}
|
||||
|
||||
$configChecker = new ServerConfigChecks($GLOBALS['ConfigFile']);
|
||||
$configChecker->performConfigChecks();
|
||||
|
||||
foreach ($noticeArrayKeys as $noticeKey) {
|
||||
$this->assertArrayHasKey(
|
||||
$noticeKey,
|
||||
$_SESSION['messages']['notice']
|
||||
);
|
||||
}
|
||||
|
||||
foreach ($errorArrayKeys as $errorKey) {
|
||||
$this->assertArrayHasKey(
|
||||
$errorKey,
|
||||
$_SESSION['messages']['error']
|
||||
);
|
||||
}
|
||||
|
||||
// Case 2
|
||||
|
||||
unset($_SESSION['messages']);
|
||||
unset($_SESSION[$sessionID]);
|
||||
|
||||
$_SESSION[$sessionID]['Servers'] = array(
|
||||
'1' => array(
|
||||
'host' => 'localhost',
|
||||
'ssl' => true,
|
||||
'extension' => 'mysqli',
|
||||
'auth_type' => 'cookie',
|
||||
'AllowRoot' => false
|
||||
)
|
||||
);
|
||||
|
||||
$_SESSION[$sessionID]['AllowArbitraryServer'] = false;
|
||||
$_SESSION[$sessionID]['LoginCookieValidity'] = -1;
|
||||
$_SESSION[$sessionID]['LoginCookieStore'] = 0;
|
||||
$_SESSION[$sessionID]['SaveDir'] = '';
|
||||
$_SESSION[$sessionID]['TempDir'] = '';
|
||||
$_SESSION[$sessionID]['GZipDump'] = false;
|
||||
$_SESSION[$sessionID]['BZipDump'] = false;
|
||||
$_SESSION[$sessionID]['ZipDump'] = false;
|
||||
|
||||
$configChecker = new ServerConfigChecks($GLOBALS['ConfigFile']);
|
||||
$configChecker->performConfigChecks();
|
||||
|
||||
$this->assertArrayHasKey(
|
||||
'blowfish_secret_created',
|
||||
$_SESSION['messages']['notice']
|
||||
);
|
||||
|
||||
foreach ($noticeArrayKeys as $noticeKey) {
|
||||
$this->assertArrayNotHasKey(
|
||||
$noticeKey,
|
||||
$_SESSION['messages']['notice']
|
||||
);
|
||||
}
|
||||
|
||||
$this->assertArrayNotHasKey(
|
||||
'error',
|
||||
$_SESSION['messages']
|
||||
);
|
||||
|
||||
// Case 3
|
||||
|
||||
$_SESSION[$sessionID]['blowfish_secret'] = 'sec';
|
||||
|
||||
$_SESSION[$sessionID]['Servers'] = array(
|
||||
'1' => array(
|
||||
'host' => 'localhost',
|
||||
'auth_type' => 'cookie'
|
||||
)
|
||||
);
|
||||
|
||||
$configChecker = new ServerConfigChecks($GLOBALS['ConfigFile']);
|
||||
$configChecker->performConfigChecks();
|
||||
|
||||
$this->assertArrayHasKey(
|
||||
'blowfish_warnings2',
|
||||
$_SESSION['messages']['error']
|
||||
);
|
||||
}
|
||||
}
|
||||
108
#pma/test/libraries/PMA_bookmark_test.php
Normal file
108
#pma/test/libraries/PMA_bookmark_test.php
Normal file
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for bookmark.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/relation.lib.php';
|
||||
|
||||
/**
|
||||
* tests for bookmark.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Bookmark_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Sets up the fixture, for example, opens a network connection.
|
||||
* This method is called before a test is executed.
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['cfg']['Server']['user'] = 'root';
|
||||
$GLOBALS['cfg']['Server']['pmadb'] = 'phpmyadmin';
|
||||
$GLOBALS['cfg']['Server']['bookmarktable'] = 'pma_bookmark';
|
||||
$GLOBALS['server'] = 1;
|
||||
|
||||
include_once 'libraries/bookmark.lib.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_Bookmark_getParams
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetParams()
|
||||
{
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_Bookmark_getParams()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_Bookmark_getList
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetList()
|
||||
{
|
||||
$this->assertEquals(
|
||||
array(),
|
||||
PMA_Bookmark_getList('phpmyadmin')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_Bookmark_get
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGet()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'',
|
||||
PMA_Bookmark_get('phpmyadmin', '1')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_Bookmark_save
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testSave()
|
||||
{
|
||||
$bookmark = array(
|
||||
'dbase' => 'phpmyadmin',
|
||||
'user' => 'phpmyadmin',
|
||||
'query' => 'SELECT "phpmyadmin"',
|
||||
'label' => 'phpmyadmin',
|
||||
);
|
||||
|
||||
$this->assertfalse(PMA_Bookmark_save($bookmark));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_Bookmark_delete
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
$this->assertFalse(
|
||||
PMA_Bookmark_delete('1')
|
||||
);
|
||||
}
|
||||
}
|
||||
335
#pma/test/libraries/PMA_browse_foreigners_test.php
Normal file
335
#pma/test/libraries/PMA_browse_foreigners_test.php
Normal file
@@ -0,0 +1,335 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for libraries/browse_foreigners.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/browse_foreigners.lib.php';
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for libraries/browse_foreigners.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_BrowseForeignersTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Setup for test cases
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
$GLOBALS['cfg']['MaxRows'] = 25;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getForeignLimit
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetForeignLimit()
|
||||
{
|
||||
$this->assertNull(
|
||||
PMA_getForeignLimit('Show all')
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
'LIMIT 0, 25 ',
|
||||
PMA_getForeignLimit(null)
|
||||
);
|
||||
|
||||
$_REQUEST['pos'] = 10;
|
||||
|
||||
$this->assertEquals(
|
||||
'LIMIT 10, 25 ',
|
||||
PMA_getForeignLimit(null)
|
||||
);
|
||||
|
||||
$GLOBALS['cfg']['MaxRows'] = 50;
|
||||
|
||||
$this->assertEquals(
|
||||
'LIMIT 10, 50 ',
|
||||
PMA_getForeignLimit(null)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
'LIMIT 10, 50 ',
|
||||
PMA_getForeignLimit('xyz')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForShowAll
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetHtmlForShowAll()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'',
|
||||
PMA_getHtmlForShowAll(null)
|
||||
);
|
||||
|
||||
$foreignData = array();
|
||||
$foreignData['disp_row'] = array();
|
||||
$GLOBALS['cfg']['ShowAll'] = false;
|
||||
|
||||
$this->assertEquals(
|
||||
'',
|
||||
PMA_getHtmlForShowAll($foreignData)
|
||||
);
|
||||
|
||||
$GLOBALS['cfg']['ShowAll'] = true;
|
||||
$foreignData['the_total'] = 0;
|
||||
|
||||
$this->assertEquals(
|
||||
'',
|
||||
PMA_getHtmlForShowAll($foreignData)
|
||||
);
|
||||
|
||||
$foreignData['the_total'] = 30;
|
||||
|
||||
$this->assertEquals(
|
||||
'<input type="submit" id="foreign_showAll" '
|
||||
. 'name="foreign_showAll" '
|
||||
. 'value="' . 'Show all' . '" />',
|
||||
PMA_getHtmlForShowAll($foreignData)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForGotoPage
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetHtmlForGotoPage()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'',
|
||||
PMA_getHtmlForGotoPage(null)
|
||||
);
|
||||
|
||||
$_REQUEST['pos'] = 15;
|
||||
$foreignData = array();
|
||||
$foreignData['disp_row'] = array();
|
||||
$foreignData['the_total'] = 5;
|
||||
|
||||
$this->assertEquals(
|
||||
'',
|
||||
PMA_getHtmlForGotoPage($foreignData)
|
||||
);
|
||||
|
||||
$foreignData['the_total'] = 30;
|
||||
$result = PMA_getHtmlForGotoPage($foreignData);
|
||||
|
||||
$this->assertStringStartsWith(
|
||||
'Page number:',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertStringEndsWith(
|
||||
'</select>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<select class="pageselector ajax" name="pos"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<option selected="selected" '
|
||||
. 'style="font-weight: bold" value="0">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<option value="25"',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForColumnElement
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetHtmlForColumnElement()
|
||||
{
|
||||
$cssClass = '';
|
||||
$isSelected = false;
|
||||
$keyname = '';
|
||||
$description = 'foo';
|
||||
$title = '';
|
||||
$result = PMA_getHtmlForColumnElement(
|
||||
$cssClass, $isSelected, $keyname,
|
||||
$description, $title
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<td>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a class="foreign_value" data-key="" href="#" '
|
||||
. 'title="Use this value">',
|
||||
$result
|
||||
);
|
||||
|
||||
$cssClass = 'class="baz"';
|
||||
$isSelected = true;
|
||||
$keyname = 'bar';
|
||||
$title = 'foo';
|
||||
$result = PMA_getHtmlForColumnElement(
|
||||
$cssClass, $isSelected, $keyname,
|
||||
$description, $title
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<td class="baz">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<strong>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<a class="foreign_value" data-key="bar" href="#" '
|
||||
. 'title="Use this value: foo">',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getDescriptionAndTitle
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDescriptionAndTitle()
|
||||
{
|
||||
$GLOBALS['cfg']['LimitChars'] = 30;
|
||||
$desc = 'foobar<baz';
|
||||
|
||||
$this->assertEquals(
|
||||
array('foobar<baz', ''),
|
||||
PMA_getDescriptionAndTitle($desc)
|
||||
);
|
||||
|
||||
$GLOBALS['cfg']['LimitChars'] = 5;
|
||||
|
||||
$this->assertEquals(
|
||||
array('fooba...', 'foobar<baz'),
|
||||
PMA_getDescriptionAndTitle($desc)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForRelationalFieldSelection
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetHtmlForRelationalFieldSelection()
|
||||
{
|
||||
$db = '';
|
||||
$table = '';
|
||||
$field = 'foo';
|
||||
$foreignData = array();
|
||||
$foreignData['disp_row'] = '';
|
||||
$fieldkey = 'bar';
|
||||
$current_value = '';
|
||||
$_REQUEST['rownumber'] = 1;
|
||||
$_REQUEST['foreign_filter'] = '5';
|
||||
$result = PMA_getHtmlForRelationalFieldSelection(
|
||||
$db, $table, $field, $foreignData, $fieldkey, $current_value
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<form class="ajax" '
|
||||
. 'id="browse_foreign_form" name="browse_foreign_from" '
|
||||
. 'action="browse_foreigners.php" method="post">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<fieldset>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="field" value="foo" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="fieldkey" value="bar" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="rownumber" value="1" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<span class="formelement">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<label for="input_foreign_filter">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="text" name="foreign_filter" '
|
||||
. 'id="input_foreign_filter" '
|
||||
. 'value="5" data-old="5" '
|
||||
. '/>',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="submit" name="submit_foreign_filter" value="Go" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<span class="formelement">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<table width="100%" id="browse_foreign_table">',
|
||||
$result
|
||||
);
|
||||
|
||||
$foreignData['disp_row'] = array();
|
||||
$foreignData['the_total'] = 5;
|
||||
$GLOBALS['cfg']['ShowAll'] = false;
|
||||
$result = PMA_getHtmlForRelationalFieldSelection(
|
||||
$db, $table, $field, $foreignData, $fieldkey, $current_value
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<table width="100%" id="browse_foreign_table">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<th>',
|
||||
$result
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
680
#pma/test/libraries/PMA_central_columns_test.php
Normal file
680
#pma/test/libraries/PMA_central_columns_test.php
Normal file
@@ -0,0 +1,680 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for central_columns.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
use PMA\libraries\TypesMySQL;
|
||||
|
||||
$GLOBALS['server'] = 1;
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/relation.lib.php';
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
|
||||
require_once 'libraries/mysql_charsets.inc.php';
|
||||
require_once 'libraries/central_columns.lib.php';
|
||||
|
||||
/**
|
||||
* tests for central_columns.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
private $_columnData = array(
|
||||
array(
|
||||
'col_name' => "id", "col_type" => 'integer',
|
||||
'col_length' => 0, 'col_isNull' => 0,
|
||||
'col_extra' => 'UNSIGNED,auto_increment',
|
||||
'col_default' => 1, 'col_collation' => ''
|
||||
),
|
||||
array('col_name' => "col1", 'col_type' => 'varchar',
|
||||
'col_length' => 100, 'col_isNull' => 1, 'col_extra' => 'BINARY',
|
||||
'col_default' => 1, 'col_collation' => ''
|
||||
),
|
||||
array(
|
||||
'col_name' => "col2", 'col_type' => 'DATETIME',
|
||||
'col_length' => 0, 'col_isNull' => 1,
|
||||
'col_extra' => 'on update CURRENT_TIMESTAMP',
|
||||
'col_default' => 'CURRENT_TIMESTAMP', 'col_collation' => ''
|
||||
)
|
||||
);
|
||||
|
||||
private $_modifiedColumnData = array(
|
||||
array(
|
||||
'col_name' => "id", "col_type" => 'integer',
|
||||
'col_length' => 0, 'col_isNull' => 0, 'col_extra' => 'auto_increment',
|
||||
'col_default' => 1, 'col_collation' => '', 'col_attribute' => 'UNSIGNED'
|
||||
),
|
||||
array('col_name' => "col1", 'col_type' => 'varchar',
|
||||
'col_length' => 100, 'col_isNull' => 1, 'col_extra' => '',
|
||||
'col_default' => 1, 'col_collation' => '', 'col_attribute' => 'BINARY'
|
||||
),
|
||||
array(
|
||||
'col_name' => "col2", 'col_type' => 'DATETIME',
|
||||
'col_length' => 0, 'col_isNull' => 1, 'col_extra' => '',
|
||||
'col_default' => 'CURRENT_TIMESTAMP', 'col_collation' => '',
|
||||
'col_attribute' => 'on update CURRENT_TIMESTAMP'
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* prepares environment for tests
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['PMA_Types'] = new TypesMySQL();
|
||||
$GLOBALS['cfg']['Server']['user'] = 'pma_user';
|
||||
$GLOBALS['cfg']['Server']['DisableIS'] = true;
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$GLOBALS['cfg']['ServerDefault'] = "PMA_server";
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
$GLOBALS['cfg']['CharEditing'] = '';
|
||||
$GLOBALS['cfg']['LimitChars'] = 50;
|
||||
$GLOBALS['db'] = 'PMA_db';
|
||||
$GLOBALS['table'] = 'PMA_table';
|
||||
|
||||
//$_SESSION
|
||||
$GLOBALS['server'] = 1;
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$_SESSION['relation'][1] = array(
|
||||
'PMA_VERSION' => PMA_VERSION,
|
||||
'centralcolumnswork' => true,
|
||||
'relwork' => 1,
|
||||
'db' => 'phpmyadmin',
|
||||
'relation' => 'relation',
|
||||
'central_columns' => 'pma_central_columns'
|
||||
);
|
||||
|
||||
// mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
// set some common expectations
|
||||
$dbi->expects($this->any())
|
||||
->method('selectDb')
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->any())
|
||||
->method('getColumns')
|
||||
->will(
|
||||
$this->returnValue(
|
||||
array(
|
||||
"id"=>array("Type"=>"integer", "Null"=>"NO"),
|
||||
"col1"=>array("Type"=>'varchar(100)', "Null"=>"YES"),
|
||||
"col2"=>array("Type"=>'DATETIME', "Null"=>"NO")
|
||||
)
|
||||
)
|
||||
);
|
||||
$dbi->expects($this->any())
|
||||
->method('getColumnNames')
|
||||
->will($this->returnValue(array("id", "col1", "col2")));
|
||||
$dbi->expects($this->any())
|
||||
->method('tryQuery')
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->any())
|
||||
->method('getTables')
|
||||
->will(
|
||||
$this->returnValue(array("PMA_table", "PMA_table1", "PMA_table2"))
|
||||
);
|
||||
$dbi->expects($this->any())->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_centralColumnsGetParams
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMACentralColumnsGetParams()
|
||||
{
|
||||
$this->assertSame(
|
||||
array(
|
||||
'user' => 'pma_user',
|
||||
'db' => 'phpmyadmin',
|
||||
'table' => 'pma_central_columns'
|
||||
),
|
||||
PMA_centralColumnsGetParams()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getColumnsList
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetColumnsList()
|
||||
{
|
||||
$GLOBALS['dbi']->expects($this->exactly(2))
|
||||
->method('fetchResult')
|
||||
->willReturnOnConsecutiveCalls(
|
||||
$this->_columnData,
|
||||
array_slice($this->_columnData, 1, 2)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
$this->_modifiedColumnData,
|
||||
PMA_getColumnsList('phpmyadmin')
|
||||
);
|
||||
$this->assertEquals(
|
||||
array_slice($this->_modifiedColumnData, 1, 2),
|
||||
PMA_getColumnsList('phpmyadmin', 1, 2)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getCentralColumnsCount
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testPMAGetCentralColumnsCount()
|
||||
{
|
||||
$GLOBALS['dbi']->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT count(db_name) FROM `pma_central_columns` "
|
||||
. "WHERE db_name = 'phpmyadmin';",
|
||||
null, null, $GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue(array(3))
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
3,
|
||||
PMA_getCentralColumnsCount('phpmyadmin')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_syncUniqueColumns
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMASyncUniqueColumns()
|
||||
{
|
||||
$_REQUEST['db'] = 'PMA_db';
|
||||
$_REQUEST['table'] = 'PMA_table';
|
||||
|
||||
$this->assertTrue(
|
||||
PMA_syncUniqueColumns(array('PMA_table'))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_deleteColumnsFromList
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMADeleteColumnsFromList()
|
||||
{
|
||||
$_REQUEST['db'] = 'PMA_db';
|
||||
$_REQUEST['table'] = 'PMA_table';
|
||||
|
||||
// when column exists in the central column list
|
||||
$GLOBALS['dbi']->expects($this->at(4))
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT col_name FROM `pma_central_columns` "
|
||||
. "WHERE db_name = 'PMA_db' AND col_name IN ('col1');",
|
||||
null, null, $GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue(array('col1'))
|
||||
);
|
||||
|
||||
$GLOBALS['dbi']->expects($this->at(7))
|
||||
->method('tryQuery')
|
||||
->with(
|
||||
"DELETE FROM `pma_central_columns` "
|
||||
. "WHERE db_name = 'PMA_db' AND col_name IN ('col1');",
|
||||
$GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue(array('col1'))
|
||||
);
|
||||
|
||||
$this->assertTrue(
|
||||
PMA_deleteColumnsFromList(array("col1"), false)
|
||||
);
|
||||
|
||||
// when column does not exist in the central column list
|
||||
$this->assertInstanceOf(
|
||||
'PMA\libraries\Message', PMA_deleteColumnsFromList(array('column1'), false)
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
'PMA\libraries\Message', PMA_deleteColumnsFromList(array('PMA_table'))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_makeConsistentWithList
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAMakeConsistentWithList()
|
||||
{
|
||||
$GLOBALS['dbi']->expects($this->any())
|
||||
->method('fetchResult')
|
||||
->will(
|
||||
$this->returnValue($this->_columnData)
|
||||
);
|
||||
$GLOBALS['dbi']->expects($this->any())
|
||||
->method('fetchValue')
|
||||
->will(
|
||||
$this->returnValue('PMA_table=CREATE table `PMA_table` (id integer)')
|
||||
);
|
||||
$this->assertTrue(
|
||||
PMA_makeConsistentWithList("phpmyadmin", array('PMA_table'))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getCentralColumnsFromTable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetCentralColumnsFromTable()
|
||||
{
|
||||
$db = 'PMA_db';
|
||||
$table = 'PMA_table';
|
||||
|
||||
$GLOBALS['dbi']->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT col_name FROM `pma_central_columns` "
|
||||
. "WHERE db_name = 'PMA_db' AND col_name IN ('id','col1','col2');",
|
||||
null, null, $GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue(array('id','col1'))
|
||||
);
|
||||
$this->assertEquals(
|
||||
array("id", "col1"),
|
||||
PMA_getCentralColumnsFromTable($db, $table)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getCentralColumnsFromTable with $allFields = true
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetCentralColumnsFromTableWithAllFields()
|
||||
{
|
||||
$db = 'PMA_db';
|
||||
$table = 'PMA_table';
|
||||
|
||||
$GLOBALS['dbi']->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT * FROM `pma_central_columns` "
|
||||
. "WHERE db_name = 'PMA_db' AND col_name IN ('id','col1','col2');",
|
||||
null, null, $GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue(array_slice($this->_columnData, 0, 2))
|
||||
);
|
||||
$this->assertEquals(
|
||||
array_slice($this->_modifiedColumnData, 0, 2),
|
||||
PMA_getCentralColumnsFromTable($db, $table, true)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_updateOneColumn
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAUpdateOneColumn()
|
||||
{
|
||||
$this->assertTrue(
|
||||
PMA_updateOneColumn(
|
||||
"phpmyadmin", "", "", "", "", "", "", "", "", ""
|
||||
)
|
||||
);
|
||||
$this->assertTrue(
|
||||
PMA_updateOneColumn(
|
||||
"phpmyadmin", "col1", "", "", "", "", "", "", "", ""
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_updateMultipleColumn
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAUpdateMultipleColumn()
|
||||
{
|
||||
$_POST['db'] = 'phpmyadmin';
|
||||
$_POST['orig_col_name'] = array("col1","col2");
|
||||
$_POST['field_name'] = array("col1","col2");
|
||||
$_POST['field_default_type'] = array("","");
|
||||
$_POST['col_extra'] = array("","");
|
||||
$_POST['field_length'] = array("","");
|
||||
$_POST['field_attribute'] = array("","");
|
||||
$_POST['field_type'] = array("","");
|
||||
$_POST['field_collation'] = array("","");
|
||||
$this->assertTrue(
|
||||
PMA_updateMultipleColumn()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHTMLforEditingPage
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHTMLforEditingPage()
|
||||
{
|
||||
$GLOBALS['dbi']->expects($this->any())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT * FROM `pma_central_columns` "
|
||||
. "WHERE db_name = 'phpmyadmin' AND col_name IN ('col1','col2');",
|
||||
null, null, $GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue($this->_columnData)
|
||||
);
|
||||
$result = PMA_getHTMLforEditingPage(
|
||||
array("col1", "col2"), 'phpmyadmin'
|
||||
);
|
||||
$this->assertContains(
|
||||
'<form',
|
||||
$result
|
||||
);
|
||||
$header_cells = array(
|
||||
__('Name'), __('Type'), __('Length/Values'), __('Default'),
|
||||
__('Collation'), __('Attributes'), __('Null'), __('A_I')
|
||||
);
|
||||
$this->assertContains(
|
||||
PMA_getCentralColumnsEditTableHeader($header_cells), $result
|
||||
);
|
||||
$list_detail_cols = PMA_findExistingColNames(
|
||||
'phpmyadmin', "'col1','col2'", true
|
||||
);
|
||||
$this->assertContains(
|
||||
PMA_getHTMLforCentralColumnsEditTableRow(
|
||||
$list_detail_cols[0], false, 0
|
||||
), $result
|
||||
);
|
||||
$this->assertContains(
|
||||
PMA_getCentralColumnsEditTableFooter(), $result
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHTMLforTableNavigation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHTMLforTableNavigation()
|
||||
{
|
||||
$result = PMA_getHTMLforTableNavigation(0, 0, 'phpmyadmin');
|
||||
$this->assertContains(
|
||||
'<table',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Search this table'),
|
||||
$result
|
||||
);
|
||||
$result_1 = PMA_getHTMLforTableNavigation(25, 10, 'phpmyadmin');
|
||||
$this->assertContains(
|
||||
'<form action="db_central_columns.php" method="post">'
|
||||
. PMA_URL_getHiddenInputs(
|
||||
'phpmyadmin'
|
||||
),
|
||||
$result_1
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="submit" name="navig"'
|
||||
. ' class="ajax" '
|
||||
. 'value="<" />',
|
||||
$result_1
|
||||
);
|
||||
$this->assertContains(
|
||||
PMA\libraries\Util::pageselector(
|
||||
'pos', 10, 2, 3
|
||||
),
|
||||
$result_1
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="submit" name="navig"'
|
||||
. ' class="ajax" '
|
||||
. 'value=">" />',
|
||||
$result_1
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getCentralColumnsTableHeader
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetCentralColumnsTableHeader()
|
||||
{
|
||||
$this->assertContains(
|
||||
'<thead',
|
||||
PMA_getCentralColumnsTableHeader(
|
||||
'column_heading', __('Click to sort'), 2
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getCentralColumnsListRaw
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetCentralColumnsListRaw()
|
||||
{
|
||||
$GLOBALS['dbi']->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT * FROM `pma_central_columns` "
|
||||
. "WHERE db_name = 'phpmyadmin';",
|
||||
null, null, $GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue($this->_columnData)
|
||||
);
|
||||
$this->assertEquals(
|
||||
json_encode($this->_modifiedColumnData),
|
||||
PMA_getCentralColumnsListRaw('phpmyadmin', '')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getCentralColumnsListRaw with a table name
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetCentralColumnsListRawWithTable()
|
||||
{
|
||||
$GLOBALS['dbi']->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT * FROM `pma_central_columns` "
|
||||
. "WHERE db_name = 'phpmyadmin' AND col_name "
|
||||
. "NOT IN ('id','col1','col2');",
|
||||
null, null, $GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue($this->_columnData)
|
||||
);
|
||||
$this->assertEquals(
|
||||
json_encode($this->_modifiedColumnData),
|
||||
PMA_getCentralColumnsListRaw('phpmyadmin', 'table1')
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHTMLforAddNewColumn
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHTMLforAddNewColumn()
|
||||
{
|
||||
$result = PMA_getHTMLforAddNewColumn('phpmyadmin');
|
||||
$this->assertContains(
|
||||
'<form',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<table',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Add new column'),
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs('phpmyadmin'),
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_configErrorMessage
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAConfigErrorMessage()
|
||||
{
|
||||
$this->assertInstanceOf(
|
||||
'PMA\libraries\Message',
|
||||
PMA_configErrorMessage()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_findExistingColNames
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAFindExistingColNames()
|
||||
{
|
||||
$GLOBALS['dbi']->expects($this->once())
|
||||
->method('fetchResult')
|
||||
->with(
|
||||
"SELECT * FROM `pma_central_columns` WHERE db_name = 'phpmyadmin'"
|
||||
. " AND col_name IN ('col1');",
|
||||
null, null, $GLOBALS['controllink']
|
||||
)
|
||||
->will(
|
||||
$this->returnValue(array_slice($this->_columnData, 1, 1))
|
||||
);
|
||||
$this->assertEquals(
|
||||
array_slice($this->_modifiedColumnData, 1, 1),
|
||||
PMA_findExistingColNames('phpmyadmin', "'col1'", true)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHTMLforTableDropdown
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHTMLforTableDropdown()
|
||||
{
|
||||
$db = 'PMA_db';
|
||||
$result = PMA_getHTMLforTableDropdown($db);
|
||||
$this->assertContains(
|
||||
'<select name="table-select" id="table-select"',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<option value="PMA_table"',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHTMLforColumnDropdown
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHTMLforColumnDropdown()
|
||||
{
|
||||
$db = 'PMA_db';
|
||||
$selected_tbl = 'PMA_table';
|
||||
$result = PMA_getHTMLforColumnDropdown($db, $selected_tbl);
|
||||
$this->assertEquals(
|
||||
'<option value="id">id</option><option value="col1">col1</option>'
|
||||
. '<option value="col2">col2</option>',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHTMLforAddCentralColumn
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHTMLforAddCentralColumn()
|
||||
{
|
||||
$result = PMA_getHTMLforAddCentralColumn(20, 0, 'phpmyadmin');
|
||||
$this->assertContains(
|
||||
'<table',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<form',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs('phpmyadmin')
|
||||
. '<input type="hidden" name="add_column" value="add">'
|
||||
. '<input type="hidden" name="pos" value="0" />'
|
||||
. '<input type="hidden" name="total_rows" value="20"/>',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getCentralColumnsTableFooter
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetCentralColumnsTableFooter()
|
||||
{
|
||||
$pmaThemeImage = "pmaThemeImage";
|
||||
$text_dir = "text_dir";
|
||||
if (!defined("PMA_USR_BROWSER_AGENT")) {
|
||||
define("PMA_USR_BROWSER_AGENT", "other");
|
||||
}
|
||||
$result = PMA_getCentralColumnsTableFooter($pmaThemeImage, $text_dir);
|
||||
$this->assertContains(
|
||||
'<input type="checkbox" id="tableslistcontainer_checkall" class="checkall_box"',
|
||||
$result
|
||||
);
|
||||
$this->assertContains("With selected:", $result);
|
||||
$this->assertContains(
|
||||
'<button class="mult_submit change_central_columns"',
|
||||
$result
|
||||
);
|
||||
}
|
||||
}
|
||||
65
#pma/test/libraries/PMA_charset_conversion_test.php
Normal file
65
#pma/test/libraries/PMA_charset_conversion_test.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for Charset Conversions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
$cfg['RecodingEngine'] = null;
|
||||
require_once 'libraries/charset_conversion.lib.php';
|
||||
require_once 'libraries/iconv_wrapper.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for Charset Conversions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Charset_Conversion_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_convertString
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*
|
||||
* @group medium
|
||||
*/
|
||||
public function testCharsetConversion()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'test',
|
||||
PMA_convertString('UTF-8', 'UTF-8', 'test')
|
||||
);
|
||||
|
||||
// 6 represents an arbitrary value for testing the default case
|
||||
$GLOBALS['PMA_recoding_engine'] = 6;
|
||||
$this->assertEquals(
|
||||
'test',
|
||||
PMA_convertString('UTF-8', 'flat', 'test')
|
||||
);
|
||||
|
||||
// TODO: remove function_exists if recode_string exists on server
|
||||
if (@function_exists('recode_string')) {
|
||||
$GLOBALS['PMA_recoding_engine'] = PMA_CHARSET_RECODE;
|
||||
$this->assertEquals(
|
||||
'Only That ecole & Can Be My Blame',
|
||||
PMA_convertString(
|
||||
'UTF-8', 'flat', 'Only That école & Can Be My Blame'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$GLOBALS['PMA_recoding_engine'] = PMA_CHARSET_ICONV;
|
||||
$GLOBALS['cfg']['IconvExtraParams'] = '//TRANSLIT';
|
||||
$this->assertEquals(
|
||||
"This is the Euro symbol 'EUR'.",
|
||||
PMA_convertString(
|
||||
'UTF-8', 'ISO-8859-1', "This is the Euro symbol '€'."
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
301
#pma/test/libraries/PMA_check_user_privileges_test.php
Normal file
301
#pma/test/libraries/PMA_check_user_privileges_test.php
Normal file
@@ -0,0 +1,301 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for check_user_privileges.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['cfg']['Server']['DisableIS'] = false;
|
||||
require_once 'libraries/Util.php';
|
||||
require_once 'libraries/Tracker.php';
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/check_user_privileges.lib.php';
|
||||
|
||||
/**
|
||||
* tests for check_user_privileges.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_CheckUserPrivileges_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* prepares environment for tests
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
|
||||
$GLOBALS['col_priv'] = false;
|
||||
$GLOBALS['db_priv'] = false;
|
||||
$GLOBALS['proc_priv'] = false;
|
||||
$GLOBALS['table_priv'] = false;
|
||||
$GLOBALS['is_reload_priv'] = false;
|
||||
}
|
||||
|
||||
|
||||
public function testPMA_getItemsFromShowGrantsRow()
|
||||
{
|
||||
// TEST CASE 1
|
||||
$show_grants_full_row = "GRANT ALL PRIVILEGES ON *.* "
|
||||
. "TO 'root'@'localhost' WITH GRANT OPTION";
|
||||
|
||||
list(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
) = PMA_getItemsFromShowGrantsRow(
|
||||
$show_grants_full_row
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"ALL PRIVILEGES",
|
||||
$show_grants_str
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"*",
|
||||
$show_grants_dbname
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"*",
|
||||
$show_grants_tblname
|
||||
);
|
||||
|
||||
// TEST CASE 2
|
||||
$show_grants_full_row = "GRANT ALL PRIVILEGES ON `mysql`.* TO "
|
||||
. "'root'@'localhost' WITH GRANT OPTION";
|
||||
|
||||
list(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
) = PMA_getItemsFromShowGrantsRow(
|
||||
$show_grants_full_row
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"ALL PRIVILEGES",
|
||||
$show_grants_str
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"mysql",
|
||||
$show_grants_dbname
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"*",
|
||||
$show_grants_tblname
|
||||
);
|
||||
|
||||
// TEST CASE 3
|
||||
$show_grants_full_row = "GRANT SELECT, INSERT, UPDATE, DELETE "
|
||||
. "ON `mysql`.`columns_priv` TO 'root'@'localhost'";
|
||||
|
||||
list(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
) = PMA_getItemsFromShowGrantsRow(
|
||||
$show_grants_full_row
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"SELECT, INSERT, UPDATE, DELETE",
|
||||
$show_grants_str
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"mysql",
|
||||
$show_grants_dbname
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"columns_priv",
|
||||
$show_grants_tblname
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test for PMA_checkRequiredPrivilegesForAdjust
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMA_checkRequiredPrivilegesForAdjust()
|
||||
{
|
||||
// TEST CASE 1
|
||||
$show_grants_full_row = "GRANT ALL PRIVILEGES ON *.* "
|
||||
. "TO 'root'@'localhost' WITH GRANT OPTION";
|
||||
list(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
) = PMA_getItemsFromShowGrantsRow(
|
||||
$show_grants_full_row
|
||||
);
|
||||
|
||||
// call the to-be-tested function
|
||||
PMA_checkRequiredPrivilegesForAdjust(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['col_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['db_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['proc_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['table_priv']
|
||||
);
|
||||
|
||||
// re-initialise the privileges
|
||||
$this->setUp();
|
||||
|
||||
// TEST CASE 2
|
||||
$show_grants_full_row = "GRANT ALL PRIVILEGES ON `mysql`.* TO "
|
||||
. "'root'@'localhost' WITH GRANT OPTION";
|
||||
list(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
) = PMA_getItemsFromShowGrantsRow(
|
||||
$show_grants_full_row
|
||||
);
|
||||
|
||||
// call the to-be-tested function
|
||||
PMA_checkRequiredPrivilegesForAdjust(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['col_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['db_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['proc_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['table_priv']
|
||||
);
|
||||
|
||||
|
||||
// re-initialise the privileges
|
||||
$this->setUp();
|
||||
|
||||
// TEST CASE 3
|
||||
$show_grants_full_row = "GRANT SELECT, INSERT, UPDATE, DELETE ON "
|
||||
. "`mysql`.* TO 'root'@'localhost'";
|
||||
list(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
) = PMA_getItemsFromShowGrantsRow(
|
||||
$show_grants_full_row
|
||||
);
|
||||
|
||||
// call the to-be-tested function
|
||||
PMA_checkRequiredPrivilegesForAdjust(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['col_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['db_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['proc_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['table_priv']
|
||||
);
|
||||
|
||||
|
||||
// re-initialise the privileges
|
||||
$this->setUp();
|
||||
|
||||
// TEST CASE 4
|
||||
$show_grants_full_row = "GRANT SELECT, INSERT, UPDATE, DELETE ON "
|
||||
. "`mysql`.`db` TO 'root'@'localhost'";
|
||||
list(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
) = PMA_getItemsFromShowGrantsRow(
|
||||
$show_grants_full_row
|
||||
);
|
||||
|
||||
// call the to-be-tested function
|
||||
PMA_checkRequiredPrivilegesForAdjust(
|
||||
$show_grants_str,
|
||||
$show_grants_dbname,
|
||||
$show_grants_tblname
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$GLOBALS['col_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$GLOBALS['db_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$GLOBALS['proc_priv']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$GLOBALS['table_priv']
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
84
#pma/test/libraries/PMA_config_functions_test.php
Normal file
84
#pma/test/libraries/PMA_config_functions_test.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for Config Functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/config/config_functions.lib.php';
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for Config Functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Config_Functions_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_lang
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMALang()
|
||||
{
|
||||
$this->assertEquals(
|
||||
"<a attr='value'>test</a>",
|
||||
PMA_lang("<a attr='value'>test</a>")
|
||||
);
|
||||
|
||||
$GLOBALS["strConfiglangKeyFooBar"] = "<a attr='value'>[em]test[/em]</a>";
|
||||
|
||||
$this->assertEquals(
|
||||
"<a attr='value'><em>test</em></a>",
|
||||
PMA_lang("langKeyFooBar")
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"1988-08-01",
|
||||
PMA_lang("%04d-%02d-%02d", "1988", "8", "1")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_langName
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testLangName()
|
||||
{
|
||||
$canonicalPath = "Servers/1/2test";
|
||||
|
||||
$this->assertEquals(
|
||||
"Servers_2test_name",
|
||||
PMA_langName($canonicalPath)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
"returnsDefault",
|
||||
PMA_langName($canonicalPath, "name", "returnsDefault")
|
||||
);
|
||||
|
||||
$GLOBALS["strConfigServers_2test_name"] = "<a>msg</a>";
|
||||
|
||||
$this->assertEquals(
|
||||
"<a>msg</a>",
|
||||
PMA_langName($canonicalPath)
|
||||
);
|
||||
|
||||
$GLOBALS["strConfigServers_2test_desc"] = "<a>msg</a>";
|
||||
|
||||
$this->assertEquals(
|
||||
"<a>msg</a>",
|
||||
PMA_langName($canonicalPath, "desc")
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
223
#pma/test/libraries/PMA_designer_test.php
Normal file
223
#pma/test/libraries/PMA_designer_test.php
Normal file
@@ -0,0 +1,223 @@
|
||||
<?php
|
||||
/**
|
||||
* Tests for libraries/db_designer.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/db_designer.lib.php';
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/relation.lib.php';
|
||||
require_once 'libraries/plugin_interface.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for libraries/db_designer.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_DesignerTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Setup for test cases
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['cfg']['ServerDefault'] = 1;
|
||||
$GLOBALS['cfg']['PDFPageSizes'] = array('A3', 'A4');
|
||||
$GLOBALS['cfg']['PDFDefaultPageSize'] = 'A4';
|
||||
$GLOBALS['cfg']['Schema']['pdf_orientation'] = 'L';
|
||||
$GLOBALS['cfg']['Schema']['pdf_paper'] = 'A4';
|
||||
|
||||
$_SESSION = array(
|
||||
'relation' => array(
|
||||
'1' => array(
|
||||
'PMA_VERSION' => PMA_VERSION,
|
||||
'db' => 'pmadb',
|
||||
'pdf_pages' => 'pdf_pages',
|
||||
'pdfwork' => true
|
||||
)
|
||||
),
|
||||
' PMA_token ' => 'token'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Mocks database interaction for tests.
|
||||
*
|
||||
* @param string $db database name
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function _mockDatabaseInteraction($db)
|
||||
{
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('tryQuery')
|
||||
->with(
|
||||
"SELECT `page_nr`, `page_descr` FROM `pmadb`.`pdf_pages`"
|
||||
. " WHERE db_name = '" . $db . "' ORDER BY `page_descr`",
|
||||
2,
|
||||
PMA\libraries\DatabaseInterface::QUERY_STORE,
|
||||
false
|
||||
)
|
||||
->will($this->returnValue('dummyRS'));
|
||||
|
||||
$dbi->expects($this->exactly(3))
|
||||
->method('fetchAssoc')
|
||||
->willReturnOnConsecutiveCalls(
|
||||
array('page_nr' => '1', 'page_descr' => 'page1'),
|
||||
array('page_nr' => '2', 'page_descr' => 'page2'),
|
||||
false
|
||||
);
|
||||
|
||||
$dbi->expects($this->any())
|
||||
->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getPageIdsAndNames()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetPageIdsAndNames()
|
||||
{
|
||||
$db = 'db';
|
||||
$this->_mockDatabaseInteraction($db);
|
||||
|
||||
$result = PMA_getPageIdsAndNames($db);
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'1' => 'page1',
|
||||
'2' => 'page2'
|
||||
),
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForEditOrDeletePages()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForEditOrDeletePages()
|
||||
{
|
||||
$db = 'db';
|
||||
$operation = 'edit';
|
||||
$this->_mockDatabaseInteraction($db);
|
||||
|
||||
$result = PMA_getHtmlForEditOrDeletePages($db, $operation);
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="operation" value="' . $operation . '" />',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<select name="selected_page" id="selected_page">',
|
||||
$result
|
||||
);
|
||||
$this->assertContains('<option value="0">', $result);
|
||||
$this->assertContains('<option value="1">', $result);
|
||||
$this->assertContains('page1', $result);
|
||||
$this->assertContains('<option value="2">', $result);
|
||||
$this->assertContains('page2', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForPageSaveAs()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForPageSaveAs()
|
||||
{
|
||||
$db = 'db';
|
||||
$this->_mockDatabaseInteraction($db);
|
||||
|
||||
$result = PMA_getHtmlForPageSaveAs($db);
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="operation" value="savePage" />',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<select name="selected_page" id="selected_page">',
|
||||
$result
|
||||
);
|
||||
$this->assertContains('<option value="0">', $result);
|
||||
$this->assertContains('<option value="1">', $result);
|
||||
$this->assertContains('page1', $result);
|
||||
$this->assertContains('<option value="2">', $result);
|
||||
$this->assertContains('page2', $result);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="radio" name="save_page" id="save_page_same" value="same"'
|
||||
. ' checked="checked" />',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="radio" name="save_page" id="save_page_new" value="new" />',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="text" name="selected_value" id="selected_value" />',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForSchemaExport()
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForSchemaExport()
|
||||
{
|
||||
$db = 'db';
|
||||
$page = 2;
|
||||
|
||||
$result = PMA_getHtmlForSchemaExport($db, $page);
|
||||
// export type
|
||||
$this->assertContains(
|
||||
'<select id="plugins" name="export_type">',
|
||||
$result
|
||||
);
|
||||
|
||||
// hidden field
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="page_number" value="' . $page . '" />',
|
||||
$result
|
||||
);
|
||||
|
||||
// orientation
|
||||
$this->assertContains(
|
||||
'<select name="pdf_orientation" id="select_pdf_orientation">',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<option value="L" selected="selected">Landscape</option>',
|
||||
$result
|
||||
);
|
||||
$this->assertContains('<option value="P">Portrait</option>', $result);
|
||||
|
||||
// paper size
|
||||
$this->assertContains(
|
||||
'<select name="pdf_paper" id="select_pdf_paper">',
|
||||
$result
|
||||
);
|
||||
$this->assertContains('<option value="A3">A3</option>', $result);
|
||||
$this->assertContains(
|
||||
'<option value="A4" selected="selected">A4</option>',
|
||||
$result
|
||||
);
|
||||
}
|
||||
}
|
||||
116
#pma/test/libraries/PMA_display_change_password_test.php
Normal file
116
#pma/test/libraries/PMA_display_change_password_test.php
Normal file
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for display_change_password.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/display_change_password.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
require_once 'libraries/config.default.php';
|
||||
|
||||
/**
|
||||
* class PMA_DisplayChangePassword_Test
|
||||
*
|
||||
* this class is for testing display_change_password.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_DisplayChangePassword_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$GLOBALS
|
||||
$GLOBALS['PMA_Config'] = new PMA\libraries\Config();
|
||||
$GLOBALS['PMA_Config']->enableBc();
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$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']['Server']['DisableIS'] = false;
|
||||
$GLOBALS['PMA_PHP_SELF'] = "server_privileges.php";
|
||||
$GLOBALS['server'] = 0;
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$_SESSION['relation'][$GLOBALS['server']] = "relation";
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForChangePassword
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForChangePassword()
|
||||
{
|
||||
$username = "pma_username";
|
||||
$hostname = "pma_hostname";
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForChangePassword('change_pw', $username, $hostname);
|
||||
|
||||
//PMA_PHP_SELF
|
||||
$this->assertContains(
|
||||
$GLOBALS['PMA_PHP_SELF'],
|
||||
$html
|
||||
);
|
||||
|
||||
//PMA_URL_getHiddenInputs
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs(),
|
||||
$html
|
||||
);
|
||||
|
||||
//$username & $hostname
|
||||
$this->assertContains(
|
||||
htmlspecialchars($username),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($hostname),
|
||||
$html
|
||||
);
|
||||
|
||||
//labels
|
||||
$this->assertContains(
|
||||
__('Change password'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('No Password'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Password:'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Password:'),
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
107
#pma/test/libraries/PMA_display_create_table_test.php
Normal file
107
#pma/test/libraries/PMA_display_create_table_test.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for display_create_table.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
$GLOBALS['server'] = 0;
|
||||
$GLOBALS['cfg']['Server']['DisableIS'] = false;
|
||||
$GLOBALS['cfg']['DBG']['sql'] = false;
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/display_create_table.lib.php';
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* class PMA_DisplayCreateTable_Test
|
||||
*
|
||||
* this class is for testing display_create_table.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_DisplayCreateTable_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$GLOBALS
|
||||
$GLOBALS['server'] = 0;
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$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['PMA_PHP_SELF'] = "server_privileges.php";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$_SESSION['relation'][$GLOBALS['server']] = "relation";
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForCreateTable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForCreateTable()
|
||||
{
|
||||
$db = "pma_db";
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForCreateTable($db);
|
||||
|
||||
//getImage
|
||||
$this->assertContains(
|
||||
PMA\libraries\Util::getImage('b_table_add.png'),
|
||||
$html
|
||||
);
|
||||
|
||||
//__('Create table')
|
||||
$this->assertContains(
|
||||
__('Create table'),
|
||||
$html
|
||||
);
|
||||
|
||||
//PMA_URL_getHiddenInputs
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs($db),
|
||||
$html
|
||||
);
|
||||
//label
|
||||
$this->assertContains(
|
||||
__('Name'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Number of columns'),
|
||||
$html
|
||||
);
|
||||
|
||||
//button
|
||||
$this->assertContains(
|
||||
__('Go'),
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
338
#pma/test/libraries/PMA_display_export_test.php
Normal file
338
#pma/test/libraries/PMA_display_export_test.php
Normal file
@@ -0,0 +1,338 @@
|
||||
<?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
|
||||
);
|
||||
}
|
||||
}
|
||||
54
#pma/test/libraries/PMA_escapeJsString_test.php
Normal file
54
#pma/test/libraries/PMA_escapeJsString_test.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for javascript escaping.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* Test for javascript escaping.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_EscapeJsString_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* PMA_escapeJsString tests
|
||||
*
|
||||
* @param string $target expected output
|
||||
* @param string $source string to be escaped
|
||||
*
|
||||
* @return void
|
||||
* @dataProvider escapeDataProvider
|
||||
*/
|
||||
public function testEscape($target, $source)
|
||||
{
|
||||
$this->assertEquals($target, PMA_escapeJsString($source));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testEscape
|
||||
*
|
||||
* @return array data for testEscape test case
|
||||
*/
|
||||
public function escapeDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('\\\';', '\';'),
|
||||
array('\r\n\\\'<scrIpt></\' + \'script>', "\r\n'<scrIpt></sCRIPT>"),
|
||||
array('\\\';[XSS]', '\';[XSS]'),
|
||||
array(
|
||||
'</\' + \'script></head><body>[HTML]',
|
||||
'</SCRIPT></head><body>[HTML]'
|
||||
),
|
||||
array('\"\\\'\\\\\\\'\"', '"\'\\\'"'),
|
||||
array("\\\\\'\'\'\'\'\'\'\'\'\'\'\'\\\\", "\\''''''''''''\\")
|
||||
);
|
||||
}
|
||||
}
|
||||
110
#pma/test/libraries/PMA_export_test.php
Normal file
110
#pma/test/libraries/PMA_export_test.php
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for export.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
require_once 'libraries/export.lib.php';
|
||||
|
||||
/**
|
||||
* class PMA_Export_Test
|
||||
*
|
||||
* this class is for testing export.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group large
|
||||
*/
|
||||
class PMA_Export_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_mergeAliases
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAMergeAliases()
|
||||
{
|
||||
$aliases1 = array(
|
||||
'test_db' => array(
|
||||
'alias' => 'aliastest',
|
||||
'tables' => array(
|
||||
'foo' => array(
|
||||
'alias' => 'foobar',
|
||||
'columns' => array(
|
||||
'bar' => 'foo',
|
||||
'baz' => 'barbaz'
|
||||
)
|
||||
),
|
||||
'bar' => array(
|
||||
'alias' => 'foobaz',
|
||||
'columns' => array(
|
||||
'a' => 'a_alias',
|
||||
'b' => 'b'
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
$aliases2 = array(
|
||||
'test_db' => array(
|
||||
'alias' => 'test',
|
||||
'tables' => array(
|
||||
'foo' => array(
|
||||
'columns' => array(
|
||||
'bar' => 'foobar'
|
||||
)
|
||||
),
|
||||
'baz' => array(
|
||||
'columns' => array(
|
||||
'a' => 'x'
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
$expected = array(
|
||||
'test_db' => array(
|
||||
'alias' => 'test',
|
||||
'tables' => array(
|
||||
'foo' => array(
|
||||
'alias' => 'foobar',
|
||||
'columns' => array(
|
||||
'bar' => 'foobar',
|
||||
'baz' => 'barbaz'
|
||||
)
|
||||
),
|
||||
'bar' => array(
|
||||
'alias' => 'foobaz',
|
||||
'columns' => array(
|
||||
'a' => 'a_alias',
|
||||
'b' => 'b'
|
||||
)
|
||||
),
|
||||
'baz' => array(
|
||||
'columns' => array(
|
||||
'a' => 'x'
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
$actual = PMA_mergeAliases($aliases1, $aliases2);
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
}
|
||||
130
#pma/test/libraries/PMA_generateCommonUrl_test.php
Normal file
130
#pma/test/libraries/PMA_generateCommonUrl_test.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for PMA_URL_getCommon()
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
/**
|
||||
* tests for PMA_URL_getCommon()
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_GenerateCommonURL_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Sets up the fixture, for example, opens a network connection.
|
||||
* This method is called before a test is executed.
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
unset($_COOKIE['pma_lang'], $_COOKIE['pma_collation_connection']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_URL_getCommon for DB only
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDbOnly()
|
||||
{
|
||||
$GLOBALS['server'] = 'x';
|
||||
$GLOBALS['collation_connection'] = 'x';
|
||||
$GLOBALS['cfg']['ServerDefault'] = 'y';
|
||||
|
||||
$separator = PMA_URL_getArgSeparator();
|
||||
$expected = 'server=x' . htmlentities($separator)
|
||||
. 'lang=en' . htmlentities($separator)
|
||||
. 'collation_connection=x' . htmlentities($separator)
|
||||
. 'token=token'
|
||||
;
|
||||
|
||||
$expected = '?db=db'
|
||||
. htmlentities($separator) . $expected;
|
||||
|
||||
$this->assertEquals($expected, PMA_URL_getCommon(array('db' => 'db')));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_URL_getCommon with new style
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNewStyle()
|
||||
{
|
||||
$GLOBALS['server'] = 'x';
|
||||
$GLOBALS['collation_connection'] = 'x';
|
||||
$GLOBALS['cfg']['ServerDefault'] = 'y';
|
||||
|
||||
$separator = PMA_URL_getArgSeparator();
|
||||
$expected = 'server=x' . htmlentities($separator)
|
||||
. 'lang=en' . htmlentities($separator)
|
||||
. 'collation_connection=x' . htmlentities($separator)
|
||||
. 'token=token'
|
||||
;
|
||||
|
||||
$expected = '?db=db'
|
||||
. htmlentities($separator) . 'table=table'
|
||||
. htmlentities($separator) . $expected;
|
||||
$params = array('db' => 'db', 'table' => 'table');
|
||||
$this->assertEquals($expected, PMA_URL_getCommon($params));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_URL_getCommon with alternate divider
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testWithAlternateDivider()
|
||||
{
|
||||
$GLOBALS['server'] = 'x';
|
||||
$GLOBALS['collation_connection'] = 'x';
|
||||
$GLOBALS['cfg']['ServerDefault'] = 'y';
|
||||
|
||||
$separator = PMA_URL_getArgSeparator();
|
||||
$expected = 'server=x' . $separator
|
||||
. 'lang=en' . $separator
|
||||
. 'collation_connection=x' . $separator
|
||||
. 'token=token'
|
||||
;
|
||||
|
||||
$expected = '#ABC#db=db' . $separator . 'table=table' . $separator
|
||||
. $expected;
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
PMA_URL_getCommon(
|
||||
array('db' => 'db', 'table' => 'table'), 'text', '#ABC#'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_URL_getCommon
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDefault()
|
||||
{
|
||||
$GLOBALS['server'] = 'x';
|
||||
$GLOBALS['collation_connection'] = 'x';
|
||||
$GLOBALS['cfg']['ServerDefault'] = 'y';
|
||||
|
||||
$separator = PMA_URL_getArgSeparator();
|
||||
$expected = '?server=x' . htmlentities($separator)
|
||||
. 'lang=en' . htmlentities($separator)
|
||||
. 'collation_connection=x' . htmlentities($separator)
|
||||
. 'token=token'
|
||||
;
|
||||
$this->assertEquals($expected, PMA_URL_getCommon());
|
||||
}
|
||||
}
|
||||
71
#pma/test/libraries/PMA_iconv_wrapper_test.php
Normal file
71
#pma/test/libraries/PMA_iconv_wrapper_test.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for Charset Conversions for IBM AIX compliant codes
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/iconv_wrapper.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for Charset Conversions for IBM AIX compliant codes
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Iconv_Wrapper_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Test for PMA_convertAIXMapCharsets
|
||||
*
|
||||
* @param string $in_charset Non IBM-AIX-Compliant in-charset
|
||||
* @param string $out_charset Non IBM-AIX-Compliant out-charset
|
||||
* @param string $in_charset_mapped IBM-AIX-Compliant in-charset
|
||||
* @param string $out_charset_mapped IBM-AIX-Compliant out-charset
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
* @dataProvider iconvDataProvider
|
||||
*/
|
||||
public function testIconvMapCharsets($in_charset, $out_charset,
|
||||
$in_charset_mapped, $out_charset_mapped
|
||||
) {
|
||||
$this->assertEquals(
|
||||
array($in_charset_mapped, $out_charset_mapped),
|
||||
PMA_convertAIXMapCharsets($in_charset, $out_charset)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Data provider for testIconvMapCharsets
|
||||
*
|
||||
* @return array data for testIconvMapCharsets test case
|
||||
*/
|
||||
public function iconvDataProvider()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'UTF-8',
|
||||
'ISO-8859-1//IGNORE',
|
||||
'UTF-8',
|
||||
'ISO-8859-1//IGNORE'
|
||||
),
|
||||
array(
|
||||
'UTF-8',
|
||||
'ISO-8859-1//TRANSLIT',
|
||||
'UTF-8',
|
||||
'ISO8859-1'
|
||||
),
|
||||
array('UTF-8',
|
||||
'ISO-8859-9',
|
||||
'UTF-8',
|
||||
'ISO8859-9'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
487
#pma/test/libraries/PMA_import_test.php
Normal file
487
#pma/test/libraries/PMA_import_test.php
Normal file
@@ -0,0 +1,487 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA_checkTimeout()
|
||||
* from libraries/import.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
/*
|
||||
* we must set $GLOBALS['server'] here
|
||||
* since 'check_user_privileges.lib.php' will use it globally
|
||||
*/
|
||||
$GLOBALS['server'] = 0;
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/import.lib.php';
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for import functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Import_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['cfg']['ServerDefault'] = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_checkTimeout
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testCheckTimeout()
|
||||
{
|
||||
global $timestamp, $maximum_time, $timeout_passed;
|
||||
|
||||
//Reinit values.
|
||||
$timestamp = time();
|
||||
$maximum_time = 0;
|
||||
$timeout_passed = false;
|
||||
|
||||
$this->assertFalse(PMA_checkTimeout());
|
||||
|
||||
//Reinit values.
|
||||
$timestamp = time();
|
||||
$maximum_time = 0;
|
||||
$timeout_passed = true;
|
||||
|
||||
$this->assertFalse(PMA_checkTimeout());
|
||||
|
||||
//Reinit values.
|
||||
$timestamp = time();
|
||||
$maximum_time = 30;
|
||||
$timeout_passed = true;
|
||||
|
||||
$this->assertTrue(PMA_checkTimeout());
|
||||
|
||||
//Reinit values.
|
||||
$timestamp = time()-15;
|
||||
$maximum_time = 30;
|
||||
$timeout_passed = false;
|
||||
|
||||
$this->assertFalse(PMA_checkTimeout());
|
||||
|
||||
//Reinit values.
|
||||
$timestamp = time()-60;
|
||||
$maximum_time = 30;
|
||||
$timeout_passed = false;
|
||||
|
||||
$this->assertTrue(PMA_checkTimeout());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_lookForUse
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testLookForUse()
|
||||
{
|
||||
$this->assertEquals(
|
||||
array(null, null),
|
||||
PMA_lookForUse(null, null, null)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array('myDb', null),
|
||||
PMA_lookForUse(null, 'myDb', null)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array('myDb', true),
|
||||
PMA_lookForUse(null, 'myDb', true)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array('myDb', true),
|
||||
PMA_lookForUse('select 1 from myTable', 'myDb', true)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array('anotherDb', true),
|
||||
PMA_lookForUse('use anotherDb', 'myDb', false)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array('anotherDb', true),
|
||||
PMA_lookForUse('use anotherDb', 'myDb', true)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array('anotherDb', true),
|
||||
PMA_lookForUse('use `anotherDb`;', 'myDb', true)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getColumnAlphaName
|
||||
*
|
||||
* @param string $expected Expected result of the function
|
||||
* @param int $num The column number
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provGetColumnAlphaName
|
||||
*/
|
||||
function testGetColumnAlphaName($expected, $num)
|
||||
{
|
||||
$this->assertEquals($expected, PMA_getColumnAlphaName($num));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testGetColumnAlphaName
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provGetColumnAlphaName()
|
||||
{
|
||||
return array(
|
||||
array('A', 1),
|
||||
array('Z', 0),
|
||||
array('AA', 27),
|
||||
array('AZ', 52),
|
||||
array('BA', 53),
|
||||
array('BB', 54),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getColumnNumberFromName
|
||||
*
|
||||
* @param int $expected Expected result of the function
|
||||
* @param string|null $name column name(i.e. "A", or "BC", etc.)
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provGetColumnNumberFromName
|
||||
*/
|
||||
function testGetColumnNumberFromName($expected, $name)
|
||||
{
|
||||
$this->assertEquals($expected, PMA_getColumnNumberFromName($name));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testGetColumnNumberFromName
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provGetColumnNumberFromName()
|
||||
{
|
||||
return array(
|
||||
array(1, 'A'),
|
||||
array(26, 'Z'),
|
||||
array(27, 'AA'),
|
||||
array(52, 'AZ'),
|
||||
array(53, 'BA'),
|
||||
array(54, 'BB'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getDecimalPrecision
|
||||
*
|
||||
* @param int $expected Expected result of the function
|
||||
* @param string|null $size Size of field
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provGetDecimalPrecision
|
||||
*/
|
||||
function testGetDecimalPrecision($expected, $size)
|
||||
{
|
||||
$this->assertEquals($expected, PMA_getDecimalPrecision($size));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testGetDecimalPrecision
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provGetDecimalPrecision()
|
||||
{
|
||||
return array(
|
||||
array(2, '2,1'),
|
||||
array(6, '6,2'),
|
||||
array(6, '6,0'),
|
||||
array(16, '16,2'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getDecimalScale
|
||||
*
|
||||
* @param int $expected Expected result of the function
|
||||
* @param string|null $size Size of field
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provGetDecimalScale
|
||||
*/
|
||||
function testGetDecimalScale($expected, $size)
|
||||
{
|
||||
$this->assertEquals($expected, PMA_getDecimalScale($size));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testGetDecimalScale
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provGetDecimalScale()
|
||||
{
|
||||
return array(
|
||||
array(1, '2,1'),
|
||||
array(2, '6,2'),
|
||||
array(0, '6,0'),
|
||||
array(20, '30,20'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getDecimalSize
|
||||
*
|
||||
* @param array $expected Expected result of the function
|
||||
* @param string|null $cell Cell content
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provGetDecimalSize
|
||||
*/
|
||||
function testGetDecimalSize($expected, $cell)
|
||||
{
|
||||
$this->assertEquals($expected, PMA_getDecimalSize($cell));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testGetDecimalSize
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provGetDecimalSize()
|
||||
{
|
||||
return array(
|
||||
array(array(2, 1, '2,1'), '2.1'),
|
||||
array(array(2, 1, '2,1'), '6.2'),
|
||||
array(array(3, 1, '3,1'), '10.0'),
|
||||
array(array(4, 2, '4,2'), '30.20'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_detectType
|
||||
*
|
||||
* @param int $expected Expected result of the function
|
||||
* @param int|null $type Last cumulative column type (VARCHAR or INT or
|
||||
* BIGINT or DECIMAL or NONE)
|
||||
* @param string|null $cell String representation of the cell for which a
|
||||
* best-fit type is to be determined
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provDetectType
|
||||
*/
|
||||
function testDetectType($expected, $type, $cell)
|
||||
{
|
||||
$this->assertEquals($expected, PMA_detectType($type, $cell));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testDetectType
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provDetectType()
|
||||
{
|
||||
return array(
|
||||
array(NONE, null, 'NULL'),
|
||||
array(NONE, NONE, 'NULL'),
|
||||
array(INT, INT, 'NULL'),
|
||||
array(VARCHAR, VARCHAR, 'NULL'),
|
||||
array(VARCHAR, null, null),
|
||||
array(VARCHAR, INT, null),
|
||||
array(INT, INT, '10'),
|
||||
array(DECIMAL, DECIMAL, '10.2'),
|
||||
array(DECIMAL, INT, '10.2'),
|
||||
array(BIGINT, BIGINT, '2147483648'),
|
||||
array(BIGINT, INT, '2147483648'),
|
||||
array(VARCHAR, VARCHAR, 'test'),
|
||||
array(VARCHAR, INT, 'test'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getMatchedRows.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testPMAGetMatchedRows()
|
||||
{
|
||||
$GLOBALS['db'] = 'PMA';
|
||||
//mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$update_query = 'UPDATE `table_1` '
|
||||
. 'SET `id` = 20 '
|
||||
. 'WHERE `id` > 10';
|
||||
$simulated_update_query = 'SELECT `id` FROM `table_1` WHERE `id` > 10 AND (`id` <> 20)';
|
||||
|
||||
$delete_query = 'DELETE FROM `table_1` '
|
||||
. 'WHERE `id` > 10';
|
||||
$simulated_delete_query = 'SELECT * FROM `table_1` WHERE `id` > 10';
|
||||
|
||||
$dbi->expects($this->any())
|
||||
->method('numRows')
|
||||
->with(array())
|
||||
->will($this->returnValue(2));
|
||||
|
||||
$dbi->expects($this->any())
|
||||
->method('selectDb')
|
||||
->with('PMA')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$dbi->expects($this->at(1))
|
||||
->method('tryQuery')
|
||||
->with($simulated_update_query)
|
||||
->will($this->returnValue(array()));
|
||||
|
||||
$dbi->expects($this->at(4))
|
||||
->method('tryQuery')
|
||||
->with($simulated_delete_query)
|
||||
->will($this->returnValue(array()));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$this->simulatedQueryTest($update_query, $simulated_update_query);
|
||||
$this->simulatedQueryTest($delete_query, $simulated_delete_query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests simulated UPDATE/DELETE query.
|
||||
*
|
||||
* @param string $sql_query SQL query
|
||||
* @param string $simulated_query Simulated query
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function simulatedQueryTest($sql_query, $simulated_query)
|
||||
{
|
||||
$parser = new SqlParser\Parser($sql_query);
|
||||
$analyzed_sql_results = array(
|
||||
'query' => $sql_query,
|
||||
'parser' => $parser,
|
||||
'statement' => $parser->statements[0],
|
||||
);
|
||||
|
||||
$simulated_data = PMA_getMatchedRows($analyzed_sql_results);
|
||||
|
||||
// URL to matched rows.
|
||||
$_url_params = array(
|
||||
'db' => 'PMA',
|
||||
'sql_query' => $simulated_query
|
||||
);
|
||||
$matched_rows_url = 'sql.php' . PMA_URL_getCommon($_url_params);
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'sql_query' => PMA\libraries\Util::formatSql(
|
||||
$analyzed_sql_results['query']
|
||||
),
|
||||
'matched_rows' => 2,
|
||||
'matched_rows_url' => $matched_rows_url
|
||||
),
|
||||
$simulated_data
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_checkIfRollbackPossible
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testPMACheckIfRollbackPossible()
|
||||
{
|
||||
$GLOBALS['db'] = 'PMA';
|
||||
//mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
// List of Transactional Engines.
|
||||
$transactional_engines = array(
|
||||
'INNODB',
|
||||
'FALCON',
|
||||
'NDB',
|
||||
'INFINIDB',
|
||||
'TOKUDB',
|
||||
'XTRADB',
|
||||
'SEQUENCE',
|
||||
'BDB'
|
||||
);
|
||||
|
||||
$check_query = 'SELECT `ENGINE` FROM `information_schema`.`tables` '
|
||||
. 'WHERE `table_name` = "%s" '
|
||||
. 'AND `table_schema` = "%s" '
|
||||
. 'AND UPPER(`engine`) IN ("'
|
||||
. implode('", "', $transactional_engines)
|
||||
. '")';
|
||||
|
||||
$check_table_query = 'SELECT * FROM `%s`.`%s` '
|
||||
. 'LIMIT 1';
|
||||
|
||||
$dbi->expects($this->at(0))
|
||||
->method('tryQuery')
|
||||
->with(sprintf($check_table_query, 'PMA', 'table_1'))
|
||||
->will($this->returnValue(array('table')));
|
||||
|
||||
$dbi->expects($this->at(1))
|
||||
->method('tryQuery')
|
||||
->with(sprintf($check_query, 'table_1', 'PMA'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$dbi->expects($this->at(2))
|
||||
->method('numRows')
|
||||
->will($this->returnValue(1));
|
||||
|
||||
$dbi->expects($this->at(3))
|
||||
->method('tryQuery')
|
||||
->with(sprintf($check_table_query, 'PMA', 'table_2'))
|
||||
->will($this->returnValue(array('table')));
|
||||
|
||||
$dbi->expects($this->at(4))
|
||||
->method('tryQuery')
|
||||
->with(sprintf($check_query, 'table_2', 'PMA'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$dbi->expects($this->at(5))
|
||||
->method('numRows')
|
||||
->will($this->returnValue(1));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$sql_query = 'UPDATE `table_1` AS t1, `table_2` t2 '
|
||||
. 'SET `table_1`.`id` = `table_2`.`id` '
|
||||
. 'WHERE 1';
|
||||
|
||||
$this->assertEquals(true, PMA_checkIfRollbackPossible($sql_query));
|
||||
}
|
||||
}
|
||||
3106
#pma/test/libraries/PMA_insert_edit_test.php
Normal file
3106
#pma/test/libraries/PMA_insert_edit_test.php
Normal file
File diff suppressed because it is too large
Load Diff
243
#pma/test/libraries/PMA_ip_allow_deny_test.php
Normal file
243
#pma/test/libraries/PMA_ip_allow_deny_test.php
Normal file
@@ -0,0 +1,243 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for ip_allow_deny.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/ip_allow_deny.lib.php';
|
||||
|
||||
/**
|
||||
* PMA_Ip_Allow_Deny_Test class
|
||||
*
|
||||
* this class is for testing ip_allow_deny.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Ip_Allow_Deny_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['cfg']['Server']['user'] = "pma_username";
|
||||
$GLOBALS['cfg']['Server']['AllowDeny']['rules'][]
|
||||
= "allow % 255.255.255.0/4";
|
||||
$GLOBALS['cfg']['Server']['AllowDeny']['rules'][]
|
||||
= "allow % from 255.255.2.0/4";
|
||||
$GLOBALS['cfg']['Server']['AllowDeny']['rules'][]
|
||||
= "allow % from 2001:4998:c:a0d:0000:0000:4998:1020";
|
||||
$GLOBALS['cfg']['Server']['AllowDeny']['rules'][]
|
||||
= "allow % from 2001:4998:c:a0d:0000:0000:4998:[1001-2010]";
|
||||
$GLOBALS['cfg']['Server']['AllowDeny']['rules'][]
|
||||
= "allow % from 2001:4998:c:a0d:0000:0000:4998:3020/24";
|
||||
$GLOBALS['cfg']['Server']['AllowDeny']['rules'][] = "deny % 255.255.0.0/8";
|
||||
$GLOBALS['cfg']['Server']['AllowDeny']['rules'][]
|
||||
= "deny % from 255.255.0.0/8";
|
||||
include_once 'libraries/ip_allow_deny.lib.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getIp
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider proxyIPs
|
||||
*/
|
||||
public function testGetIp($remote, $header, $expected, $proxyip = null)
|
||||
{
|
||||
unset($_SERVER['REMOTE_ADDR']);
|
||||
unset($_SERVER['TEST_FORWARDED_HEADER']);
|
||||
$GLOBALS['cfg']['TrustedProxies'] = array();
|
||||
|
||||
if (!is_null($remote)) {
|
||||
$_SERVER['REMOTE_ADDR'] = $remote;
|
||||
}
|
||||
|
||||
if (!is_null($header)) {
|
||||
if (is_null($proxyip)) {
|
||||
$proxyip = $remote;
|
||||
}
|
||||
$GLOBALS['cfg']['TrustedProxies'][$proxyip] = 'TEST_FORWARDED_HEADER';
|
||||
$_SERVER['TEST_FORWARDED_HEADER'] = $header;
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
PMA_getIp()
|
||||
);
|
||||
|
||||
unset($_SERVER['REMOTE_ADDR']);
|
||||
unset($_SERVER['TEST_FORWARDED_HEADER']);
|
||||
$GLOBALS['cfg']['TrustedProxies'] = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for PMA_getIp tests
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function proxyIPs()
|
||||
{
|
||||
return array(
|
||||
// Nothing set
|
||||
array(null, null, false),
|
||||
// Remote IP set
|
||||
array('101.0.0.25', null, '101.0.0.25'),
|
||||
// Proxy
|
||||
array('101.0.0.25', '192.168.10.10', '192.168.10.10'),
|
||||
// Several proxies
|
||||
array('101.0.0.25', '192.168.10.1, 192.168.100.100', '192.168.10.1'),
|
||||
// Invalid proxy
|
||||
array('101.0.0.25', 'invalid', false),
|
||||
// Direct IP with proxy enabled
|
||||
array('101.0.0.25', '192.168.10.10', '101.0.0.25', '10.10.10.10'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_ipMaskTest
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testIpMaskTest()
|
||||
{
|
||||
//IPV4 testing
|
||||
$testRange = "255.255.0.0/8";
|
||||
$ipToTest = "10.0.0.0";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
|
||||
$testRange = "255.255.0.0/4";
|
||||
$ipToTest = "255.3.0.0";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
|
||||
$testRange = "255.255.0.[0-10]";
|
||||
$ipToTest = "255.3.0.3";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
$ipToTest = "255.3.0.12";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
|
||||
//IPV6 testing
|
||||
//not range
|
||||
$ipToTest = "2001:4998:c:a0d:0000:0000:4998:1020";
|
||||
$testRange = "2001:4998:c:a0d:0000:0000:4998:1020";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
$ipToTest = "2001:4998:c:a0d:0000:0000:4998:1020";
|
||||
$testRange = "2001:4998:c:a0d:0000:0000:4998:2020";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
|
||||
//range
|
||||
$ipToTest = "2001:4998:c:a0d:0000:0000:4998:1020";
|
||||
$testRange = "2001:4998:c:a0d:0000:0000:4998:[1001-2010]";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
$ipToTest = "2001:4998:c:a0d:0000:0000:4998:3020";
|
||||
$testRange = "2001:4998:c:a0d:0000:0000:4998:[1001-2010]";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
|
||||
//CDIR
|
||||
$ipToTest = "2001:4998:c:a0d:0000:0000:4998:1020";
|
||||
$testRange = "2001:4998:c:a0d:0000:0000:4998:[1001-2010]";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
$ipToTest = "2001:4998:c:a0d:0000:0000:4998:1000";
|
||||
$testRange = "2001:4998:c:a0d:0000:0000:4998:3020/24";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_ipMaskTest($testRange, $ipToTest)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_allowDeny
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testAllowDeny()
|
||||
{
|
||||
$_SERVER['REMOTE_ADDR'] = "";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_allowDeny("allow")
|
||||
);
|
||||
|
||||
$_SERVER['REMOTE_ADDR'] = "255.0.1.0";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_allowDeny("allow")
|
||||
);
|
||||
$_SERVER['REMOTE_ADDR'] = "10.0.0.0";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_allowDeny("allow")
|
||||
);
|
||||
|
||||
$_SERVER['REMOTE_ADDR'] = "255.255.0.1";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_allowDeny("deny")
|
||||
);
|
||||
$_SERVER['REMOTE_ADDR'] = "255.124.0.5";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_allowDeny("deny")
|
||||
);
|
||||
$_SERVER['REMOTE_ADDR'] = "122.124.0.5";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_allowDeny("deny")
|
||||
);
|
||||
|
||||
//IPV6
|
||||
$_SERVER['REMOTE_ADDR'] = "2001:4998:c:a0d:0000:0000:4998:1020";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_allowDeny("allow")
|
||||
);
|
||||
$_SERVER['REMOTE_ADDR'] = "2001:4998:c:a0d:0000:0000:4998:1000";
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_allowDeny("allow")
|
||||
);
|
||||
$_SERVER['REMOTE_ADDR'] = "2001:4998:c:a0d:0000:0000:4998:1020";
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_allowDeny("allow")
|
||||
);
|
||||
}
|
||||
}
|
||||
75
#pma/test/libraries/PMA_js_escape_test.php
Normal file
75
#pma/test/libraries/PMA_js_escape_test.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for JS variable formatting
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
|
||||
/**
|
||||
* tests for JS variable formatting
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_JS_Escape_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_getJsValue
|
||||
*
|
||||
* @param string $key Key
|
||||
* @param string $value Value
|
||||
* @param string $expected Expected output
|
||||
*
|
||||
* @dataProvider variables
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testFormat($key, $value, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, PMA_getJsValue($key, $value));
|
||||
$this->assertEquals('foo = 100', PMA_getJsValue('foo', '100', false));
|
||||
$array = array('1','2','3');
|
||||
$this->assertEquals(
|
||||
"foo = [\"1\",\"2\",\"3\",];\n",
|
||||
PMA_getJsValue('foo', $array)
|
||||
);
|
||||
$this->assertEquals(
|
||||
"foo = \"bar\\\"baz\";\n",
|
||||
PMA_getJsValue('foo', 'bar"baz')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_jsFormat
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testJsFormat()
|
||||
{
|
||||
$this->assertEquals("`foo`", PMA_jsFormat('foo'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Provider for testFormat
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function variables()
|
||||
{
|
||||
return array(
|
||||
array('foo', true, "foo = true;\n"),
|
||||
array('foo', false, "foo = false;\n"),
|
||||
array('foo', 100, "foo = 100;\n"),
|
||||
array('foo', 0, "foo = 0;\n"),
|
||||
array('foo', 'text', "foo = \"text\";\n"),
|
||||
array('foo', 'quote"', "foo = \"quote\\\"\";\n"),
|
||||
array('foo', 'apostroph\'', "foo = \"apostroph\\'\";\n"),
|
||||
);
|
||||
}
|
||||
}
|
||||
169
#pma/test/libraries/PMA_kanji-encoding_test.php
Normal file
169
#pma/test/libraries/PMA_kanji-encoding_test.php
Normal file
@@ -0,0 +1,169 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for Kanji Encoding Library
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/kanji-encoding.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for Kanji Encoding Library
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Kanji_Encoding_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_Kanji_checkEncoding
|
||||
*
|
||||
* @param string $encoding Encoding to set
|
||||
* @param string $expected Expected encoding list
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
* @dataProvider checkEncodingData
|
||||
*/
|
||||
public function testCheckEncoding($encoding, $expected)
|
||||
{
|
||||
mb_internal_encoding($encoding);
|
||||
$this->assertTrue(PMA_Kanji_checkEncoding());
|
||||
$this->assertEquals($expected, $GLOBALS['kanji_encoding_list']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testPMA_Kanji_checkEncoding
|
||||
*
|
||||
* @return array Test data
|
||||
*/
|
||||
public function checkEncodingData()
|
||||
{
|
||||
return array(
|
||||
array('UTF-8', 'ASCII,SJIS,EUC-JP,JIS'),
|
||||
array('EUC-JP', 'ASCII,EUC-JP,SJIS,JIS')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_Kanji_changeOrder
|
||||
*
|
||||
* @param string $kanji_test_list current list
|
||||
* @param string $expected expected list
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
* @dataProvider changeOrderData
|
||||
*/
|
||||
public function testChangeOrder($kanji_test_list, $expected)
|
||||
{
|
||||
$GLOBALS['kanji_encoding_list'] = $kanji_test_list;
|
||||
$this->assertTrue(PMA_Kanji_changeOrder());
|
||||
$this->assertEquals($expected, $GLOBALS['kanji_encoding_list']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data Provider for testPMA_Kanji_changeOrder
|
||||
*
|
||||
* @return array Test data
|
||||
*/
|
||||
public function changeOrderData()
|
||||
{
|
||||
return array(
|
||||
array('ASCII,SJIS,EUC-JP,JIS', 'ASCII,EUC-JP,SJIS,JIS'),
|
||||
array('ASCII,EUC-JP,SJIS,JIS', 'ASCII,SJIS,EUC-JP,JIS')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_Kanji_strConv
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testStrConv()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'test',
|
||||
PMA_Kanji_strConv('test', '', '')
|
||||
);
|
||||
|
||||
$GLOBALS['kanji_encoding_list'] = 'ASCII,SJIS,EUC-JP,JIS';
|
||||
|
||||
$this->assertEquals(
|
||||
'test è',
|
||||
PMA_Kanji_strConv('test è', '', '')
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
mb_convert_encoding('test è', 'ASCII', 'SJIS'),
|
||||
PMA_Kanji_strConv('test è', 'ASCII', '')
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
mb_convert_kana('全角', 'KV', 'SJIS'),
|
||||
PMA_Kanji_strConv('全角', '', 'kana')
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test for PMA_Kanji_fileConv
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testFileConv()
|
||||
{
|
||||
$file_str = "教育漢字常用漢字";
|
||||
$filename = 'test.kanji';
|
||||
$file = fopen($filename, 'w');
|
||||
fputs($file, $file_str);
|
||||
fclose($file);
|
||||
$GLOBALS['kanji_encoding_list'] = 'ASCII,EUC-JP,SJIS,JIS';
|
||||
|
||||
$result = PMA_Kanji_fileConv($filename, 'JIS', 'kana');
|
||||
|
||||
$string = file_get_contents($result);
|
||||
PMA_Kanji_changeOrder();
|
||||
$expected = PMA_Kanji_strConv($file_str, 'JIS', 'kana');
|
||||
PMA_Kanji_changeOrder();
|
||||
$this->assertEquals($string, $expected);
|
||||
unlink($result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test for PMA_Kanji_encodingForm
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testEncodingForm()
|
||||
{
|
||||
$actual = PMA_Kanji_encodingForm();
|
||||
$this->assertContains(
|
||||
'<input type="radio" name="knjenc"',
|
||||
$actual
|
||||
);
|
||||
$this->assertContains(
|
||||
'type="radio" name="knjenc"',
|
||||
$actual
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="radio" name="knjenc" value="EUC-JP" id="kj-euc" />',
|
||||
$actual
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="radio" name="knjenc" value="SJIS" id="kj-sjis" />',
|
||||
$actual
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="checkbox" name="xkana" value="kana" id="kj-kana" />',
|
||||
$actual
|
||||
);
|
||||
}
|
||||
}
|
||||
66
#pma/test/libraries/PMA_mime_test.php
Normal file
66
#pma/test/libraries/PMA_mime_test.php
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for mime.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
require_once 'libraries/mime.lib.php';
|
||||
|
||||
/**
|
||||
* Test for mime detection.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_MIME_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_detectMIME
|
||||
*
|
||||
* @param string $test MIME to test
|
||||
* @param string $output Expected output
|
||||
*
|
||||
* @return void
|
||||
* @dataProvider providerForTestDetectMIME
|
||||
*/
|
||||
public function testDetectMIME($test, $output)
|
||||
{
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_detectMIME($test),
|
||||
$output
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provider for testPMA_detectMIME
|
||||
*
|
||||
* @return array data for testPMA_detectMIME
|
||||
*/
|
||||
public function providerForTestDetectMIME()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'pma',
|
||||
'application/octet-stream'
|
||||
),
|
||||
array(
|
||||
'GIF',
|
||||
'image/gif'
|
||||
),
|
||||
array(
|
||||
"\x89PNG",
|
||||
'image/png'
|
||||
),
|
||||
array(
|
||||
chr(0xff) . chr(0xd8),
|
||||
'image/jpeg'
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
368
#pma/test/libraries/PMA_mult_submits_test.php
Normal file
368
#pma/test/libraries/PMA_mult_submits_test.php
Normal file
@@ -0,0 +1,368 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for mult_submits.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
require_once 'libraries/mult_submits.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
require_once 'libraries/relation_cleanup.lib.php';
|
||||
require_once 'libraries/relation.lib.php';
|
||||
require_once 'libraries/sql.lib.php';
|
||||
|
||||
|
||||
/**
|
||||
* class PMA_MultSubmits_Test
|
||||
*
|
||||
* this class is for testing mult_submits.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_MultSubmits_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$GLOBALS
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$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']['Server']['DisableIS'] = false;
|
||||
$GLOBALS['server'] = 0;
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = "both";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//_SESSION
|
||||
$_SESSION['relation'][$GLOBALS['server']] = array(
|
||||
'PMA_VERSION' => PMA_VERSION,
|
||||
'table_coords' => "table_name",
|
||||
'displaywork' => 'displaywork',
|
||||
'db' => "information_schema",
|
||||
'table_info' => 'table_info',
|
||||
'relwork' => 'relwork',
|
||||
'commwork' => 'commwork',
|
||||
'pdfwork' => 'pdfwork',
|
||||
'column_info' => 'column_info',
|
||||
'relation' => 'relation',
|
||||
);
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->any())
|
||||
->method('query')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForReplacePrefixTable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForReplacePrefixTable()
|
||||
{
|
||||
$action = 'delete_row';
|
||||
$_url_params = array('url_query'=>'PMA_original_url_query');
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForReplacePrefixTable($action, $_url_params);
|
||||
|
||||
//form action
|
||||
$this->assertContains(
|
||||
'<form id="ajax_form" action="delete_row" method="post">',
|
||||
$html
|
||||
);
|
||||
//$PMA_URL_getHiddenInputs
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs($_url_params),
|
||||
$html
|
||||
);
|
||||
//from_prefix
|
||||
$this->assertContains(
|
||||
'<input type="text" name="from_prefix" id="initialPrefix" />',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForAddPrefixTable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForAddPrefixTable()
|
||||
{
|
||||
$action = 'delete_row';
|
||||
$_url_params = array('url_query'=>'PMA_original_url_query');
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForAddPrefixTable($action, $_url_params);
|
||||
|
||||
//form action
|
||||
$this->assertContains(
|
||||
'<form id="ajax_form" action="' . $action . '" method="post">',
|
||||
$html
|
||||
);
|
||||
//$_url_params
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs($_url_params),
|
||||
$html
|
||||
);
|
||||
//from_prefix
|
||||
$this->assertContains(
|
||||
__('Add prefix'),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForOtherActions
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForOtherActions()
|
||||
{
|
||||
$what = 'replace_prefix_tbl';
|
||||
$action = 'delete_row';
|
||||
$_url_params = array('url_query'=>'PMA_original_url_query');
|
||||
$full_query = 'select column from PMA_table';
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForOtherActions(
|
||||
$what, $action, $_url_params, $full_query
|
||||
);
|
||||
|
||||
//validate 1: form action
|
||||
$this->assertContains(
|
||||
'<form action="' . $action . '" method="post">',
|
||||
$html
|
||||
);
|
||||
//validate 2: $_url_params
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs($_url_params),
|
||||
$html
|
||||
);
|
||||
//validate 3: conform
|
||||
$this->assertContains(
|
||||
__('Do you really want to execute the following query?'),
|
||||
$html
|
||||
);
|
||||
//validate 4: query
|
||||
$this->assertContains(
|
||||
'<code>' . $full_query . '</code>',
|
||||
$html
|
||||
);
|
||||
//validate 5: button : yes or no
|
||||
$this->assertContains(
|
||||
__('Yes'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('No'),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getUrlParams
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetUrlParams()
|
||||
{
|
||||
$what = 'row_delete';
|
||||
$reload = true;
|
||||
$action = 'db_delete_row';
|
||||
$db = "PMA_db";
|
||||
$table = "PMA_table";
|
||||
$selected = array(
|
||||
"index1" => "table1"
|
||||
);
|
||||
$views = null;
|
||||
$original_sql_query = "original_sql_query";
|
||||
$original_url_query = "original_url_query";
|
||||
|
||||
$_url_params = PMA_getUrlParams(
|
||||
$what, $reload, $action, $db, $table, $selected, $views,
|
||||
$original_sql_query, $original_url_query
|
||||
);
|
||||
$this->assertEquals(
|
||||
$what,
|
||||
$_url_params['query_type']
|
||||
);
|
||||
$this->assertEquals(
|
||||
$db,
|
||||
$_url_params['db']
|
||||
);
|
||||
$this->assertEquals(
|
||||
array('DELETE FROM `PMA_table` WHERE table1 LIMIT 1;'),
|
||||
$_url_params['selected']
|
||||
);
|
||||
$this->assertEquals(
|
||||
$original_sql_query,
|
||||
$_url_params['original_sql_query']
|
||||
);
|
||||
$this->assertEquals(
|
||||
$original_url_query,
|
||||
$_url_params['original_url_query']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_buildOrExecuteQueryForMulti
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMABuildOrExecuteQueryForMulti()
|
||||
{
|
||||
$query_type = 'row_delete';
|
||||
$db = "PMA_db";
|
||||
$table = "PMA_table";
|
||||
$selected = array(
|
||||
"table1", "table2"
|
||||
);
|
||||
$views = null;
|
||||
$primary = null;
|
||||
$from_prefix = "from_prefix";
|
||||
$to_prefix = "to_prefix";
|
||||
|
||||
$_REQUEST['pos'] = 1000;
|
||||
$_SESSION['tmpval']['pos'] = 1000;
|
||||
$_SESSION['tmpval']['max_rows'] = 25;
|
||||
|
||||
list(
|
||||
$result, $rebuild_database_list, $reload_ret,
|
||||
$run_parts, $execute_query_later,,
|
||||
) = PMA_buildOrExecuteQueryForMulti(
|
||||
$query_type, $selected, $db, $table, $views,
|
||||
$primary, $from_prefix, $to_prefix
|
||||
);
|
||||
|
||||
//validate 1: $run_parts
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$run_parts
|
||||
);
|
||||
|
||||
//validate 2: $result
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$result
|
||||
);
|
||||
|
||||
//validate 3: $rebuild_database_list
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$rebuild_database_list
|
||||
);
|
||||
|
||||
//validate 4: $reload_ret
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$reload_ret
|
||||
);
|
||||
|
||||
$query_type = 'analyze_tbl';
|
||||
list(
|
||||
,,,, $execute_query_later,,
|
||||
) = PMA_buildOrExecuteQueryForMulti(
|
||||
$query_type, $selected, $db, $table, $views,
|
||||
$primary, $from_prefix, $to_prefix
|
||||
);
|
||||
|
||||
//validate 5: $execute_query_later
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$execute_query_later
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getQueryFromSelected
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetQueryFromSelected()
|
||||
{
|
||||
$what = "drop_tbl";
|
||||
$table = "PMA_table";
|
||||
$selected = array(
|
||||
"table1", "table2"
|
||||
);
|
||||
$views = array(
|
||||
"table1", "table2"
|
||||
);
|
||||
|
||||
list($full_query, $reload, $full_query_views)
|
||||
= PMA_getQueryFromSelected(
|
||||
$what, $table, $selected, $views
|
||||
);
|
||||
|
||||
//validate 1: $full_query
|
||||
$this->assertContains(
|
||||
"DROP VIEW `table1`, `table2`",
|
||||
$full_query
|
||||
);
|
||||
|
||||
//validate 2: $reload
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$reload
|
||||
);
|
||||
|
||||
//validate 3: $full_query_views
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$full_query_views
|
||||
);
|
||||
|
||||
$what = "drop_db";
|
||||
|
||||
list($full_query, $reload, $full_query_views)
|
||||
= PMA_getQueryFromSelected(
|
||||
$what, $table, $selected, $views
|
||||
);
|
||||
|
||||
//validate 1: $full_query
|
||||
$this->assertContains(
|
||||
"DROP DATABASE `table1`;<br />DROP DATABASE `table2`;",
|
||||
$full_query
|
||||
);
|
||||
|
||||
//validate 2: $reload
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$reload
|
||||
);
|
||||
}
|
||||
}
|
||||
248
#pma/test/libraries/PMA_mysql_charsets_test.php
Normal file
248
#pma/test/libraries/PMA_mysql_charsets_test.php
Normal file
@@ -0,0 +1,248 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for MySQL Charsets
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/mysql_charsets.inc.php';
|
||||
|
||||
/**
|
||||
* Tests for MySQL Charsets
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_MySQL_Charsets_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_generateCharsetQueryPart
|
||||
*
|
||||
* @param string $collation Collation
|
||||
* @param string $expected Expected Charset Query
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
* @dataProvider charsetQueryData
|
||||
*/
|
||||
public function testGenerateCharsetQueryPart($collation, $expected)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
PMA_generateCharsetQueryPart($collation)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data Provider for testPMA_generateCharsetQueryPart
|
||||
*
|
||||
* @return array test data
|
||||
*/
|
||||
public function charsetQueryData()
|
||||
{
|
||||
return array(
|
||||
array("a_b_c_d", " CHARSET=a COLLATE a_b_c_d"),
|
||||
array("a_", " CHARSET=a COLLATE a_"),
|
||||
array("a", " CHARSET=a"),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test for PMA_getDbCollation
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testGetDbCollation()
|
||||
{
|
||||
$GLOBALS['server'] = 1;
|
||||
// test case for system schema
|
||||
$this->assertEquals(
|
||||
'utf8_general_ci',
|
||||
PMA_getDbCollation("information_schema")
|
||||
);
|
||||
|
||||
$GLOBALS['cfg']['Server']['DisableIS'] = false;
|
||||
$GLOBALS['cfg']['DBG']['sql'] = false;
|
||||
|
||||
$this->assertEquals(
|
||||
'utf8_general_ci',
|
||||
PMA_getDbCollation('pma_test')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test case for PMA_getCollationDescr()
|
||||
*
|
||||
* @param string $collation Collation for which description is reqd
|
||||
* @param string $desc Expected Description
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
* @dataProvider collationDescr
|
||||
*/
|
||||
public function testGetCollationDescr($collation, $desc)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$desc,
|
||||
PMA_getCollationDescr($collation)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data Provider for testPMA_getCollationDescr()
|
||||
*
|
||||
* @return array Test data for testPMA_getCollationDescr()
|
||||
*/
|
||||
public function collationDescr()
|
||||
{
|
||||
return array(
|
||||
array('binary', 'Binary'),
|
||||
array('foo_bulgarian_bar', 'Bulgarian'),
|
||||
array('gb2312_chinese', 'Simplified Chinese'),
|
||||
array('gbk_chinese', 'Simplified Chinese'),
|
||||
array('big5_chinese', 'Traditional Chinese'),
|
||||
array('foo_ci_bar', 'unknown, case-insensitive'),
|
||||
array('foo_cs_bar', 'unknown, case-sensitive'),
|
||||
array('foo_croatian_bar', 'Croatian'),
|
||||
array('foo_czech_bar', 'Czech'),
|
||||
array('foo_danish_bar', 'Danish'),
|
||||
array('foo_english_bar', 'English'),
|
||||
array('foo_esperanto_bar', 'Esperanto'),
|
||||
array('foo_estonian_bar', 'Estonian'),
|
||||
array('foo_german1_bar', 'German (dictionary)'),
|
||||
array('foo_german2_bar', 'German (phone book)'),
|
||||
array('foo_hungarian_bar', 'Hungarian'),
|
||||
array('foo_icelandic_bar', 'Icelandic'),
|
||||
array('foo_japanese_bar', 'Japanese'),
|
||||
array('foo_latvian_bar', 'Latvian'),
|
||||
array('foo_lithuanian_bar', 'Lithuanian'),
|
||||
array('foo_korean_bar', 'Korean'),
|
||||
array('foo_persian_bar', 'Persian'),
|
||||
array('foo_polish_bar', 'Polish'),
|
||||
array('foo_roman_bar', 'West European'),
|
||||
array('foo_romanian_bar', 'Romanian'),
|
||||
array('foo_slovak_bar', 'Slovak'),
|
||||
array('foo_slovenian_bar', 'Slovenian'),
|
||||
array('foo_spanish_bar', 'Spanish'),
|
||||
array('foo_spanish2_bar', 'Traditional Spanish'),
|
||||
array('foo_swedish_bar', 'Swedish'),
|
||||
array('foo_thai_bar', 'Thai'),
|
||||
array('foo_turkish_bar', 'Turkish'),
|
||||
array('foo_ukrainian_bar', 'Ukrainian'),
|
||||
array('foo_unicode_bar', 'Unicode (multilingual)'),
|
||||
array('ucs2', 'Unicode (multilingual)'),
|
||||
array('utf8', 'Unicode (multilingual)'),
|
||||
array('ascii', 'West European (multilingual)'),
|
||||
array('cp850', 'West European (multilingual)'),
|
||||
array('dec8', 'West European (multilingual)'),
|
||||
array('hp8', 'West European (multilingual)'),
|
||||
array('latin1', 'West European (multilingual)'),
|
||||
array('cp1250', 'Central European (multilingual)'),
|
||||
array('cp852', 'Central European (multilingual)'),
|
||||
array('latin2', 'Central European (multilingual)'),
|
||||
array('macce', 'Central European (multilingual)'),
|
||||
array('cp866', 'Russian'),
|
||||
array('koi8r', 'Russian'),
|
||||
array('gb2312', 'Simplified Chinese'),
|
||||
array('gbk', 'Simplified Chinese'),
|
||||
array('sjis', 'Japanese'),
|
||||
array('ujis', 'Japanese'),
|
||||
array('cp932', 'Japanese'),
|
||||
array('eucjpms', 'Japanese'),
|
||||
array('cp1257', 'Baltic (multilingual)'),
|
||||
array('latin7', 'Baltic (multilingual)'),
|
||||
array('armscii8', 'Armenian'),
|
||||
array('armscii', 'Armenian'),
|
||||
array('big5', 'Traditional Chinese'),
|
||||
array('cp1251', 'Cyrillic (multilingual)'),
|
||||
array('cp1256', 'Arabic'),
|
||||
array('euckr', 'Korean'),
|
||||
array('hebrew', 'Hebrew'),
|
||||
array('geostd8', 'Georgian'),
|
||||
array('greek', 'Greek'),
|
||||
array('keybcs2', 'Czech-Slovak'),
|
||||
array('koi8u', 'Ukrainian'),
|
||||
array('latin5', 'Turkish'),
|
||||
array('swe7', 'Swedish'),
|
||||
array('tis620', 'Thai'),
|
||||
array('foobar', 'unknown'),
|
||||
array('foo_test_bar', 'unknown'),
|
||||
array('foo_bin_bar', 'unknown, Binary')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_generateCharsetDropdownBox
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testGenerateCharsetDropdownBox()
|
||||
{
|
||||
$GLOBALS['mysql_charsets'] = array('latin1', 'latin2', 'latin3');
|
||||
$GLOBALS['mysql_charsets_available'] = array(
|
||||
'latin1' => true,
|
||||
'latin2' => false,
|
||||
'latin3' => true
|
||||
);
|
||||
$GLOBALS['mysql_charsets_descriptions'] = array(
|
||||
'latin1' => 'abc',
|
||||
'latin2' => 'def'
|
||||
);
|
||||
$GLOBALS['mysql_collations'] = array(
|
||||
'latin1' => array(
|
||||
'latin1_german1_ci',
|
||||
'latin1_swedish1_ci'
|
||||
),
|
||||
'latin2' => array('latin1_general_ci'),
|
||||
'latin3' => array()
|
||||
);
|
||||
$GLOBALS['mysql_collations_available'] = array(
|
||||
'latin1_german1_ci' => true,
|
||||
'latin1_swedish1_ci' => false,
|
||||
'latin2_general_ci' => true
|
||||
);
|
||||
$result = PMA_generateCharsetDropdownBox();
|
||||
|
||||
$this->assertContains('name="collation"', $result);
|
||||
$this->assertNotContains('id="', $result);
|
||||
$this->assertNotContains('class="autosubmit"', $result);
|
||||
$this->assertContains('<option value="">Collation', $result);
|
||||
$this->assertContains('<option value=""></option>', $result);
|
||||
$this->assertContains('<optgroup label="latin1', $result);
|
||||
$this->assertNotContains('<optgroup label="latin2', $result);
|
||||
$this->assertContains('title="latin3', $result);
|
||||
$this->assertContains('title="abc', $result);
|
||||
$this->assertNotContains('value="latin1_swedish1_ci"', $result);
|
||||
$this->assertContains('value="latin1_german1_ci"', $result);
|
||||
$this->assertNotContains('value="latin2_general1_ci"', $result);
|
||||
$this->assertContains('title="German', $result);
|
||||
|
||||
$result = PMA_generateCharsetDropdownBox(
|
||||
2, null, "test_id", "latin1", false, true
|
||||
);
|
||||
$this->assertContains('name="character_set"', $result);
|
||||
$this->assertNotContains('Charset</option>', $result);
|
||||
$this->assertContains('class="autosubmit"', $result);
|
||||
$this->assertContains('id="test_id"', $result);
|
||||
$this->assertContains('selected="selected">latin1', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getServerCollation
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testGetServerCollation()
|
||||
{
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['cfg']['DBG']['sql'] = false;
|
||||
$this->assertEquals('utf8_general_ci', PMA_getServerCollation());
|
||||
}
|
||||
}
|
||||
531
#pma/test/libraries/PMA_normalization_test.php
Normal file
531
#pma/test/libraries/PMA_normalization_test.php
Normal file
@@ -0,0 +1,531 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for normalization.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
use PMA\libraries\TypesMySQL;
|
||||
|
||||
$GLOBALS['server'] = 1;
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/relation.lib.php';
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
|
||||
require_once 'libraries/mysql_charsets.inc.php';
|
||||
require_once 'libraries/normalization.lib.php';
|
||||
|
||||
|
||||
/**
|
||||
* tests for normalization.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Normalization_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* prepares environment for tests
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['cfg']['LimitChars'] = 50;
|
||||
$GLOBALS['PMA_Types'] = new TypesMySQL();
|
||||
$GLOBALS['cfg']['ServerDefault'] = "PMA_server";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
$GLOBALS['cfg']['ShowHint'] = true;
|
||||
$GLOBALS['cfg']['CharEditing'] = '';
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
||||
$GLOBALS['db'] = 'PMA_db';
|
||||
$GLOBALS['table'] = 'PMA_table';
|
||||
$GLOBALS['server'] = 1;
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
// set expectations
|
||||
$dbi->expects($this->any())
|
||||
->method('selectDb')
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->any())
|
||||
->method('getColumns')
|
||||
->will(
|
||||
$this->returnValue(
|
||||
array(
|
||||
"id"=>array("Type"=>"integer"),
|
||||
"col1"=>array("Type"=>'varchar(100)'),
|
||||
"col2"=>array("Type"=>'DATETIME')
|
||||
)
|
||||
)
|
||||
);
|
||||
$dbi->expects($this->any())
|
||||
->method('getColumnNames')
|
||||
->will($this->returnValue(array("id", "col1", "col2")));
|
||||
$map = array(
|
||||
array('PMA_db', 'PMA_table1', null, array()),
|
||||
array(
|
||||
'PMA_db', 'PMA_table', null,
|
||||
array(array('Key_name'=>'PRIMARY', 'Column_name'=>'id'))
|
||||
),
|
||||
array(
|
||||
'PMA_db', 'PMA_table2', null,
|
||||
array(
|
||||
array('Key_name'=>'PRIMARY', 'Column_name'=>'id'),
|
||||
array('Key_name'=>'PRIMARY', 'Column_name'=>'col1')
|
||||
)
|
||||
),
|
||||
);
|
||||
$dbi->expects($this->any())
|
||||
->method('getTableIndexes')
|
||||
->will($this->returnValueMap($map));
|
||||
$dbi->expects($this->any())
|
||||
->method('tryQuery')
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->any())
|
||||
->method('fetchResult')
|
||||
->will($this->returnValue(array(0)));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForColumnsList
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForColumnsList()
|
||||
{
|
||||
$db = "PMA_db";
|
||||
$table= "PMA_table";
|
||||
$this->assertContains(
|
||||
'<option value="id">id [ integer ]</option>',
|
||||
PMA_getHtmlForColumnsList($table, $db)
|
||||
);
|
||||
$this->assertEquals(
|
||||
'<input type="checkbox" value="col1"/>col1 [ varchar(100) ]</br>',
|
||||
PMA_getHtmlForColumnsList($table, $db, 'String', 'checkbox')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForCreateNewColumn
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForCreateNewColumn()
|
||||
{
|
||||
$db = "PMA_db";
|
||||
$table= "PMA_table";
|
||||
$num_fields = 1;
|
||||
$result = PMA_getHtmlForCreateNewColumn($num_fields, $db, $table);
|
||||
$this->assertContains(
|
||||
'<table id="table_columns"',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlFor1NFStep1
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlFor1NFStep1()
|
||||
{
|
||||
$db = "PMA_db";
|
||||
$table= "PMA_table";
|
||||
$normalizedTo = '1nf';
|
||||
$result = PMA_getHtmlFor1NFStep1($db, $table, $normalizedTo);
|
||||
$this->assertContains(
|
||||
"<h3 class='center'>"
|
||||
. __('First step of normalization (1NF)') . "</h3>",
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
"<div id='mainContent'",
|
||||
$result
|
||||
);
|
||||
$this->assertContains("<legend>" . __('Step 1.'), $result);
|
||||
|
||||
$this->assertContains(
|
||||
'<h4',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<p',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
"<select id='selectNonAtomicCol'",
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
PMA_getHtmlForColumnsList(
|
||||
$db, $table, _pgettext('string types', 'String')
|
||||
), $result
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlContentsFor1NFStep2
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlContentsFor1NFStep2()
|
||||
{
|
||||
$db = "PMA_db";
|
||||
$table= "PMA_table1";
|
||||
$result = PMA_getHtmlContentsFor1NFStep2($db, $table);
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertArrayHasKey('legendText', $result);
|
||||
$this->assertArrayHasKey('headText', $result);
|
||||
$this->assertArrayHasKey('subText', $result);
|
||||
$this->assertArrayHasKey('hasPrimaryKey', $result);
|
||||
$this->assertArrayHasKey('extra', $result);
|
||||
$this->assertContains(
|
||||
'<a href="#" id="createPrimaryKey">',
|
||||
$result['subText']
|
||||
);
|
||||
$this->assertContains(
|
||||
'<a href="#" id="addNewPrimary">',
|
||||
$result['extra']
|
||||
);
|
||||
$this->assertEquals('0', $result['hasPrimaryKey']);
|
||||
$this->assertContains(__('Step 1.') . 2, $result['legendText']);
|
||||
$result1 = PMA_getHtmlContentsFor1NFStep2($db, 'PMA_table');
|
||||
$this->assertEquals('1', $result1['hasPrimaryKey']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlContentsFor1NFStep4
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlContentsFor1NFStep4()
|
||||
{
|
||||
$db = "PMA_db";
|
||||
$table= "PMA_table";
|
||||
$result = PMA_getHtmlContentsFor1NFStep4($db, $table);
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertArrayHasKey('legendText', $result);
|
||||
$this->assertArrayHasKey('headText', $result);
|
||||
$this->assertArrayHasKey('subText', $result);
|
||||
$this->assertArrayHasKey('extra', $result);
|
||||
$this->assertContains(__('Step 1.') . 4, $result['legendText']);
|
||||
$this->assertContains(
|
||||
PMA_getHtmlForColumnsList($db, $table, 'all', "checkbox"),
|
||||
$result['extra']
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="submit" id="removeRedundant"',
|
||||
$result['extra']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlContentsFor1NFStep3
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlContentsFor1NFStep3()
|
||||
{
|
||||
$db = "PMA_db";
|
||||
$table= "PMA_table";
|
||||
$result = PMA_getHtmlContentsFor1NFStep3($db, $table);
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertArrayHasKey('legendText', $result);
|
||||
$this->assertArrayHasKey('headText', $result);
|
||||
$this->assertArrayHasKey('subText', $result);
|
||||
$this->assertArrayHasKey('extra', $result);
|
||||
$this->assertArrayHasKey('primary_key', $result);
|
||||
$this->assertContains(__('Step 1.') . 3, $result['legendText']);
|
||||
$this->assertContains(
|
||||
PMA_getHtmlForColumnsList($db, $table, 'all', "checkbox"),
|
||||
$result['extra']
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="submit" id="moveRepeatingGroup"',
|
||||
$result['extra']
|
||||
);
|
||||
$this->assertEquals(json_encode(array('id')), $result['primary_key']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlFor2NFstep1
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlFor2NFstep1()
|
||||
{
|
||||
$db = "PMA_db";
|
||||
$table= "PMA_table";
|
||||
$result = PMA_getHtmlFor2NFstep1($db, $table);
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertArrayHasKey('legendText', $result);
|
||||
$this->assertArrayHasKey('headText', $result);
|
||||
$this->assertArrayHasKey('subText', $result);
|
||||
$this->assertArrayHasKey('extra', $result);
|
||||
$this->assertArrayHasKey('primary_key', $result);
|
||||
$this->assertContains(__('Step 2.') . 1, $result['legendText']);
|
||||
$this->assertEquals('id', $result['primary_key']);
|
||||
$result1 = PMA_getHtmlFor2NFstep1($db, "PMA_table2");
|
||||
$this->assertEquals('id, col1', $result1['primary_key']);
|
||||
$this->assertContains(
|
||||
'<a href="#" id="showPossiblePd"',
|
||||
$result1['headText']
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="checkbox" name="pd" value="id"',
|
||||
$result1['extra']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForNewTables2NF
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForNewTables2NF()
|
||||
{
|
||||
$table= "PMA_table";
|
||||
$partialDependencies = array('col1'=>array('col2'));
|
||||
$result = PMA_getHtmlForNewTables2NF($partialDependencies, $table);
|
||||
$this->assertContains(
|
||||
'<input type="text" name="col1"',
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_createNewTablesFor2NF
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMACreateNewTablesFor2NF()
|
||||
{
|
||||
$table= "PMA_table";
|
||||
$db = 'PMA_db';
|
||||
$tablesName = new stdClass();
|
||||
$tablesName->id = 'PMA_table';
|
||||
$tablesName->col1 = 'PMA_table1';
|
||||
$partialDependencies = array('id'=>array('col2'));
|
||||
$result = PMA_createNewTablesFor2NF(
|
||||
$partialDependencies, $tablesName, $table, $db
|
||||
);
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertArrayHasKey('legendText', $result);
|
||||
$this->assertArrayHasKey('headText', $result);
|
||||
$this->assertArrayHasKey('queryError', $result);
|
||||
$partialDependencies = array('id'=>array('col2'), 'col1'=>array('col2'));
|
||||
$result1 = PMA_createNewTablesFor2NF(
|
||||
$partialDependencies, $tablesName, $table, $db
|
||||
);
|
||||
$this->assertArrayHasKey('extra', $result1);
|
||||
$this->assertEquals(__('End of step'), $result1['legendText']);
|
||||
$this->assertEquals('', $result1['extra']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForNewTables3NF
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForNewTables3NF()
|
||||
{
|
||||
$tables= array("PMA_table"=>array('col1'));
|
||||
$db = 'PMA_db';
|
||||
$dependencies = new stdClass();
|
||||
$dependencies->col1 = array('col2');
|
||||
$result = PMA_getHtmlForNewTables3NF($dependencies, $tables, $db);
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'html' => '',
|
||||
'newTables' => array()
|
||||
), $result
|
||||
);
|
||||
$tables= array("PMA_table"=>array('col1', 'PMA_table'));
|
||||
$dependencies->PMA_table = array('col4', 'col5');
|
||||
$result1 = PMA_getHtmlForNewTables3NF($dependencies, $tables, $db);
|
||||
$this->assertInternalType('array', $result1);
|
||||
$this->assertContains(
|
||||
'<input type="text" name="PMA_table"',
|
||||
$result1['html']
|
||||
);
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'PMA_table' => array (
|
||||
'PMA_table' => array (
|
||||
'pk' => 'col1',
|
||||
'nonpk' => 'col2'
|
||||
),
|
||||
'table2' => array (
|
||||
'pk' => 'id',
|
||||
'nonpk' => 'col4, col5'
|
||||
)
|
||||
)
|
||||
), $result1['newTables']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_createNewTablesFor3NF
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMACreateNewTablesFor3NF()
|
||||
{
|
||||
$db = 'PMA_db';
|
||||
$cols = new stdClass();
|
||||
$cols->pk = 'id';
|
||||
$cols->nonpk = 'col1, col2';
|
||||
$cols1 = new stdClass();
|
||||
$cols1->pk = 'col2';
|
||||
$cols1->nonpk = 'col3, col4';
|
||||
$newTables = array('PMA_table'=>array('PMA_table'=>$cols, 'table1'=>$cols1));
|
||||
$result = PMA_createNewTablesFor3NF(
|
||||
$newTables, $db
|
||||
);
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertArrayHasKey('legendText', $result);
|
||||
$this->assertArrayHasKey('headText', $result);
|
||||
$this->assertArrayHasKey('queryError', $result);
|
||||
$newTables1 = array();
|
||||
$result1 = PMA_createNewTablesFor3NF(
|
||||
$newTables1, $db
|
||||
);
|
||||
$this->assertArrayHasKey('queryError', $result1);
|
||||
$this->assertEquals(__('End of step'), $result1['legendText']);
|
||||
$this->assertEquals(false, $result1['queryError']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_moveRepeatingGroup
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAMoveRepeatingGroup()
|
||||
{
|
||||
$repeatingColumns = 'col1, col2';
|
||||
$primary_columns = 'id,col1';
|
||||
$newTable = 'PMA_newTable';
|
||||
$newColumn = 'PMA_newCol';
|
||||
$table= "PMA_table";
|
||||
$db = 'PMA_db';
|
||||
$result = PMA_moveRepeatingGroup(
|
||||
$repeatingColumns, $primary_columns, $newTable, $newColumn, $table, $db
|
||||
);
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertArrayHasKey('queryError', $result);
|
||||
$this->assertArrayHasKey('message', $result);
|
||||
$this->assertInstanceOf(
|
||||
'PMA\libraries\Message', $result['message']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlFor3NFstep1
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlFor3NFstep1()
|
||||
{
|
||||
$db = "PMA_db";
|
||||
$tables= array("PMA_table");
|
||||
$result = PMA_getHtmlFor3NFstep1($db, $tables);
|
||||
$this->assertInternalType('array', $result);
|
||||
$this->assertArrayHasKey('legendText', $result);
|
||||
$this->assertArrayHasKey('headText', $result);
|
||||
$this->assertArrayHasKey('subText', $result);
|
||||
$this->assertArrayHasKey('extra', $result);
|
||||
$this->assertContains(__('Step 3.') . 1, $result['legendText']);
|
||||
$this->assertContains(
|
||||
'<form',
|
||||
$result['extra']
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="checkbox" name="pd" value="col1"',
|
||||
$result['extra']
|
||||
);
|
||||
$result1 = PMA_getHtmlFor3NFstep1($db, array("PMA_table2"));
|
||||
$this->assertEquals(
|
||||
'', $result1['subText']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForNormalizetable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForNormalizetable()
|
||||
{
|
||||
$result = PMA_getHtmlForNormalizetable();
|
||||
$this->assertContains(
|
||||
'<form method="post" action="normalization.php"'
|
||||
. ' name="normalize" id="normalizeTable"',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="step1" value="1">', $result
|
||||
);
|
||||
$choices = array(
|
||||
'1nf' => __('First step of normalization (1NF)'),
|
||||
'2nf' => __('Second step of normalization (1NF+2NF)'),
|
||||
'3nf' => __('Third step of normalization (1NF+2NF+3NF)'));
|
||||
|
||||
$html_tmp = PMA\libraries\Util::getRadioFields(
|
||||
'normalizeTo', $choices, '1nf', true
|
||||
);
|
||||
$this->assertContains($html_tmp, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_findPartialDependencies
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAFindPartialDependencies()
|
||||
{
|
||||
$table= "PMA_table2";
|
||||
$db = 'PMA_db';
|
||||
$result = PMA_findPartialDependencies($table, $db);
|
||||
$this->assertContains(
|
||||
'<div class="dependencies_box"',
|
||||
$result
|
||||
);
|
||||
$this->assertContains(__('No partial dependencies found!'), $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getAllCombinationPartialKeys
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetAllCombinationPartialKeys()
|
||||
{
|
||||
$primaryKey = array('id', 'col1', 'col2');
|
||||
$result = PMA_getAllCombinationPartialKeys($primaryKey);
|
||||
$this->assertEquals(
|
||||
array('', 'id', 'col1', 'col1,id', 'col2', 'col2,id', 'col2,col1'),
|
||||
$result
|
||||
);
|
||||
}
|
||||
}
|
||||
254
#pma/test/libraries/PMA_operations_test.php
Normal file
254
#pma/test/libraries/PMA_operations_test.php
Normal file
@@ -0,0 +1,254 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for operations
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
$GLOBALS['server'] = 1;
|
||||
require_once 'libraries/operations.lib.php';
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/relation.lib.php';
|
||||
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/mysql_charsets.inc.php';
|
||||
|
||||
/**
|
||||
* tests for operations
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Operations_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up global environment.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
$GLOBALS['table'] = 'table';
|
||||
$GLOBALS['db'] = 'db';
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$GLOBALS['cfg'] = array(
|
||||
'ServerDefault' => 1,
|
||||
'ActionLinksMode' => 'icons',
|
||||
);
|
||||
$GLOBALS['cfg']['DBG']['sql'] = false;
|
||||
$GLOBALS['server'] = 1;
|
||||
|
||||
$GLOBALS['db_priv'] = true;
|
||||
$GLOBALS['table_priv'] = true;
|
||||
$GLOBALS['col_priv'] = true;
|
||||
$GLOBALS['proc_priv'] = true;
|
||||
$GLOBALS['flush_priv'] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForDatabaseComment
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForDatabaseComment()
|
||||
{
|
||||
|
||||
$this->assertRegExp(
|
||||
'/.*db_operations.php(.|[\n])*Database comment.*name="comment"([\n]|.)*/m',
|
||||
PMA_getHtmlForDatabaseComment("pma")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForRenameDatabase
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForRenameDatabase()
|
||||
{
|
||||
|
||||
$_REQUEST['db_collation'] = 'db1';
|
||||
$html = PMA_getHtmlForRenameDatabase("pma");
|
||||
$this->assertContains('db_operations.php', $html);
|
||||
$this->assertRegExp(
|
||||
'/.*db_rename.*Rename database to.*/',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForDropDatabaseLink
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForDropDatabaseLink()
|
||||
{
|
||||
|
||||
$this->assertRegExp(
|
||||
'/.*DROP.DATABASE.*db_operations.php.*Drop the database.*/',
|
||||
PMA_getHtmlForDropDatabaseLink("pma")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForCopyDatabase
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForCopyDatabase()
|
||||
{
|
||||
$_REQUEST['db_collation'] = 'db1';
|
||||
$html = PMA_getHtmlForCopyDatabase("pma");
|
||||
$this->assertRegExp('/.*db_operations.php.*/', $html);
|
||||
$this->assertRegExp('/.*db_copy.*/', $html);
|
||||
$this->assertRegExp('/.*Copy database to.*/', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForChangeDatabaseCharset
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForChangeDatabaseCharset()
|
||||
{
|
||||
|
||||
$_REQUEST['db_collation'] = 'db1';
|
||||
$this->assertRegExp(
|
||||
'/.*db_operations.php(.|[\n])*select_db_collation([\n]|.)*Collation.*/m',
|
||||
PMA_getHtmlForChangeDatabaseCharset("pma", "bookmark")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForOrderTheTable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForOrderTheTable()
|
||||
{
|
||||
|
||||
$this->assertRegExp(
|
||||
'/.*tbl_operations.php(.|[\n])*Alter table order by([\n]|.)*order_order.*/m',
|
||||
PMA_getHtmlForOrderTheTable(
|
||||
array(array('Field' => "column1"), array('Field' => "column2"))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForTableRow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForTableRow()
|
||||
{
|
||||
|
||||
$this->assertEquals(
|
||||
'<tr><td class="vmiddle"><label for="name">lable</label></td><td><input type="checkbox" name="name" id="name" value="1"/></td></tr>',
|
||||
PMA_getHtmlForTableRow("name", "lable", "value")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getMaintainActionlink
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetMaintainActionlink()
|
||||
{
|
||||
|
||||
$this->assertRegExp(
|
||||
'/.*href="sql.php.*post.*/',
|
||||
PMA_getMaintainActionlink(
|
||||
"post",
|
||||
array("name" => 'foo', "value" => 'bar'),
|
||||
array(),
|
||||
'doclink'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForDeleteDataOrTable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForDeleteDataOrTable()
|
||||
{
|
||||
|
||||
$this->assertRegExp(
|
||||
'/.*Delete data or table.*Empty the table.*Delete the table.*/m',
|
||||
PMA_getHtmlForDeleteDataOrTable(
|
||||
array("truncate" => 'foo'), array("drop" => 'bar')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getDeleteDataOrTablelink
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetDeleteDataOrTablelink()
|
||||
{
|
||||
|
||||
$this->assertRegExp(
|
||||
'/.*TRUNCATE.TABLE.foo.*id_truncate.*Truncate table.*/m',
|
||||
PMA_getDeleteDataOrTablelink(
|
||||
array("sql" => 'TRUNCATE TABLE foo'),
|
||||
"TRUNCATE_TABLE",
|
||||
"Truncate table",
|
||||
"id_truncate"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForPartitionMaintenance
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForPartitionMaintenance()
|
||||
{
|
||||
$html = PMA_getHtmlForPartitionMaintenance(
|
||||
array("partition1", "partion2"),
|
||||
array("param1" => 'foo', "param2" => 'bar')
|
||||
);
|
||||
$this->assertRegExp('/.*action="tbl_operations.php".*/', $html);
|
||||
$this->assertRegExp('/.*ANALYZE.*/', $html);
|
||||
$this->assertRegExp('/.*REBUILD.*/', $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForReferentialIntegrityCheck
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForReferentialIntegrityCheck()
|
||||
{
|
||||
|
||||
$this->assertRegExp(
|
||||
'/.*Check referential integrity.*href="sql.php(.|[\n])*/m',
|
||||
PMA_getHtmlForReferentialIntegrityCheck(
|
||||
array(
|
||||
array(
|
||||
'foreign_db' => 'db1',
|
||||
'foreign_table' => "foreign1",
|
||||
'foreign_field' => "foreign2"
|
||||
)
|
||||
),
|
||||
array("param1" => 'a', "param2" => 'b')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
511
#pma/test/libraries/PMA_relation_cleanup_test.php
Normal file
511
#pma/test/libraries/PMA_relation_cleanup_test.php
Normal file
@@ -0,0 +1,511 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for relation_cleanup.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/relation.lib.php';
|
||||
require_once 'libraries/relation_cleanup.lib.php';
|
||||
|
||||
use PMA\libraries\DatabaseInterface;
|
||||
|
||||
/**
|
||||
* PMA_Relation_Cleanup_Test class
|
||||
*
|
||||
* this class is for testing relation_cleanup.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Relation_Cleanup_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$_SESSION['relation'] = array();
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['cfg']['Server']['user'] = "user";
|
||||
$GLOBALS['cfg']['Server']['pmadb'] = "pmadb";
|
||||
$GLOBALS['cfg']['Server']['bookmarktable'] = 'bookmark';
|
||||
$GLOBALS['cfg']['Server']['relation'] = 'relation';
|
||||
$GLOBALS['cfg']['Server']['table_info'] = 'table_info';
|
||||
$GLOBALS['cfg']['Server']['table_coords'] = 'table_coords';
|
||||
$GLOBALS['cfg']['Server']['column_info'] = 'column_info';
|
||||
$GLOBALS['cfg']['Server']['pdf_pages'] = 'pdf_pages';
|
||||
$GLOBALS['cfg']['Server']['history'] = 'history';
|
||||
$GLOBALS['cfg']['Server']['recent'] = 'recent';
|
||||
$GLOBALS['cfg']['Server']['favorite'] = 'favorite';
|
||||
$GLOBALS['cfg']['Server']['table_uiprefs'] = 'table_uiprefs';
|
||||
$GLOBALS['cfg']['Server']['tracking'] = 'tracking';
|
||||
$GLOBALS['cfg']['Server']['userconfig'] = 'userconfig';
|
||||
$GLOBALS['cfg']['Server']['users'] = 'users';
|
||||
$GLOBALS['cfg']['Server']['usergroups'] = 'usergroups';
|
||||
$GLOBALS['cfg']['Server']['navigationhiding'] = 'navigationhiding';
|
||||
$GLOBALS['cfg']['Server']['savedsearches'] = 'savedsearches';
|
||||
$GLOBALS['cfg']['Server']['central_columns'] = 'central_columns';
|
||||
$GLOBALS['cfg']['Server']['designer_settings'] = 'designer_settings';
|
||||
$GLOBALS['cfg']['Server']['export_templates'] = 'pma__export_templates';
|
||||
|
||||
$this->redefineRelation();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* functions for redefine DBI_PMA_Relation_Cleanup
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function redefineRelation()
|
||||
{
|
||||
$GLOBALS['dbi'] = new DBI_PMA_Relation_Cleanup();
|
||||
unset($_SESSION['relation'][$GLOBALS['server']]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_relationsCleanupColumn
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testPMARelationsCleanupColumn()
|
||||
{
|
||||
$db = "PMA";
|
||||
$table = "PMA_bookmark";
|
||||
$column = "name";
|
||||
$this->redefineRelation();
|
||||
|
||||
//the $cfgRelation value before cleanup column
|
||||
$cfgRelation = PMA_checkRelationsParam();
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$cfgRelation['commwork']
|
||||
);
|
||||
//validate PMA_getDbComments when commwork = true
|
||||
$db_comments = PMA_getDbComments();
|
||||
$this->assertEquals(
|
||||
array('db_name0' => 'comment0','db_name1' => 'comment1'),
|
||||
$db_comments
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$cfgRelation['displaywork']
|
||||
);
|
||||
//validate PMA_getDisplayField when displaywork = true
|
||||
$display_field = PMA_getDisplayField($db, $table);
|
||||
$this->assertEquals(
|
||||
'PMA_display_field',
|
||||
$display_field
|
||||
);
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$cfgRelation['relwork']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'column_info',
|
||||
$cfgRelation['column_info']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'table_info',
|
||||
$cfgRelation['table_info']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'relation',
|
||||
$cfgRelation['relation']
|
||||
);
|
||||
|
||||
//cleanup
|
||||
PMA_relationsCleanupColumn($db, $table, $column);
|
||||
|
||||
//the $cfgRelation value after cleanup column
|
||||
$cfgRelation = PMA_checkRelationsParam();
|
||||
|
||||
$is_defined_column_info
|
||||
= isset($cfgRelation['column_info'])? $cfgRelation['column_info'] : null;
|
||||
$is_defined_table_info
|
||||
= isset($cfgRelation['table_info'])? $cfgRelation['table_info'] : null;
|
||||
$is_defined_relation
|
||||
= isset($cfgRelation['relation'])? $cfgRelation['relation'] : null;
|
||||
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_column_info
|
||||
);
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_table_info
|
||||
);
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_relation
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_relationsCleanupTable
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMARelationsCleanupTable()
|
||||
{
|
||||
$db = "PMA";
|
||||
$table = "PMA_bookmark";
|
||||
$this->redefineRelation();
|
||||
|
||||
//the $cfgRelation value before cleanup column
|
||||
$cfgRelation = PMA_checkRelationsParam();
|
||||
$this->assertEquals(
|
||||
'column_info',
|
||||
$cfgRelation['column_info']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'table_info',
|
||||
$cfgRelation['table_info']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'table_coords',
|
||||
$cfgRelation['table_coords']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'relation',
|
||||
$cfgRelation['relation']
|
||||
);
|
||||
|
||||
//PMA_relationsCleanupTable
|
||||
PMA_relationsCleanupTable($db, $table);
|
||||
|
||||
//the $cfgRelation value after cleanup column
|
||||
$cfgRelation = PMA_checkRelationsParam();
|
||||
|
||||
$is_defined_column_info
|
||||
= isset($cfgRelation['column_info'])? $cfgRelation['column_info'] : null;
|
||||
$is_defined_table_info
|
||||
= isset($cfgRelation['table_info'])? $cfgRelation['table_info'] : null;
|
||||
$is_defined_relation
|
||||
= isset($cfgRelation['relation'])? $cfgRelation['relation'] : null;
|
||||
$is_defined_table_coords
|
||||
= isset($cfgRelation['table_coords'])
|
||||
? $cfgRelation['table_coords']
|
||||
: null;
|
||||
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_column_info
|
||||
);
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_table_info
|
||||
);
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_relation
|
||||
);
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_table_coords
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_relationsCleanupDatabase
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMARelationsCleanupDatabase()
|
||||
{
|
||||
$db = "PMA";
|
||||
$this->redefineRelation();
|
||||
|
||||
//the $cfgRelation value before cleanup column
|
||||
$cfgRelation = PMA_checkRelationsParam();
|
||||
$this->assertEquals(
|
||||
'column_info',
|
||||
$cfgRelation['column_info']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'bookmark',
|
||||
$cfgRelation['bookmark']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'table_info',
|
||||
$cfgRelation['table_info']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'pdf_pages',
|
||||
$cfgRelation['pdf_pages']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'table_coords',
|
||||
$cfgRelation['table_coords']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'relation',
|
||||
$cfgRelation['relation']
|
||||
);
|
||||
|
||||
//cleanup
|
||||
PMA_relationsCleanupDatabase($db);
|
||||
|
||||
//the value after cleanup column
|
||||
$cfgRelation = PMA_checkRelationsParam();
|
||||
|
||||
$is_defined_column_info
|
||||
= isset($cfgRelation['column_info'])? $cfgRelation['column_info'] : null;
|
||||
$is_defined_table_info
|
||||
= isset($cfgRelation['table_info'])? $cfgRelation['table_info'] : null;
|
||||
$is_defined_relation
|
||||
= isset($cfgRelation['relation'])? $cfgRelation['relation'] : null;
|
||||
$is_defined_table_coords
|
||||
= isset($cfgRelation['table_coords'])
|
||||
? $cfgRelation['table_coords']
|
||||
: null;
|
||||
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_column_info
|
||||
);
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_table_info
|
||||
);
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_relation
|
||||
);
|
||||
$this->assertEquals(
|
||||
null,
|
||||
$is_defined_table_coords
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* DBI_PMA_Relation_Cleanup for Mock DBI class
|
||||
*
|
||||
* this class is for Mock DBI
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class DBI_PMA_Relation_Cleanup extends DatabaseInterface
|
||||
{
|
||||
var $index;
|
||||
var $assocIndex;
|
||||
var $totalNum;
|
||||
var $values = array();
|
||||
var $indexs = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->index = 0;
|
||||
$this->assocIndex = 0;
|
||||
$this->totalNum = 2;
|
||||
$this->values = array(
|
||||
'bookmark',
|
||||
'relation',
|
||||
'table_info',
|
||||
'table_coords',
|
||||
'column_info',
|
||||
'pdf_pages',
|
||||
'history',
|
||||
'recent',
|
||||
'table_uiprefs',
|
||||
'tracking',
|
||||
'userconfig',
|
||||
'users',
|
||||
'usergroups',
|
||||
'navigationhiding',
|
||||
);
|
||||
$this->indexs = array(
|
||||
'bookmark' => 0,
|
||||
'relation' => 1,
|
||||
'table_info' => 2,
|
||||
'table_coords' => 3,
|
||||
'column_info' => 4,
|
||||
'pdf_pages' => 5,
|
||||
'history' => 6,
|
||||
'recent' => 7,
|
||||
'table_uiprefs' => 8,
|
||||
'tracking' => 9,
|
||||
'userconfig' => 10,
|
||||
'users' => 11,
|
||||
'usergroups' => 12,
|
||||
'navigationhiding' => 13,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* returns array of rows with numeric keys from $result
|
||||
*
|
||||
* @param object $result result set identifier
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function fetchRow($result)
|
||||
{
|
||||
$curr_table = array();
|
||||
if ($this->index < count($this->values)) {
|
||||
$curr_table[0] = $this->values[$this->index];
|
||||
$this->index++;
|
||||
return $curr_table;
|
||||
}
|
||||
|
||||
$this->index = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* runs a query
|
||||
*
|
||||
* @param string $sql SQL query to execute
|
||||
* @param mixed $link optional database link to use
|
||||
* @param int $options optional query options
|
||||
* @param bool $cache_affected_rows whether to cache affected rows
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
function query($sql, $link = null, $options = 0, $cache_affected_rows = true)
|
||||
{
|
||||
if (mb_stripos($sql, "column_info") !== false) {
|
||||
unset($this->values[$this->indexs['column_info']]);
|
||||
}
|
||||
|
||||
if (mb_stripos($sql, "table_info") !== false) {
|
||||
unset($this->values[$this->indexs['table_info']]);
|
||||
}
|
||||
|
||||
if (mb_stripos($sql, "table_coords") !== false) {
|
||||
unset($this->values[$this->indexs['table_coords']]);
|
||||
}
|
||||
|
||||
if (mb_stripos($sql, "relation") !== false) {
|
||||
unset($this->values[$this->indexs['relation']]);
|
||||
}
|
||||
|
||||
if (mb_stripos($sql, "pdf_pages") !== false) {
|
||||
unset($GLOBALS [$this->indexs['pdf_pages']]);
|
||||
}
|
||||
|
||||
if (mb_stripos($sql, "bookmark") !== false) {
|
||||
unset($GLOBALS [$this->indexs['bookmark']]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* runs a query and returns the result
|
||||
*
|
||||
* @param string $query query to run
|
||||
* @param resource $link mysql link resource
|
||||
* @param integer $options query options
|
||||
* @param bool $cache_affected_rows whether to cache affected row
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function tryQuery(
|
||||
$query, $link = null, $options = 0, $cache_affected_rows = true
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* selects given database
|
||||
*
|
||||
* @param string $dbname database name to select
|
||||
* @param object $link connection object
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function selectDb($dbname, $link = null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Frees memory associated with the result
|
||||
*
|
||||
* @param object $result database result
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function freeResult($result)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns only the first row from the result
|
||||
*
|
||||
* <code>
|
||||
* $sql = 'SELECT * FROM `user` WHERE `id` = 123';
|
||||
* $user = $GLOBALS['dbi']->fetchSingleRow($sql);
|
||||
* // produces
|
||||
* // $user = array('id' => 123, 'name' => 'John Doe')
|
||||
* </code>
|
||||
*
|
||||
* @param string|mysql_result $result query or mysql result
|
||||
* @param string $type NUM|ASSOC|BOTH
|
||||
* returned array should either numeric
|
||||
* associative or booth
|
||||
* @param resource $link mysql link
|
||||
*
|
||||
* @return array|boolean first row from result
|
||||
* or false if result is empty
|
||||
*/
|
||||
public function fetchSingleRow($result, $type = 'ASSOC', $link = null)
|
||||
{
|
||||
return array(
|
||||
'display_field' => "PMA_display_field"
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* returns array of rows with associative keys from $result
|
||||
*
|
||||
* @param object $result result set identifier
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function fetchAssoc($result)
|
||||
{
|
||||
$assocResult = array();
|
||||
if ($this->assocIndex < $this->totalNum) {
|
||||
$assocResult['db_name'] = "db_name" . $this->assocIndex;
|
||||
$assocResult['comment'] = "comment" . $this->assocIndex;
|
||||
$this->assocIndex++;
|
||||
return $assocResult;
|
||||
}
|
||||
|
||||
$this->assocIndex = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the number of rows returned by last query
|
||||
*
|
||||
* @param object $result result set identifier
|
||||
*
|
||||
* @return string|int
|
||||
*/
|
||||
public function numRows($result)
|
||||
{
|
||||
return $this->totalNum;
|
||||
}
|
||||
}
|
||||
334
#pma/test/libraries/PMA_relation_test.php
Normal file
334
#pma/test/libraries/PMA_relation_test.php
Normal file
@@ -0,0 +1,334 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for relation.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/relation.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for libraries/relation.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group medium
|
||||
*/
|
||||
class PMA_Relation_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Sets up the fixture, for example, opens a network connection.
|
||||
* This method is called before a test is executed.
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['db'] = 'db';
|
||||
$GLOBALS['cfg']['Server']['user'] = 'root';
|
||||
$GLOBALS['cfg']['Server']['pmadb'] = 'phpmyadmin';
|
||||
$GLOBALS['cfg']['ZeroConf'] = true;
|
||||
$_SESSION['relation'][$GLOBALS['server']] = "PMA_relation";
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$_SESSION['relation'] = array();
|
||||
|
||||
$GLOBALS['pmaThemePath'] = $_SESSION['PMA_Theme']->getPath();
|
||||
$GLOBALS['pmaThemeImage'] = 'theme/';
|
||||
$GLOBALS['cfg']['ServerDefault'] = 0;
|
||||
|
||||
include_once 'libraries/relation.lib.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_queryAsControlUser
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAQueryAsControlUser()
|
||||
{
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('query')
|
||||
->will($this->returnValue('executeResult1'));
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('tryQuery')
|
||||
->will($this->returnValue('executeResult2'));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$sql = "insert into PMA_bookmark A,B values(1, 2)";
|
||||
$this->assertEquals(
|
||||
'executeResult1',
|
||||
PMA_queryAsControlUser($sql)
|
||||
);
|
||||
$this->assertEquals(
|
||||
'executeResult2',
|
||||
PMA_queryAsControlUser($sql, false)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getRelationsParam & PMA_getRelationsParamDiagnostic
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetRelationsParam()
|
||||
{
|
||||
$relationsPara = PMA_getRelationsParam();
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$relationsPara['relwork']
|
||||
);
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$relationsPara['bookmarkwork']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'root',
|
||||
$relationsPara['user']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'phpmyadmin',
|
||||
$relationsPara['db']
|
||||
);
|
||||
|
||||
$retval = PMA_getRelationsParamDiagnostic($relationsPara);
|
||||
//check $cfg['Servers'][$i]['pmadb']
|
||||
$this->assertContains(
|
||||
"\$cfg['Servers'][\$i]['pmadb']",
|
||||
$retval
|
||||
);
|
||||
$this->assertContains(
|
||||
'<strong>OK</strong>',
|
||||
$retval
|
||||
);
|
||||
|
||||
//$cfg['Servers'][$i]['relation']
|
||||
$result = "\$cfg['Servers'][\$i]['pmadb'] ... </th><td class=\"right\">"
|
||||
. "<span style=\"color:green\"><strong>OK</strong></span>";
|
||||
$this->assertContains(
|
||||
$result,
|
||||
$retval
|
||||
);
|
||||
// $cfg['Servers'][$i]['relation']
|
||||
$result = "\$cfg['Servers'][\$i]['relation'] ... </th><td class=\"right\">"
|
||||
. "<span style=\"color:red\"><strong>not OK</strong></span>";
|
||||
$this->assertContains(
|
||||
$result,
|
||||
$retval
|
||||
);
|
||||
// General relation features
|
||||
$result = 'General relation features: <span style="color:red">Disabled</span>';
|
||||
$this->assertContains(
|
||||
$result,
|
||||
$retval
|
||||
);
|
||||
// $cfg['Servers'][$i]['table_info']
|
||||
$result = "\$cfg['Servers'][\$i]['table_info'] ... </th>"
|
||||
. "<td class=\"right\">"
|
||||
. "<span style=\"color:red\"><strong>not OK</strong></span>";
|
||||
$this->assertContains(
|
||||
$result,
|
||||
$retval
|
||||
);
|
||||
// Display Features:
|
||||
$result = 'Display Features: <span style="color:red">Disabled</span>';
|
||||
$this->assertContains(
|
||||
$result,
|
||||
$retval
|
||||
);
|
||||
|
||||
$relationsPara['db'] = false;
|
||||
$retval = PMA_getRelationsParamDiagnostic($relationsPara);
|
||||
|
||||
$result = __('General relation features');
|
||||
$this->assertContains(
|
||||
$result,
|
||||
$retval
|
||||
);
|
||||
$result = 'Configuration of pmadb… ';
|
||||
$this->assertContains(
|
||||
$result,
|
||||
$retval
|
||||
);
|
||||
$result = "<strong>not OK</strong>";
|
||||
$this->assertContains(
|
||||
$result,
|
||||
$retval
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getDisplayField
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetDisplayField()
|
||||
{
|
||||
$db = 'information_schema';
|
||||
$table = 'CHARACTER_SETS';
|
||||
$this->assertEquals(
|
||||
'DESCRIPTION',
|
||||
PMA_getDisplayField($db, $table)
|
||||
);
|
||||
|
||||
$db = 'information_schema';
|
||||
$table = 'TABLES';
|
||||
$this->assertEquals(
|
||||
'TABLE_COMMENT',
|
||||
PMA_getDisplayField($db, $table)
|
||||
);
|
||||
|
||||
$db = 'information_schema';
|
||||
$table = 'PMA';
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_getDisplayField($db, $table)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getComments
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetComments()
|
||||
{
|
||||
$GLOBALS['cfg']['ServerDefault'] = 0;
|
||||
$_SESSION['relation'] = array();
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$getColumnsResult = array(
|
||||
array(
|
||||
'Field' => 'field1',
|
||||
'Type' => 'int(11)',
|
||||
'Comment' => 'Comment1'
|
||||
),
|
||||
array(
|
||||
'Field' => 'field2',
|
||||
'Type' => 'text',
|
||||
'Comment' => 'Comment1'
|
||||
)
|
||||
);
|
||||
$dbi->expects($this->any())->method('getColumns')
|
||||
->will($this->returnValue($getColumnsResult));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$db = 'information_schema';
|
||||
$this->assertEquals(
|
||||
array(''),
|
||||
PMA_getComments($db)
|
||||
);
|
||||
|
||||
$db = 'information_schema';
|
||||
$table = 'TABLES';
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'field1' => 'Comment1',
|
||||
'field2' => 'Comment1'
|
||||
),
|
||||
PMA_getComments($db, $table)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_tryUpgradeTransformations
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMATryUpgradeTransformations()
|
||||
{
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbi->expects($this->any())
|
||||
->method('tryQuery')
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->any())
|
||||
->method('numRows')
|
||||
->will($this->returnValue(0));
|
||||
$dbi->expects($this->any())
|
||||
->method('getError')
|
||||
->will($this->onConsecutiveCalls(true, false));
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$GLOBALS['cfg']['Server']['pmadb'] = 'pmadb';
|
||||
$GLOBALS['cfg']['Server']['column_info'] = 'column_info';
|
||||
|
||||
// Case 1
|
||||
$actual = PMA_tryUpgradeTransformations();
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$actual
|
||||
);
|
||||
|
||||
// Case 2
|
||||
$actual = PMA_tryUpgradeTransformations();
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$actual
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_searchColumnInForeigners
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMASearchColumnInForeigners()
|
||||
{
|
||||
$foreigners = array(
|
||||
'value' => array(
|
||||
'master_field' => 'value',
|
||||
'foreign_db' => 'GSoC14',
|
||||
'foreign_table' => 'test',
|
||||
'foreign_field' => 'value'
|
||||
),
|
||||
'foreign_keys_data' => array(
|
||||
0 => array(
|
||||
'constraint' => 'ad',
|
||||
'index_list' => array('id', 'value'),
|
||||
'ref_db_name' => 'GSoC14',
|
||||
'ref_table_name' => 'table_1',
|
||||
'ref_index_list' => array('id', 'value'),
|
||||
'on_delete' => 'CASCADE',
|
||||
'on_update' => 'CASCADE'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$foreigner = PMA_searchColumnInForeigners($foreigners, 'id');
|
||||
$expected = array();
|
||||
$expected['foreign_field'] = 'id';
|
||||
$expected['foreign_db'] = 'GSoC14';
|
||||
$expected['foreign_table'] = 'table_1';
|
||||
$expected['constraint'] = 'ad';
|
||||
$expected['on_delete'] = 'CASCADE';
|
||||
$expected['on_update'] = 'CASCADE';
|
||||
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$foreigner
|
||||
);
|
||||
}
|
||||
}
|
||||
109
#pma/test/libraries/PMA_resultSetHasJustOneTable_test.php
Normal file
109
#pma/test/libraries/PMA_resultSetHasJustOneTable_test.php
Normal file
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for PMA_resultSetHasJustOneTable method
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/sql.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for PMA_resultSetHasJustOneTable method
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ResultSetHasJustOneTableTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Should return false if all columns are not from the same table
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testWithMultipleTables()
|
||||
{
|
||||
$col1 = new stdClass;
|
||||
$col1->table = 'table1';
|
||||
$col2 = new stdClass;
|
||||
$col2->table = 'table1';
|
||||
$col3 = new stdClass;
|
||||
$col3->table = 'table3';
|
||||
|
||||
$fields_meta = array($col1, $col2, $col3);
|
||||
$this->assertFalse(PMA_resultSetHasJustOneTable($fields_meta));
|
||||
|
||||
// should not matter on where the odd column occurs
|
||||
$fields_meta = array($col2, $col3, $col1);
|
||||
$this->assertFalse(PMA_resultSetHasJustOneTable($fields_meta));
|
||||
|
||||
$fields_meta = array($col3, $col1, $col2);
|
||||
$this->assertFalse(PMA_resultSetHasJustOneTable($fields_meta));
|
||||
}
|
||||
|
||||
/**
|
||||
* Should return true if all the columns are from the same table
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testWithSameTable()
|
||||
{
|
||||
$col1 = new stdClass;
|
||||
$col1->table = 'table1';
|
||||
$col2 = new stdClass;
|
||||
$col2->table = 'table1';
|
||||
$col3 = new stdClass;
|
||||
$col3->table = 'table1';
|
||||
$fields_meta = array($col1, $col2, $col3);
|
||||
|
||||
$this->assertTrue(PMA_resultSetHasJustOneTable($fields_meta));
|
||||
}
|
||||
|
||||
/**
|
||||
* Should return true even if function columns (table is '') occur when others
|
||||
* are from the same table.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testWithFunctionColumns()
|
||||
{
|
||||
$col1 = new stdClass;
|
||||
$col1->table = 'table1';
|
||||
$col2 = new stdClass;
|
||||
$col2->table = '';
|
||||
$col3 = new stdClass;
|
||||
$col3->table = 'table1';
|
||||
|
||||
$fields_meta = array($col1, $col2, $col3);
|
||||
$this->assertTrue(PMA_resultSetHasJustOneTable($fields_meta));
|
||||
|
||||
// should not matter on where the function column occurs
|
||||
$fields_meta = array($col2, $col3, $col1);
|
||||
$this->assertTrue(PMA_resultSetHasJustOneTable($fields_meta));
|
||||
|
||||
$fields_meta = array($col3, $col1, $col2);
|
||||
$this->assertTrue(PMA_resultSetHasJustOneTable($fields_meta));
|
||||
}
|
||||
|
||||
/**
|
||||
* We can not say all the columns are from the same table if all the columns
|
||||
* are funtion columns (table is '')
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testWithOnlyFunctionColumns()
|
||||
{
|
||||
$col1 = new stdClass;
|
||||
$col1->table = '';
|
||||
$col2 = new stdClass;
|
||||
$col2->table = '';
|
||||
$col3 = new stdClass;
|
||||
$col3->table = '';
|
||||
$fields_meta = array($col1, $col2, $col3);
|
||||
|
||||
$this->assertFalse(PMA_resultSetHasJustOneTable($fields_meta));
|
||||
}
|
||||
}
|
||||
181
#pma/test/libraries/PMA_sanitize_test.php
Normal file
181
#pma/test/libraries/PMA_sanitize_test.php
Normal file
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for PMA_sanitize()
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test
|
||||
*/
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
|
||||
/**
|
||||
* tests for PMA_sanitize()
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Sanitize_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Setup various pre conditions
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setUp()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for proper escaping of XSS.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testXssInHref()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'[a@javascript:alert(\'XSS\');@target]link</a>',
|
||||
PMA_sanitize('[a@javascript:alert(\'XSS\');@target]link[/a]')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests correct generating of link redirector.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testLink()
|
||||
{
|
||||
unset($GLOBALS['server']);
|
||||
unset($GLOBALS['lang']);
|
||||
unset($GLOBALS['collation_connection']);
|
||||
$this->assertEquals(
|
||||
'<a href="./url.php?url=https%3A%2F%2Fwww.phpmyadmin.net%2F" target="target">link</a>',
|
||||
PMA_sanitize('[a@https://www.phpmyadmin.net/@target]link[/a]')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests links to documentation.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider docLinks
|
||||
*/
|
||||
public function testDoc($link, $expected)
|
||||
{
|
||||
$this->assertEquals(
|
||||
'<a href="./url.php?url=https%3A%2F%2Fdocs.phpmyadmin.net%2Fen%2Flatest%2F' . $expected . '" target="documentation">doclink</a>',
|
||||
PMA_sanitize('[doc@' . $link . ']doclink[/doc]')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for sanitize [doc@foo] markup
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function docLinks()
|
||||
{
|
||||
return array(
|
||||
array('foo', 'setup.html%23foo'),
|
||||
array('cfg_TitleTable', 'config.html%23cfg_TitleTable'),
|
||||
array('faq3-11', 'faq.html%23faq3-11'),
|
||||
array('bookmarks@', 'bookmarks.html'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests link target validation.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testInvalidTarget()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'[a@./Documentation.html@INVALID9]doc</a>',
|
||||
PMA_sanitize('[a@./Documentation.html@INVALID9]doc[/a]')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests XSS escaping after valid link.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testLinkDocXss()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'[a@./Documentation.html" onmouseover="alert(foo)"]doc</a>',
|
||||
PMA_sanitize('[a@./Documentation.html" onmouseover="alert(foo)"]doc[/a]')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests proper handling of multi link code.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testLinkAndXssInHref()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'<a href="./url.php?url=https%3A%2F%2Fdocs.phpmyadmin.net%2F">doc</a>[a@javascript:alert(\'XSS\');@target]link</a>',
|
||||
PMA_sanitize('[a@https://docs.phpmyadmin.net/]doc[/a][a@javascript:alert(\'XSS\');@target]link[/a]')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test escaping of HTML tags
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testHtmlTags()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'<div onclick="">',
|
||||
PMA_sanitize('<div onclick="">')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests basic BB code.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testBBCode()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'<strong>strong</strong>',
|
||||
PMA_sanitize('[strong]strong[/strong]')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests output escaping.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testEscape()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'<strong>strong</strong>',
|
||||
PMA_sanitize('[strong]strong[/strong]', true)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_sanitizeFilename
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testSanitizeFilename()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'File_name_123',
|
||||
PMA_sanitizeFilename('File_name 123')
|
||||
);
|
||||
}
|
||||
}
|
||||
157
#pma/test/libraries/PMA_select_server_test.php
Normal file
157
#pma/test/libraries/PMA_select_server_test.php
Normal file
@@ -0,0 +1,157 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for select_server.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/select_server.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* PMA_SelectServer_Test class
|
||||
*
|
||||
* this class is for testing select_server.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_SelectServer_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$_REQUEST
|
||||
$_REQUEST['log'] = "index1";
|
||||
$_REQUEST['pos'] = 3;
|
||||
|
||||
//$GLOBALS
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$GLOBALS['server'] = 1;
|
||||
$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['table'] = "table";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_selectServer
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMASelectServer()
|
||||
{
|
||||
$not_only_options = false;
|
||||
$omit_fieldset = false;
|
||||
|
||||
$GLOBALS['cfg']['DefaultTabServer'] = "welcome";
|
||||
|
||||
$GLOBALS['cfg']['Servers'] = array(
|
||||
'0' => array(
|
||||
'host'=>'host0',
|
||||
'port'=>'port0',
|
||||
'only_db'=>'only_db0',
|
||||
'user'=>'user0',
|
||||
'auth_type'=>'config',
|
||||
),
|
||||
'1' => array(
|
||||
'host'=>'host1',
|
||||
'port'=>'port1',
|
||||
'only_db'=>'only_db1',
|
||||
'user'=>'user1',
|
||||
'auth_type'=>'config',
|
||||
),
|
||||
);
|
||||
|
||||
//$not_only_options=false & $omit_fieldset=false
|
||||
$html = PMA_selectServer($not_only_options, $omit_fieldset);
|
||||
$server = $GLOBALS['cfg']['Servers']['0'];
|
||||
|
||||
//server items
|
||||
$this->assertContains(
|
||||
$server['host'],
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
$server['port'],
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
$server['only_db'],
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
$server['user'],
|
||||
$html
|
||||
);
|
||||
|
||||
$not_only_options = true;
|
||||
$omit_fieldset = true;
|
||||
$GLOBALS['cfg']['DisplayServersList'] = null;
|
||||
|
||||
//$not_only_options=true & $omit_fieldset=true
|
||||
$html = PMA_selectServer($not_only_options, $omit_fieldset);
|
||||
|
||||
//$GLOBALS['cfg']['DefaultTabServer']
|
||||
$this->assertContains(
|
||||
PMA\libraries\Util::getScriptNameForOption(
|
||||
$GLOBALS['cfg']['DefaultTabServer'], 'server'
|
||||
),
|
||||
$html
|
||||
);
|
||||
|
||||
//labels
|
||||
$this->assertContains(
|
||||
__('Current server:'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'(' . __('Servers') . ')',
|
||||
$html
|
||||
);
|
||||
|
||||
//server items
|
||||
$server = $GLOBALS['cfg']['Servers']['0'];
|
||||
$this->assertContains(
|
||||
$server['host'],
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
$server['port'],
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
$server['only_db'],
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
$server['user'],
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
81
#pma/test/libraries/PMA_server_common_test.php
Normal file
81
#pma/test/libraries/PMA_server_common_test.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for server_common.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/server_common.lib.php';
|
||||
|
||||
|
||||
/**
|
||||
* PMA_ServerCommon_Test class
|
||||
*
|
||||
* this class is for testing server_common.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerCommon_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForSubPageHeader
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetSubPageHeader()
|
||||
{
|
||||
//server_engines
|
||||
$html = PMA_getHtmlForSubPageHeader("engines");
|
||||
$this->assertContains(
|
||||
'<img src="themes/dot.gif" title="" alt="" class="icon ic_b_engine" />',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Storage Engines',
|
||||
$html
|
||||
);
|
||||
|
||||
//server_databases
|
||||
$html = PMA_getHtmlForSubPageHeader("databases");
|
||||
$this->assertContains(
|
||||
'<img src="themes/dot.gif" title="" alt="" class="icon ic_s_db" />',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Databases',
|
||||
$html
|
||||
);
|
||||
|
||||
//server_replication
|
||||
$html = PMA_getHtmlForSubPageHeader("replication");
|
||||
$replication_img = '<img src="themes/dot.gif" title="" '
|
||||
. 'alt="" class="icon ic_s_replication" />';
|
||||
$this->assertContains(
|
||||
$replication_img,
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Replication',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
2365
#pma/test/libraries/PMA_server_privileges_test.php
Normal file
2365
#pma/test/libraries/PMA_server_privileges_test.php
Normal file
File diff suppressed because it is too large
Load Diff
308
#pma/test/libraries/PMA_server_replication_test.php
Normal file
308
#pma/test/libraries/PMA_server_replication_test.php
Normal file
@@ -0,0 +1,308 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for replication_gui.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/replication.inc.php';
|
||||
require_once 'libraries/replication_gui.lib.php';
|
||||
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* PMA_Serverreplication_Test class
|
||||
*
|
||||
* this class is for testing replication_gui.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerReplication_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$_REQUEST
|
||||
$_REQUEST['log'] = "index1";
|
||||
$_REQUEST['pos'] = 3;
|
||||
$_REQUEST['mr_adduser'] = "mr_adduser";
|
||||
|
||||
//$GLOBALS
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$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']['ShowHint'] = true;
|
||||
|
||||
$GLOBALS['table'] = "table";
|
||||
$GLOBALS['url_params'] = array();
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
|
||||
$slave_host = array(
|
||||
array('Server_id'=>'Server_id1', 'Host'=>'Host1'),
|
||||
array('Server_id'=>'Server_id2', 'Host'=>'Host2'),
|
||||
);
|
||||
|
||||
$fetchResult = array(
|
||||
array(
|
||||
"SHOW SLAVE HOSTS",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
0,
|
||||
$slave_host
|
||||
),
|
||||
);
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->any())->method('fetchResult')
|
||||
->will($this->returnValueMap($fetchResult));
|
||||
|
||||
$fields_info = array(
|
||||
"Host" => array(
|
||||
"Field" => "host",
|
||||
"Type" => "char(60)",
|
||||
"Null" => "NO",
|
||||
)
|
||||
);
|
||||
$dbi->expects($this->any())->method('getColumns')
|
||||
->will($this->returnValue($fields_info));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForMasterReplication
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testPMAGetHtmlForMasterReplication()
|
||||
{
|
||||
global $master_variables_alerts;
|
||||
global $master_variables_oks;
|
||||
global $strReplicationStatus_master;
|
||||
|
||||
$master_variables_alerts = null;
|
||||
$master_variables_oks = null;
|
||||
$strReplicationStatus_master = null;
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForMasterReplication();
|
||||
|
||||
//validate 1: Master replication
|
||||
$this->assertContains(
|
||||
'<legend>Master replication</legend>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'This server is configured as master in a replication process.',
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 2: PMA_getHtmlForReplicationStatusTable
|
||||
$this->assertContains(
|
||||
'<div id="replication_master_section"',
|
||||
$html
|
||||
);
|
||||
//$master_variables
|
||||
$this->assertContains(
|
||||
"Binlog_Do_DB",
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
"Binlog_Ignore_DB",
|
||||
$html
|
||||
);
|
||||
//$server_master_replication
|
||||
$this->assertContains(
|
||||
"master-bin.000030",
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 3: PMA_getHtmlForReplicationSlavesTable
|
||||
$this->assertContains(
|
||||
'replication_slaves_section',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th>Server ID</th>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th>Host</th>',
|
||||
$html
|
||||
);
|
||||
//slave host
|
||||
$this->assertContains(
|
||||
'<td class="value">Server_id1</td>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<td class="value">Server_id2</td>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<td class="value">Host1</td>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<td class="value">Host2</td>',
|
||||
$html
|
||||
);
|
||||
//Notice
|
||||
$this->assertContains(
|
||||
'Only slaves started with the',
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 4: navigation URL
|
||||
$this->assertContains(
|
||||
'<a href="server_replication.php',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Add slave replication user',
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 5: 'Add replication slave user' form
|
||||
$this->assertContains(
|
||||
'<div id="master_addslaveuser_gui">',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForNotServerReplication
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForNotServerReplication()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForNotServerReplication();
|
||||
|
||||
$this->assertContains(
|
||||
'<legend>Master replication</legend>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'This server is not configured as master in a replication process.',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForSlaveConfiguration
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForSlaveConfiguration()
|
||||
{
|
||||
global $server_slave_replication;
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForSlaveConfiguration(
|
||||
true,
|
||||
$server_slave_replication
|
||||
);
|
||||
|
||||
//legend
|
||||
$this->assertContains(
|
||||
'<legend>Slave replication</legend>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<div id="slave_configuration_gui">',
|
||||
$html
|
||||
);
|
||||
//notice
|
||||
$this->assertContains(
|
||||
'Server is configured as slave in a replication process.',
|
||||
$html
|
||||
);
|
||||
//slave session
|
||||
$this->assertContains(
|
||||
'<div id="replication_slave_section"',
|
||||
$html
|
||||
);
|
||||
//variable
|
||||
$this->assertContains(
|
||||
'Master_SSL_CA_Path',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Master_SSL_Cert',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Master_SSL_Cipher',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Seconds_Behind_Master',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForReplicationChangeMaster
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForReplicationChangeMaster()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForReplicationChangeMaster("slave_changemaster");
|
||||
|
||||
$this->assertContains(
|
||||
'<form method="post" action="server_replication.php">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Slave configuration',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Change or reconfigure master server',
|
||||
$html
|
||||
);
|
||||
$notice = 'Make sure, you have unique server-id '
|
||||
. 'in your configuration file (my.cnf)';
|
||||
$this->assertContains(
|
||||
$notice,
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
186
#pma/test/libraries/PMA_server_status_advisor_test.php
Normal file
186
#pma/test/libraries/PMA_server_status_advisor_test.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for server_status_advisor.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\ServerStatusData;
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
require_once 'libraries/server_status_advisor.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* class PMA_ServerStatusAdvisor_Test
|
||||
*
|
||||
* this class is for testing server_status_advisor.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerStatusAdvisor_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public $ServerStatusData;
|
||||
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$_REQUEST
|
||||
$_REQUEST['log'] = "index1";
|
||||
$_REQUEST['pos'] = 3;
|
||||
|
||||
//$GLOBALS
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$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']['Server']['host'] = "localhost";
|
||||
$GLOBALS['cfg']['ShowHint'] = true;
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['replication_info']['master']['status'] = false;
|
||||
$GLOBALS['replication_info']['slave']['status'] = false;
|
||||
|
||||
$GLOBALS['table'] = "table";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
//this data is needed when ServerStatusData constructs
|
||||
$server_status = array(
|
||||
"Aborted_clients" => "0",
|
||||
"Aborted_connects" => "0",
|
||||
"Com_delete_multi" => "0",
|
||||
"Com_create_function" => "0",
|
||||
"Com_empty_query" => "0",
|
||||
);
|
||||
|
||||
$server_variables= array(
|
||||
"auto_increment_increment" => "1",
|
||||
"auto_increment_offset" => "1",
|
||||
"automatic_sp_privileges" => "ON",
|
||||
"back_log" => "50",
|
||||
"big_tables" => "OFF",
|
||||
);
|
||||
|
||||
$fetchResult = array(
|
||||
array(
|
||||
"SHOW GLOBAL STATUS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
array(
|
||||
"SHOW GLOBAL VARIABLES",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_variables
|
||||
),
|
||||
array(
|
||||
"SELECT concat('Com_', variable_name), variable_value "
|
||||
. "FROM data_dictionary.GLOBAL_STATEMENTS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
);
|
||||
|
||||
$dbi->expects($this->any())->method('fetchResult')
|
||||
->will($this->returnValueMap($fetchResult));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$this->ServerStatusData = new ServerStatusData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHTMLForAdvisor
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testPMAGetHTMLForAdvisor()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHTMLForAdvisor();
|
||||
|
||||
//validate 1: Advisor Instructions
|
||||
$this->assertContains(
|
||||
'<a href="#openAdvisorInstructions">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<div id="advisorInstructionsDialog"',
|
||||
$html
|
||||
);
|
||||
//notice
|
||||
$this->assertContains(
|
||||
'The Advisor system can provide recommendations',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Do note however that this system provides recommendations',
|
||||
$html
|
||||
);
|
||||
|
||||
//Advisor datas, we just validate that the Advisor Array is right
|
||||
//Advisor logic related with OS should be validate on class Advisor
|
||||
$this->assertContains(
|
||||
'<div id="advisorData" style="display:none;">',
|
||||
$html
|
||||
);
|
||||
|
||||
//Advisor data Json encode Items
|
||||
$this->assertContains(
|
||||
htmlspecialchars(json_encode("parse")),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars(json_encode("errors")),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars(json_encode("run")),
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
432
#pma/test/libraries/PMA_server_status_monitor_test.php
Normal file
432
#pma/test/libraries/PMA_server_status_monitor_test.php
Normal file
@@ -0,0 +1,432 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for PMA_server_status_monitor.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\ServerStatusData;
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
require_once 'libraries/server_status_monitor.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* class PMA_ServerStatusMonitor_Test
|
||||
*
|
||||
* this class is for testing PMA_server_status_monitor.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerStatusMonitor_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public $ServerStatusData;
|
||||
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$_REQUEST
|
||||
$_REQUEST['log'] = "index1";
|
||||
$_REQUEST['pos'] = 3;
|
||||
|
||||
//$GLOBALS
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$GLOBALS['cfg']['ServerDefault'] = "server";
|
||||
$GLOBALS['cfg']['RememberSorting'] = true;
|
||||
$GLOBALS['cfg']['SQP'] = array();
|
||||
$GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 1000;
|
||||
$GLOBALS['cfg']['ShowSQL'] = true;
|
||||
$GLOBALS['cfg']['Server']['host'] = "localhost";
|
||||
$GLOBALS['cfg']['ShowHint'] = true;
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['replication_info']['master']['status'] = false;
|
||||
$GLOBALS['replication_info']['slave']['status'] = false;
|
||||
|
||||
$GLOBALS['table'] = "table";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
//this data is needed when ServerStatusData constructs
|
||||
$server_status = array(
|
||||
"Aborted_clients" => "0",
|
||||
"Aborted_connects" => "0",
|
||||
"Com_delete_multi" => "0",
|
||||
"Com_create_function" => "0",
|
||||
"Com_empty_query" => "0",
|
||||
);
|
||||
|
||||
$server_variables= array(
|
||||
"auto_increment_increment" => "1",
|
||||
"auto_increment_offset" => "1",
|
||||
"automatic_sp_privileges" => "ON",
|
||||
"back_log" => "50",
|
||||
"big_tables" => "OFF",
|
||||
);
|
||||
|
||||
$fetchResult = array(
|
||||
array(
|
||||
"SHOW GLOBAL STATUS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
array(
|
||||
"SHOW GLOBAL VARIABLES",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_variables
|
||||
),
|
||||
array(
|
||||
"SELECT concat('Com_', variable_name), variable_value "
|
||||
. "FROM data_dictionary.GLOBAL_STATEMENTS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
);
|
||||
|
||||
$dbi->expects($this->any())->method('fetchResult')
|
||||
->will($this->returnValueMap($fetchResult));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$this->ServerStatusData = new ServerStatusData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForMonitor
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testPMAGetHtmlForMonitor()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForMonitor($this->ServerStatusData);
|
||||
|
||||
//validate 1: PMA_getHtmlForTabLinks
|
||||
$this->assertContains(
|
||||
'<div class="tabLinks">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Start Monitor'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Settings'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Done dragging (rearranging) charts'),
|
||||
$html
|
||||
);
|
||||
//validate 2: PMA_getHtmlForSettingsDialog
|
||||
$this->assertContains(
|
||||
'<div class="popupContent settingsPopup">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<a href="#settingsPopup" class="popupLink">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Enable charts dragging'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<option>3</option>',
|
||||
$html
|
||||
);
|
||||
//validate 3: PMA_getHtmlForInstructionsDialog
|
||||
$this->assertContains(
|
||||
__('Monitor Instructions'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'monitorInstructionsDialog',
|
||||
$html
|
||||
);
|
||||
//validate 4: PMA_getHtmlForAddChartDialog
|
||||
$this->assertContains(
|
||||
'<div id="addChartDialog"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<div id="chartVariableSettings">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<option>Processes</option>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<option>Connections</option>',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForClientSideDataAndLinks
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForClientSideDataAndLinks()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForClientSideDataAndLinks($this->ServerStatusData);
|
||||
|
||||
//validate 1: PMA_getHtmlForClientSideDataAndLinks
|
||||
$from = '<form id="js_data" class="hide">'
|
||||
. '<input type="hidden" name="server_time"';
|
||||
$this->assertContains(
|
||||
$from,
|
||||
$html
|
||||
);
|
||||
//validate 2: inputs
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="is_superuser"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="server_db_isLocal"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<div id="explain_docu" class="hide">',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getJsonForLogDataTypeSlow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetJsonForLogDataTypeSlow()
|
||||
{
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$value = array(
|
||||
'sql_text' => 'insert sql_text',
|
||||
'#' => 'types',
|
||||
);
|
||||
|
||||
$value2 = array(
|
||||
'sql_text' => 'update sql_text',
|
||||
'#' => 'types2',
|
||||
);
|
||||
|
||||
$dbi->expects($this->at(1))->method('fetchAssoc')
|
||||
->will($this->returnValue($value));
|
||||
$dbi->expects($this->at(2))->method('fetchAssoc')
|
||||
->will($this->returnValue($value2));
|
||||
$dbi->expects($this->at(3))->method('fetchAssoc')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
//Call the test function
|
||||
$start = 0;
|
||||
$end = 10;
|
||||
$ret = PMA_getJsonForLogDataTypeSlow($start, $end);
|
||||
|
||||
$result_rows = array(
|
||||
array('sql_text' => 'insert sql_text', '#' => 'types'),
|
||||
array('sql_text' => 'update sql_text', '#' => 'types2')
|
||||
);
|
||||
$result_sum = array('insert' =>0, 'TOTAL' =>0, 'update' => 0);
|
||||
$this->assertEquals(
|
||||
2,
|
||||
$ret['numRows']
|
||||
);
|
||||
$this->assertEquals(
|
||||
$result_rows,
|
||||
$ret['rows']
|
||||
);
|
||||
$this->assertEquals(
|
||||
$result_sum,
|
||||
$ret['sum']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getJsonForLogDataTypeGeneral
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetJsonForLogDataTypeGeneral()
|
||||
{
|
||||
$_REQUEST['limitTypes'] = true;
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$value = array(
|
||||
'sql_text' => 'insert sql_text',
|
||||
'#' => 'types',
|
||||
'argument' => 'argument argument2',
|
||||
);
|
||||
|
||||
$value2 = array(
|
||||
'sql_text' => 'update sql_text',
|
||||
'#' => 'types2',
|
||||
'argument' => 'argument3 argument4',
|
||||
);
|
||||
|
||||
$dbi->expects($this->at(1))->method('fetchAssoc')
|
||||
->will($this->returnValue($value));
|
||||
$dbi->expects($this->at(2))->method('fetchAssoc')
|
||||
->will($this->returnValue($value2));
|
||||
$dbi->expects($this->at(3))->method('fetchAssoc')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
//Call the test function
|
||||
$start = 0;
|
||||
$end = 10;
|
||||
$ret = PMA_getJsonForLogDataTypeGeneral($start, $end);
|
||||
|
||||
$result_rows = array(
|
||||
$value,
|
||||
$value2,
|
||||
);
|
||||
$result_sum = array('argument' =>0, 'TOTAL' =>0, 'argument3' => 0);
|
||||
|
||||
$this->assertEquals(
|
||||
2,
|
||||
$ret['numRows']
|
||||
);
|
||||
$this->assertEquals(
|
||||
$result_rows,
|
||||
$ret['rows']
|
||||
);
|
||||
$this->assertEquals(
|
||||
$result_sum,
|
||||
$ret['sum']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getJsonForLoggingVars
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetJsonForLoggingVars()
|
||||
{
|
||||
$_REQUEST['varName'] = "varName";
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$value = array(
|
||||
'sql_text' => 'insert sql_text',
|
||||
'#' => 'types',
|
||||
'argument' => 'argument argument2',
|
||||
);
|
||||
|
||||
$dbi->expects($this->any())->method('fetchResult')
|
||||
->will($this->returnValue($value));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
//Call the test function
|
||||
$ret = PMA_getJsonForLoggingVars();
|
||||
|
||||
//validate that, the result is the same as fetchResult
|
||||
$this->assertEquals(
|
||||
$value,
|
||||
$ret
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getJsonForQueryAnalyzer
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetJsonForQueryAnalyzer()
|
||||
{
|
||||
$_REQUEST['database'] = "database";
|
||||
$_REQUEST['query'] = 'query';
|
||||
$GLOBALS['server'] = 'server';
|
||||
$GLOBALS['cached_affected_rows'] = 'cached_affected_rows';
|
||||
$_SESSION['cache']['server_server']['profiling_supported'] = true;
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$value = array(
|
||||
'sql_text' => 'insert sql_text',
|
||||
'#' => 'types',
|
||||
'argument' => 'argument argument2',
|
||||
);
|
||||
|
||||
$dbi->expects($this->at(4))->method('fetchAssoc')
|
||||
->will($this->returnValue($value));
|
||||
$dbi->expects($this->at(5))->method('fetchAssoc')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
//Call the test function
|
||||
$ret = PMA_getJsonForQueryAnalyzer();
|
||||
|
||||
$this->assertEquals(
|
||||
'cached_affected_rows',
|
||||
$ret['affectedRows']
|
||||
);
|
||||
$this->assertEquals(
|
||||
array(),
|
||||
$ret['profiling']
|
||||
);
|
||||
$this->assertEquals(
|
||||
array($value),
|
||||
$ret['explain']
|
||||
);
|
||||
}
|
||||
}
|
||||
277
#pma/test/libraries/PMA_server_status_processes_test.php
Normal file
277
#pma/test/libraries/PMA_server_status_processes_test.php
Normal file
@@ -0,0 +1,277 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for server_status_processes.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/server_status_processes.lib.php';
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
|
||||
/**
|
||||
* class PMA_ServerStatusProcesses_Test
|
||||
*
|
||||
* this class is for testing server_status_processes.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerStatusProcesses_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['cfg']['Server']['host'] = "localhost";
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['replication_info']['master']['status'] = true;
|
||||
$GLOBALS['replication_info']['slave']['status'] = false;
|
||||
$GLOBALS['replication_types'] = array();
|
||||
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForProcessListAutoRefresh
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testPMAGetHtmlForProcessListAutoRefresh()
|
||||
{
|
||||
$html = PMA_getHtmlForProcessListAutoRefresh();
|
||||
|
||||
// Test Notice
|
||||
$this->assertContains(
|
||||
'Note: Enabling the auto refresh here might cause '
|
||||
. 'heavy traffic between the web server and the MySQL server.',
|
||||
$html
|
||||
);
|
||||
// Test tab links
|
||||
$this->assertContains(
|
||||
'<div class="tabLinks">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<a id="toggleRefresh" href="#">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'play',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Start auto refresh</a>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<label>Refresh rate: <select',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<option value="5" selected="selected">5 seconds</option>',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForServerProcesslist
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testPMAGetHtmlForServerProcessList()
|
||||
{
|
||||
$process = array(
|
||||
"User" => "User1",
|
||||
"Host" => "Host1",
|
||||
"Id" => "Id1",
|
||||
"db" => "db1",
|
||||
"Command" => "Command1",
|
||||
"Info" => "Info1",
|
||||
"State" => "State1",
|
||||
"Time" => "Time1"
|
||||
);
|
||||
$GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 12;
|
||||
$GLOBALS['dbi']->expects($this->any())->method('fetchAssoc')
|
||||
->will($this->onConsecutiveCalls($process));
|
||||
|
||||
$html = PMA_getHtmlForServerProcesslist();
|
||||
|
||||
// Test process table
|
||||
$this->assertContains(
|
||||
'<table id="tableprocesslist" '
|
||||
. 'class="data clearfloat noclick sortable">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th>Processes</th>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Show Full Queries',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'server_status_processes.php',
|
||||
$html
|
||||
);
|
||||
|
||||
$_REQUEST['full'] = true;
|
||||
$_REQUEST['sort_order'] = 'ASC';
|
||||
$_REQUEST['order_by_field'] = 'db';
|
||||
$_REQUEST['column_name'] = 'Database';
|
||||
$html = PMA_getHtmlForServerProcesslist();
|
||||
|
||||
$this->assertContains(
|
||||
'Truncate Shown Queries',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Database',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'DESC',
|
||||
$html
|
||||
);
|
||||
|
||||
$_REQUEST['sort_order'] = 'DESC';
|
||||
$_REQUEST['order_by_field'] = 'Host';
|
||||
$_REQUEST['column_name'] = 'Host';
|
||||
$html = PMA_getHtmlForServerProcesslist();
|
||||
|
||||
$this->assertContains(
|
||||
'Host',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'ASC',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForServerProcessItem
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForServerProcessItem()
|
||||
{
|
||||
//parameters
|
||||
$process = array(
|
||||
"user" => "User1",
|
||||
"host" => "Host1",
|
||||
"id" => "Id1",
|
||||
"db" => "db1",
|
||||
"command" => "Command1",
|
||||
"info" => "Info1",
|
||||
"state" => "State1",
|
||||
"time" => "Time1",
|
||||
);
|
||||
$odd_row = true;
|
||||
$show_full_sql = true;
|
||||
|
||||
$_REQUEST['sort_order'] = "desc";
|
||||
$_REQUEST['order_by_field'] = "process";
|
||||
$GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 12;
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForServerProcessItem($process, $odd_row, $show_full_sql);
|
||||
|
||||
//validate 1: $kill_process
|
||||
$url_params = array(
|
||||
'kill' => $process['id'],
|
||||
'ajax_request' => true
|
||||
);
|
||||
$kill_process = 'server_status_processes.php'
|
||||
. PMA_URL_getCommon($url_params);
|
||||
$this->assertContains(
|
||||
$kill_process,
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'ajax kill_process',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Kill'),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 2: $process['User']
|
||||
$this->assertContains(
|
||||
htmlspecialchars($process['user']),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 3: $process['Host']
|
||||
$this->assertContains(
|
||||
htmlspecialchars($process['host']),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 4: $process['db']
|
||||
$this->assertContains(
|
||||
__('None'),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 5: $process['Command']
|
||||
$this->assertContains(
|
||||
htmlspecialchars($process['command']),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 6: $process['Time']
|
||||
$this->assertContains(
|
||||
$process['time'],
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 7: $process['state']
|
||||
$this->assertContains(
|
||||
$process['state'],
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 8: $process['info']
|
||||
$this->assertContains(
|
||||
$process['info'],
|
||||
$html
|
||||
);
|
||||
|
||||
unset($process['info']);
|
||||
$html = PMA_getHtmlForServerProcessItem($process, $odd_row, $show_full_sql);
|
||||
|
||||
$this->assertContains(
|
||||
'---',
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
239
#pma/test/libraries/PMA_server_status_queries_test.php
Normal file
239
#pma/test/libraries/PMA_server_status_queries_test.php
Normal file
@@ -0,0 +1,239 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for server_status_queries.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
use PMA\libraries\ServerStatusData;
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
require_once 'libraries/server_status_queries.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* class PMA_ServerStatusVariables_Test
|
||||
*
|
||||
* this class is for testing server_status_queries.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerStatusQueries_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public $ServerStatusData;
|
||||
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$GLOBALS
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$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']['Server']['host'] = "localhost";
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['replication_info']['master']['status'] = false;
|
||||
$GLOBALS['replication_info']['slave']['status'] = false;
|
||||
|
||||
$GLOBALS['table'] = "table";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
//this data is needed when ServerStatusData constructs
|
||||
$server_status = array(
|
||||
"Aborted_clients" => "0",
|
||||
"Aborted_connects" => "0",
|
||||
"Com_delete_multi" => "0",
|
||||
"Com_create_function" => "0",
|
||||
"Com_empty_query" => "0",
|
||||
);
|
||||
|
||||
$server_variables= array(
|
||||
"auto_increment_increment" => "1",
|
||||
"auto_increment_offset" => "1",
|
||||
"automatic_sp_privileges" => "ON",
|
||||
"back_log" => "50",
|
||||
"big_tables" => "OFF",
|
||||
);
|
||||
|
||||
$fetchResult = array(
|
||||
array(
|
||||
"SHOW GLOBAL STATUS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
array(
|
||||
"SHOW GLOBAL VARIABLES",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_variables
|
||||
)
|
||||
);
|
||||
|
||||
$dbi->expects($this->any())->method('fetchResult')
|
||||
->will($this->returnValueMap($fetchResult));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
$this->ServerStatusData = new ServerStatusData();
|
||||
$upTime = "10h";
|
||||
$this->ServerStatusData->status['Uptime'] = $upTime;
|
||||
$this->ServerStatusData->used_queries = array(
|
||||
"Com_change_db" => "15",
|
||||
"Com_select" => "12",
|
||||
"Com_set_option" => "54",
|
||||
"Com_show_databases" => "16",
|
||||
"Com_show_status" => "14",
|
||||
"Com_show_tables" => "13",
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForQueryStatistics
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForQueryStatistics()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForQueryStatistics($this->ServerStatusData);
|
||||
|
||||
$hour_factor = 3600 / $this->ServerStatusData->status['Uptime'];
|
||||
$used_queries = $this->ServerStatusData->used_queries;
|
||||
$total_queries = array_sum($used_queries);
|
||||
|
||||
$questions_from_start = sprintf(
|
||||
__('Questions since startup: %s'),
|
||||
PMA\libraries\Util::formatNumber($total_queries, 0)
|
||||
);
|
||||
|
||||
//validate 1: PMA_getHtmlForQueryStatistics
|
||||
$this->assertContains(
|
||||
'<h3 id="serverstatusqueries">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
$questions_from_start,
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 2: per hour
|
||||
$this->assertContains(
|
||||
__('per hour:'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
PMA\libraries\Util::formatNumber($total_queries * $hour_factor, 0),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 3:per minute
|
||||
$value_per_minute = PMA\libraries\Util::formatNumber(
|
||||
$total_queries * 60 / $this->ServerStatusData->status['Uptime'],
|
||||
0
|
||||
);
|
||||
$this->assertContains(
|
||||
__('per minute:'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
$value_per_minute,
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForServerStatusQueriesDetails
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForServerStatusQueriesDetails()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForServerStatusQueriesDetails($this->ServerStatusData);
|
||||
|
||||
//validate 1: PMA_getHtmlForServerStatusQueriesDetails
|
||||
$this->assertContains(
|
||||
__('Statements'),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 2: used queries
|
||||
$this->assertContains(
|
||||
htmlspecialchars("change db"),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'54',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars("select"),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars("set option"),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars("show databases"),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars("show status"),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars("show tables"),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 3:serverstatusquerieschart
|
||||
$this->assertContains(
|
||||
'<div id="serverstatusquerieschart"></div>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<div id="serverstatusquerieschart_data"',
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
271
#pma/test/libraries/PMA_server_status_test.php
Normal file
271
#pma/test/libraries/PMA_server_status_test.php
Normal file
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for server_status.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\ServerStatusData;
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
require_once 'libraries/server_status.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
/**
|
||||
* class PMA_ServerStatus_Test
|
||||
*
|
||||
* this class is for testing server_status.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerStatus_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public $ServerStatusData;
|
||||
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['cfg']['Server']['host'] = "localhost";
|
||||
$GLOBALS['cfg']['ShowHint'] = true;
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['replication_info']['master']['status'] = true;
|
||||
$GLOBALS['replication_info']['slave']['status'] = false;
|
||||
$GLOBALS['replication_types'] = array();
|
||||
|
||||
$GLOBALS['table'] = "table";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
//this data is needed when ServerStatusData constructs
|
||||
$server_status = array(
|
||||
"Aborted_clients" => "0",
|
||||
"Aborted_connects" => "0",
|
||||
"Com_delete_multi" => "0",
|
||||
"Com_create_function" => "0",
|
||||
"Com_empty_query" => "0",
|
||||
"Com_execute_sql" => 2,
|
||||
"Com_stmt_execute" => 2,
|
||||
);
|
||||
|
||||
$server_variables= array(
|
||||
"auto_increment_increment" => "1",
|
||||
"auto_increment_offset" => "1",
|
||||
"automatic_sp_privileges" => "ON",
|
||||
"back_log" => "50",
|
||||
"big_tables" => "OFF",
|
||||
);
|
||||
|
||||
$fetchResult = array(
|
||||
array(
|
||||
"SHOW GLOBAL STATUS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
array(
|
||||
"SHOW GLOBAL VARIABLES",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_variables
|
||||
),
|
||||
array(
|
||||
"SELECT concat('Com_', variable_name), variable_value "
|
||||
. "FROM data_dictionary.GLOBAL_STATEMENTS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
);
|
||||
|
||||
$dbi->expects($this->at(0))
|
||||
->method('tryQuery')
|
||||
->with('SHOW GLOBAL STATUS')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$dbi->expects($this->at(1))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Aborted_clients", "0")));
|
||||
$dbi->expects($this->at(2))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Aborted_connects", "0")));
|
||||
$dbi->expects($this->at(3))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Com_delete_multi", "0")));
|
||||
$dbi->expects($this->at(4))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Com_create_function", "0")));
|
||||
$dbi->expects($this->at(5))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Com_empty_query", "0")));
|
||||
$dbi->expects($this->at(6))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$dbi->expects($this->at(7))->method('freeResult');
|
||||
|
||||
$dbi->expects($this->any())->method('fetchResult')
|
||||
->will($this->returnValueMap($fetchResult));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$this->ServerStatusData = new ServerStatusData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForServerStatus
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testPMAGetHtmlForServerStatus()
|
||||
{
|
||||
//parameters
|
||||
$upTime = "10h";
|
||||
$bytes_received = 100;
|
||||
$bytes_sent = 200;
|
||||
$max_used_conn = 500;
|
||||
$aborted_conn = 200;
|
||||
$conn = 1000;
|
||||
$this->ServerStatusData->status['Uptime'] = $upTime;
|
||||
$this->ServerStatusData->status['Bytes_received'] = $bytes_received;
|
||||
$this->ServerStatusData->status['Bytes_sent'] = $bytes_sent;
|
||||
$this->ServerStatusData->status['Max_used_connections'] = $max_used_conn;
|
||||
$this->ServerStatusData->status['Aborted_connects'] = $aborted_conn;
|
||||
$this->ServerStatusData->status['Connections'] = $conn;
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForServerStatus($this->ServerStatusData);
|
||||
|
||||
//validate 1: PMA_getHtmlForServerStateGeneralInfo
|
||||
//traffic: $bytes_received + $bytes_sent
|
||||
$traffic = $bytes_received + $bytes_sent;
|
||||
$traffic_html = 'Network traffic since startup: ' . $traffic . ' B';
|
||||
$this->assertContains(
|
||||
$traffic_html,
|
||||
$html
|
||||
);
|
||||
//updatetime
|
||||
$upTime_html = 'This MySQL server has been running for '
|
||||
. '0 days, 0 hours, 0 minutes and 10h seconds';
|
||||
$this->assertContains(
|
||||
$upTime_html,
|
||||
$html
|
||||
);
|
||||
//master state
|
||||
$master_html = 'This MySQL server works as <b>master</b>';
|
||||
$this->assertContains(
|
||||
$master_html,
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 2: PMA_getHtmlForServerStateTraffic
|
||||
$traffic_html = '<table id="serverstatustraffic" class="data noclick">';
|
||||
$this->assertContains(
|
||||
$traffic_html,
|
||||
$html
|
||||
);
|
||||
//traffic hint
|
||||
$traffic_html = 'On a busy server, the byte counters may overrun';
|
||||
$this->assertContains(
|
||||
$traffic_html,
|
||||
$html
|
||||
);
|
||||
//$bytes_received
|
||||
$this->assertContains(
|
||||
'<td class="value">' . $bytes_received . ' B',
|
||||
$html
|
||||
);
|
||||
//$bytes_sent
|
||||
$this->assertContains(
|
||||
'<td class="value">' . $bytes_sent . ' B',
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 3: PMA_getHtmlForServerStateConnections
|
||||
$this->assertContains(
|
||||
'<th>Connections</th>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th>ø per hour</th>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<table id="serverstatusconnections" class="data noclick">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th class="name">Max. concurrent connections</th>',
|
||||
$html
|
||||
);
|
||||
//Max_used_connections
|
||||
$this->assertContains(
|
||||
'<td class="value">' . $max_used_conn,
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th class="name">Failed attempts</th>',
|
||||
$html
|
||||
);
|
||||
//Aborted_connects
|
||||
$this->assertContains(
|
||||
'<td class="value">' . $aborted_conn,
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th class="name">Aborted</th>',
|
||||
$html
|
||||
);
|
||||
|
||||
$GLOBALS['replication_info']['master']['status'] = true;
|
||||
$GLOBALS['replication_info']['slave']['status'] = true;
|
||||
$this->ServerStatusData->status['Connections'] = 0;
|
||||
$html = PMA_getHtmlForServerStatus($this->ServerStatusData);
|
||||
|
||||
$this->assertContains(
|
||||
'This MySQL server works as <b>master</b> and <b>slave</b>',
|
||||
$html
|
||||
);
|
||||
|
||||
$GLOBALS['replication_info']['master']['status'] = false;
|
||||
$GLOBALS['replication_info']['slave']['status'] = true;
|
||||
$html = PMA_getHtmlForServerStatus($this->ServerStatusData);
|
||||
|
||||
$this->assertContains(
|
||||
'This MySQL server works as <b>slave</b>',
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
282
#pma/test/libraries/PMA_server_status_variables_test.php
Normal file
282
#pma/test/libraries/PMA_server_status_variables_test.php
Normal file
@@ -0,0 +1,282 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for server_status_variables.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\ServerStatusData;
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
require_once 'libraries/server_status_variables.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* class PMA_ServerStatusVariables_Test
|
||||
*
|
||||
* this class is for testing server_status_variables.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerStatusVariables_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public $ServerStatusData;
|
||||
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$_REQUEST
|
||||
$_REQUEST['log'] = "index1";
|
||||
$_REQUEST['pos'] = 3;
|
||||
|
||||
//$GLOBALS
|
||||
$GLOBALS['cfg']['MaxRows'] = 10;
|
||||
$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']['Server']['host'] = "localhost";
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['replication_info']['master']['status'] = false;
|
||||
$GLOBALS['replication_info']['slave']['status'] = false;
|
||||
|
||||
$GLOBALS['table'] = "table";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
//this data is needed when ServerStatusData constructs
|
||||
$server_status = array(
|
||||
"Aborted_clients" => "0",
|
||||
"Aborted_connects" => "0",
|
||||
"Com_delete_multi" => "0",
|
||||
"Com_create_function" => "0",
|
||||
"Com_empty_query" => "0",
|
||||
);
|
||||
|
||||
$server_variables= array(
|
||||
"auto_increment_increment" => "1",
|
||||
"auto_increment_offset" => "1",
|
||||
"automatic_sp_privileges" => "ON",
|
||||
"back_log" => "50",
|
||||
"big_tables" => "OFF",
|
||||
);
|
||||
|
||||
$fetchResult = array(
|
||||
array(
|
||||
"SHOW GLOBAL STATUS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
array(
|
||||
"SHOW GLOBAL VARIABLES",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_variables
|
||||
),
|
||||
array(
|
||||
"SELECT concat('Com_', variable_name), variable_value "
|
||||
. "FROM data_dictionary.GLOBAL_STATEMENTS",
|
||||
0,
|
||||
1,
|
||||
null,
|
||||
0,
|
||||
$server_status
|
||||
),
|
||||
);
|
||||
|
||||
$dbi->expects($this->at(0))
|
||||
->method('tryQuery')
|
||||
->with('SHOW GLOBAL STATUS')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$dbi->expects($this->at(1))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Aborted_clients", "0")));
|
||||
$dbi->expects($this->at(2))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Aborted_connects", "0")));
|
||||
$dbi->expects($this->at(3))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Com_delete_multi", "0")));
|
||||
$dbi->expects($this->at(4))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Com_create_function", "0")));
|
||||
$dbi->expects($this->at(5))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(array("Com_empty_query", "0")));
|
||||
$dbi->expects($this->at(6))
|
||||
->method('fetchRow')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$dbi->expects($this->at(7))->method('freeResult');
|
||||
|
||||
$dbi->expects($this->any())->method('fetchResult')
|
||||
->will($this->returnValueMap($fetchResult));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
$this->ServerStatusData = new ServerStatusData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForFilter
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForFilter()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForFilter($this->ServerStatusData);
|
||||
|
||||
//validate 1: PMA_getHtmlForFilter
|
||||
$this->assertContains(
|
||||
'<fieldset id="tableFilter">',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'server_status_variables.php',
|
||||
$html
|
||||
);
|
||||
//validate 2: filter
|
||||
$this->assertContains(
|
||||
'<label for="filterText">Containing the word:</label>',
|
||||
$html
|
||||
);
|
||||
//validate 3:Items
|
||||
$this->assertContains(
|
||||
'<label for="filterAlert">Show only alert values</label>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Filter by category',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Show unformatted values',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForLinkSuggestions
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForLinkSuggestions()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForLinkSuggestions($this->ServerStatusData);
|
||||
|
||||
//validate 1: PMA_getHtmlForLinkSuggestions
|
||||
$this->assertContains(
|
||||
'<div id="linkSuggestions" class="defaultLinks"',
|
||||
$html
|
||||
);
|
||||
//validate 2: linkSuggestions
|
||||
$this->assertContains(
|
||||
'<p class="notice">Related links:',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'Flush (close) all tables',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<span class="status_binlog_cache">',
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForVariablesList
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testPMAGetHtmlForVariablesList()
|
||||
{
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForVariablesList($this->ServerStatusData);
|
||||
|
||||
//validate 1: PMA_getHtmlForVariablesList
|
||||
$table = '<table class="data noclick" '
|
||||
. 'id="serverstatusvariables">';
|
||||
$this->assertContains(
|
||||
$table,
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th>Variable</th>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th>Value</th>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th>Description</th>',
|
||||
$html
|
||||
);
|
||||
//validate 3:Items
|
||||
$this->assertContains(
|
||||
'<th class="name">Aborted clients',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<span class="allfine">0</span>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th class="name">Aborted connects',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th class="name">Com delete multi',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th class="name">Com create function',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<th class="name">Com empty query',
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
270
#pma/test/libraries/PMA_server_user_groups_test.php
Normal file
270
#pma/test/libraries/PMA_server_user_groups_test.php
Normal file
@@ -0,0 +1,270 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for server_user_groups.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
|
||||
require_once 'libraries/relation.lib.php';
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/server_user_groups.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for server_user_groups.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerUserGroupsTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['cfg']['ServerDefault'] = 1;
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'both';
|
||||
|
||||
$GLOBALS['server'] = 1;
|
||||
$_SESSION['relation'][$GLOBALS['server']] = array(
|
||||
'PMA_VERSION' => PMA_VERSION,
|
||||
'db' => 'pmadb',
|
||||
'users' => 'users',
|
||||
'usergroups' => 'usergroups'
|
||||
);
|
||||
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests PMA_getHtmlForUserGroupsTable() function when there are no user groups
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
public function testGetHtmlForUserGroupsTableWithNoUserGroups()
|
||||
{
|
||||
$expectedQuery = "SELECT * FROM `pmadb`.`usergroups`"
|
||||
. " ORDER BY `usergroup` ASC";
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbi->expects($this->once())
|
||||
->method('tryQuery')
|
||||
->with($expectedQuery)
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->once())
|
||||
->method('numRows')
|
||||
->withAnyParameters()
|
||||
->will($this->returnValue(0));
|
||||
$dbi->expects($this->once())
|
||||
->method('freeResult');
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$html = PMA_getHtmlForUserGroupsTable();
|
||||
$this->assertNotContains(
|
||||
'<table id="userGroupsTable">',
|
||||
$html
|
||||
);
|
||||
$url_tag = '<a href="server_user_groups.php'
|
||||
. PMA_URL_getCommon(array('addUserGroup' => 1));
|
||||
$this->assertContains(
|
||||
$url_tag,
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests PMA_getHtmlForUserGroupsTable() function when there are user groups
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlForUserGroupsTableWithUserGroups()
|
||||
{
|
||||
$expectedQuery = "SELECT * FROM `pmadb`.`usergroups`"
|
||||
. " ORDER BY `usergroup` ASC";
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbi->expects($this->once())
|
||||
->method('tryQuery')
|
||||
->with($expectedQuery)
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->once())
|
||||
->method('numRows')
|
||||
->withAnyParameters()
|
||||
->will($this->returnValue(1));
|
||||
$dbi->expects($this->at(2))
|
||||
->method('fetchAssoc')
|
||||
->withAnyParameters()
|
||||
->will(
|
||||
$this->returnValue(
|
||||
array(
|
||||
'usergroup' => 'usergroup',
|
||||
'tab' => 'server_sql',
|
||||
'allowed' => 'Y'
|
||||
)
|
||||
)
|
||||
);
|
||||
$dbi->expects($this->at(3))
|
||||
->method('fetchAssoc')
|
||||
->withAnyParameters()
|
||||
->will($this->returnValue(false));
|
||||
$dbi->expects($this->once())
|
||||
->method('freeResult');
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$html = PMA_getHtmlForUserGroupsTable();
|
||||
$this->assertContains(
|
||||
'<td>usergroup</td>',
|
||||
$html
|
||||
);
|
||||
$url_tag = '<a class="" href="server_user_groups.php'
|
||||
. PMA_URL_getCommon(
|
||||
array(
|
||||
'viewUsers'=>1, 'userGroup'=>htmlspecialchars('usergroup')
|
||||
)
|
||||
);
|
||||
$this->assertContains(
|
||||
$url_tag,
|
||||
$html
|
||||
);
|
||||
$url_tag = '<a class="" href="server_user_groups.php'
|
||||
. PMA_URL_getCommon(
|
||||
array(
|
||||
'editUserGroup'=>1,
|
||||
'userGroup'=>htmlspecialchars('usergroup')
|
||||
)
|
||||
);
|
||||
$this->assertContains(
|
||||
$url_tag,
|
||||
$html
|
||||
);
|
||||
$url_tag = '<a class="deleteUserGroup ajax" href="server_user_groups.php'
|
||||
. PMA_URL_getCommon(
|
||||
array(
|
||||
'deleteUserGroup'=> 1,
|
||||
'userGroup'=>htmlspecialchars('usergroup')
|
||||
)
|
||||
);
|
||||
$this->assertContains(
|
||||
$url_tag,
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests PMA_deleteUserGroup() function
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testDeleteUserGroup()
|
||||
{
|
||||
$userDelQuery = "DELETE FROM `pmadb`.`users`"
|
||||
. " WHERE `usergroup`='ug'";
|
||||
$userGrpDelQuery = "DELETE FROM `pmadb`.`usergroups`"
|
||||
. " WHERE `usergroup`='ug'";
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbi->expects($this->at(1))
|
||||
->method('query')
|
||||
->with($userDelQuery);
|
||||
$dbi->expects($this->at(3))
|
||||
->method('query')
|
||||
->with($userGrpDelQuery);
|
||||
$dbi->expects($this->any())
|
||||
->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
PMA_deleteUserGroup('ug');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests PMA_getHtmlToEditUserGroup() function
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHtmlToEditUserGroup()
|
||||
{
|
||||
// adding a user group
|
||||
$html = PMA_getHtmlToEditUserGroup();
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="addUserGroupSubmit" value="1"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="text" name="userGroup"',
|
||||
$html
|
||||
);
|
||||
|
||||
$expectedQuery = "SELECT * FROM `pmadb`.`usergroups`"
|
||||
. " WHERE `usergroup`='ug'";
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbi->expects($this->once())
|
||||
->method('tryQuery')
|
||||
->with($expectedQuery)
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->exactly(2))
|
||||
->method('fetchAssoc')
|
||||
->willReturnOnConsecutiveCalls(
|
||||
array(
|
||||
'usergroup' => 'ug',
|
||||
'tab' => 'server_sql',
|
||||
'allowed' => 'Y'
|
||||
),
|
||||
false
|
||||
);
|
||||
$dbi->expects($this->once())
|
||||
->method('freeResult');
|
||||
$dbi->expects($this->any())
|
||||
->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
// editing a user group
|
||||
$html = PMA_getHtmlToEditUserGroup('ug');
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="userGroup" value="ug"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="editUserGroupSubmit" value="1"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="editUserGroupSubmit" value="1"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="checkbox" class="checkall" checked="checked"'
|
||||
. ' name="server_sql" value="Y" />',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="checkbox" class="checkall"'
|
||||
. ' name="server_databases" value="Y" />',
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
60
#pma/test/libraries/PMA_server_users_test.php
Normal file
60
#pma/test/libraries/PMA_server_users_test.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for server_users.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/server_users.lib.php';
|
||||
|
||||
/**
|
||||
* PMA_ServerUsers_Test class
|
||||
*
|
||||
* This class is for testing server_users.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerUsers_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_getHtmlForSubMenusOnUsersPage
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForSubMenusOnUsersPage()
|
||||
{
|
||||
$html = PMA_getHtmlForSubMenusOnUsersPage('server_privileges.php');
|
||||
|
||||
//validate 1: topmenu2
|
||||
$this->assertContains(
|
||||
'<ul id="topmenu2">',
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 2: tabactive for server_privileges.php
|
||||
$this->assertContains(
|
||||
'<a class="tabactive" href="server_privileges.php',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('User accounts overview'),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 3: not-active for server_user_groups.php
|
||||
$this->assertContains(
|
||||
'<a href="server_user_groups.php',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('User groups'),
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
225
#pma/test/libraries/PMA_sql_query_form_test.php
Normal file
225
#pma/test/libraries/PMA_sql_query_form_test.php
Normal file
@@ -0,0 +1,225 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for sql_query_form.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
//the following definition should be used globally
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
$GLOBALS['server'] = 0;
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/relation.lib.php';
|
||||
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/sql_query_form.lib.php';
|
||||
require_once 'libraries/kanji-encoding.lib.php';
|
||||
require_once 'libraries/mysql_charsets.inc.php';
|
||||
|
||||
/**
|
||||
* class PMA_SqlQueryForm_Test
|
||||
*
|
||||
* this class is for testing sql_query_form.lib.php functions
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_SqlQueryForm_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//$GLOBALS
|
||||
$GLOBALS['max_upload_size'] = 100;
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['db'] = "PMA_db";
|
||||
$GLOBALS['table'] = "PMA_table";
|
||||
$GLOBALS['pmaThemeImage'] = 'image';
|
||||
$GLOBALS['text_dir'] = "text_dir";
|
||||
|
||||
$GLOBALS['cfg']['GZipDump'] = false;
|
||||
$GLOBALS['cfg']['BZipDump'] = false;
|
||||
$GLOBALS['cfg']['ZipDump'] = false;
|
||||
$GLOBALS['cfg']['ServerDefault'] = "default";
|
||||
$GLOBALS['cfg']['TextareaAutoSelect'] = true;
|
||||
$GLOBALS['cfg']['TextareaRows'] = 100;
|
||||
$GLOBALS['cfg']['TextareaCols'] = 11;
|
||||
$GLOBALS['cfg']['DefaultTabDatabase'] = "structure";
|
||||
$GLOBALS['cfg']['RetainQueryBox'] = true;
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'both';
|
||||
$GLOBALS['cfg']['DefaultTabTable'] = 'browse';
|
||||
$GLOBALS['cfg']['CodemirrorEnable'] = true;
|
||||
$GLOBALS['cfg']['DefaultForeignKeyChecks'] = 'default';
|
||||
|
||||
//_SESSION
|
||||
$_SESSION['relation'][0] = array(
|
||||
'PMA_VERSION' => PMA_VERSION,
|
||||
'table_coords' => "table_name",
|
||||
'displaywork' => 'displaywork',
|
||||
'db' => "information_schema",
|
||||
'table_info' => 'table_info',
|
||||
'relwork' => 'relwork',
|
||||
'relation' => 'relation',
|
||||
'bookmarkwork' => 'bookmarkwork',
|
||||
);
|
||||
//$GLOBALS
|
||||
$GLOBALS['cfg']['Server']['user'] = "user";
|
||||
$GLOBALS['cfg']['Server']['pmadb'] = "pmadb";
|
||||
$GLOBALS['cfg']['Server']['bookmarktable'] = "bookmarktable";
|
||||
|
||||
//$_SESSION
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$fetchResult = array("index1"=>"table1", "index2"=>"table2");
|
||||
$dbi->expects($this->any())
|
||||
->method('fetchResult')
|
||||
->will($this->returnValue($fetchResult));
|
||||
|
||||
$getColumns = array(
|
||||
array(
|
||||
"Field" => "field1",
|
||||
"Comment" => "Comment1"
|
||||
)
|
||||
);
|
||||
$dbi->expects($this->any())
|
||||
->method('getColumns')
|
||||
->will($this->returnValue($getColumns));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForSqlQueryFormInsert
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForSqlQueryFormInsert()
|
||||
{
|
||||
//Call the test function
|
||||
$query = "select * from PMA";
|
||||
$html = PMA_getHtmlForSqlQueryFormInsert($query);
|
||||
|
||||
//validate 1: query
|
||||
$this->assertContains(
|
||||
htmlspecialchars($query),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 2: enable auto select text in textarea
|
||||
$auto_sel = ' onclick="selectContent(this, sql_box_locked, true);"';
|
||||
$this->assertContains(
|
||||
$auto_sel,
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 3: showMySQLDocu
|
||||
$this->assertContains(
|
||||
PMA\libraries\Util::showMySQLDocu('SELECT'),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 4: $fields_list
|
||||
$this->assertContains(
|
||||
'<input type="button" value="DELETE" id="delete"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="button" value="UPDATE" id="update"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="button" value="INSERT" id="insert"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="button" value="SELECT" id="select"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<input type="button" value="SELECT *" id="selectall"',
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 5: Clear button
|
||||
$this->assertContains(
|
||||
'<input type="button" value="DELETE" id="delete"',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Clear'),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getHtmlForSqlQueryForm
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPMAGetHtmlForSqlQueryForm()
|
||||
{
|
||||
//Call the test function
|
||||
$GLOBALS['is_upload'] = true;
|
||||
$query = "select * from PMA";
|
||||
$html = PMA_getHtmlForSqlQueryForm($query);
|
||||
|
||||
//validate 1: query
|
||||
$this->assertContains(
|
||||
htmlspecialchars($query),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 2: $enctype
|
||||
$enctype = ' enctype="multipart/form-data"';
|
||||
$this->assertContains(
|
||||
$enctype,
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 3: sqlqueryform
|
||||
$this->assertContains(
|
||||
'id="sqlqueryform" name="sqlform">',
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 4: $db, $table
|
||||
$table = $GLOBALS['table'];
|
||||
$db = $GLOBALS['db'];
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs($db, $table),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 5: $goto
|
||||
$goto = empty($GLOBALS['goto']) ? 'tbl_sql.php' : $GLOBALS['goto'];
|
||||
$this->assertContains(
|
||||
htmlspecialchars($goto),
|
||||
$html
|
||||
);
|
||||
|
||||
//validate 6: PMA_Kanji_encodingForm
|
||||
$this->assertContains(
|
||||
PMA_Kanji_encodingForm(),
|
||||
$html
|
||||
);
|
||||
}
|
||||
}
|
||||
202
#pma/test/libraries/PMA_sql_test.php
Normal file
202
#pma/test/libraries/PMA_sql_test.php
Normal file
@@ -0,0 +1,202 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for libraries/sql.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/sql.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for libraries/sql.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_SqlTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test PMA_getSqlWithLimitClause
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetSqlWithLimitClause()
|
||||
{
|
||||
// Test environment.
|
||||
$GLOBALS['_SESSION']['tmpval']['pos'] = 1;
|
||||
$GLOBALS['_SESSION']['tmpval']['max_rows'] = 2;
|
||||
$GLOBALS['db'] = 'db';
|
||||
|
||||
$analyzed_sql_results = PMA_parseAndAnalyze(
|
||||
'SELECT * FROM test LIMIT 0, 10'
|
||||
);
|
||||
$this->assertEquals(
|
||||
'SELECT * FROM test LIMIT 1, 2 ',
|
||||
PMA_getSqlWithLimitClause($analyzed_sql_results)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test PMA_isRememberSortingOrder
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testIsRememberSortingOrder()
|
||||
{
|
||||
// Test environment.
|
||||
$GLOBALS['cfg']['RememberSorting'] = true;
|
||||
$GLOBALS['db'] = 'db';
|
||||
|
||||
$this->assertTrue(
|
||||
PMA_isRememberSortingOrder(
|
||||
PMA_parseAndAnalyze('SELECT * FROM tbl')
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertFalse(
|
||||
PMA_isRememberSortingOrder(
|
||||
PMA_parseAndAnalyze('SELECT col FROM tbl')
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertFalse(
|
||||
PMA_isRememberSortingOrder(
|
||||
PMA_parseAndAnalyze('SELECT 1')
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertFalse(
|
||||
PMA_isRememberSortingOrder(
|
||||
PMA_parseAndAnalyze('SELECT col1, col2 FROM tbl')
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertFalse(
|
||||
PMA_isRememberSortingOrder(
|
||||
PMA_parseAndAnalyze('SELECT COUNT(*) from tbl')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test PMA_isAppendLimitClause
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testIsAppendLimitClause()
|
||||
{
|
||||
// Test environment.
|
||||
$GLOBALS['_SESSION']['tmpval']['max_rows'] = 10;
|
||||
$GLOBALS['db'] = 'db';
|
||||
|
||||
$this->assertTrue(
|
||||
PMA_isAppendLimitClause(
|
||||
PMA_parseAndAnalyze('SELECT * FROM tbl')
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertFalse(
|
||||
PMA_isAppendLimitClause(
|
||||
PMA_parseAndAnalyze('SELECT * from tbl LIMIT 0, 10')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test PMA_isJustBrowsing
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testIsJustBrowsing()
|
||||
{
|
||||
// Test environment.
|
||||
$GLOBALS['_SESSION']['tmpval']['max_rows'] = 10;
|
||||
$GLOBALS['db'] = 'db';
|
||||
|
||||
$this->assertTrue(
|
||||
PMA_isJustBrowsing(
|
||||
PMA_parseAndAnalyze('SELECT * FROM db.tbl'),
|
||||
null
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertTrue(
|
||||
PMA_isJustBrowsing(
|
||||
PMA_parseAndAnalyze('SELECT * FROM tbl WHERE 1'),
|
||||
null
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertFalse(
|
||||
PMA_isJustBrowsing(
|
||||
PMA_parseAndAnalyze('SELECT * from tbl1, tbl2 LIMIT 0, 10'),
|
||||
null
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test PMA_isDeleteTransformationInfo
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testIsDeleteTransformationInfo()
|
||||
{
|
||||
$this->assertTrue(
|
||||
PMA_isDeleteTransformationInfo(
|
||||
PMA_parseAndAnalyze('ALTER TABLE tbl DROP COLUMN col')
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertTrue(
|
||||
PMA_isDeleteTransformationInfo(
|
||||
PMA_parseAndAnalyze('DROP TABLE tbl')
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertFalse(
|
||||
PMA_isDeleteTransformationInfo(
|
||||
PMA_parseAndAnalyze('SELECT * from tbl')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test PMA_hasNoRightsToDropDatabase
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testHasNoRightsToDropDatabase()
|
||||
{
|
||||
$this->assertEquals(
|
||||
true,
|
||||
PMA_hasNoRightsToDropDatabase(
|
||||
PMA_parseAndAnalyze('DROP DATABASE db'),
|
||||
false,
|
||||
false
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_hasNoRightsToDropDatabase(
|
||||
PMA_parseAndAnalyze('DROP TABLE tbl'),
|
||||
false,
|
||||
false
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_hasNoRightsToDropDatabase(
|
||||
PMA_parseAndAnalyze('SELECT * from tbl'),
|
||||
false,
|
||||
false
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
930
#pma/test/libraries/PMA_tbl_tracking_test.php
Normal file
930
#pma/test/libraries/PMA_tbl_tracking_test.php
Normal file
@@ -0,0 +1,930 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for libraries/tracking.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
require_once 'libraries/tracking.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/relation.lib.php';
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
* Tests for libraries/tracking.lib.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Setup function for test cases
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
/**
|
||||
* SET these to avoid undefined index error
|
||||
*/
|
||||
$_REQUEST['db'] = "db";
|
||||
$_REQUEST['table'] = "table";
|
||||
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['db'] = "PMA_db";
|
||||
$GLOBALS['table'] = "PMA_table";
|
||||
$GLOBALS['pmaThemeImage'] = "image";
|
||||
$GLOBALS['cfg']['ServerDefault'] = "server";
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'both';
|
||||
$GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 1000;
|
||||
|
||||
$_SESSION['relation'][$GLOBALS['server']] = array(
|
||||
'PMA_VERSION' => PMA_VERSION,
|
||||
'db' => 'pmadb',
|
||||
'tracking' => 'tracking',
|
||||
'trackingwork' => true
|
||||
);
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
$GLOBALS['cfg']['Server']['tracking_default_statements'] = 'DELETE';
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$fetchArray = array('version' => "10");
|
||||
$dbi->expects($this->any())
|
||||
->method('fetchArray')
|
||||
->will($this->returnValue($fetchArray));
|
||||
$dbi->expects($this->any())
|
||||
->method('query')
|
||||
->will($this->returnValue(true));
|
||||
$dbi->expects($this->any())
|
||||
->method('tryQuery')
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_filterTracking() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAFilterTracking()
|
||||
{
|
||||
$data = array(
|
||||
array(
|
||||
"date" => "20120102",
|
||||
"username"=> "username1",
|
||||
"statement"=>"statement1"
|
||||
),
|
||||
array(
|
||||
"date" => "20130102",
|
||||
"username"=> "username2",
|
||||
"statement"=>"statement2"
|
||||
),
|
||||
);
|
||||
$filter_ts_from = 0;
|
||||
$filter_ts_to = 999999999999;
|
||||
$filter_users = array("username1");
|
||||
|
||||
$ret = PMA_filterTracking(
|
||||
$data, $filter_ts_from, $filter_ts_to, $filter_users
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
'username1',
|
||||
$ret[0]['username']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'statement1',
|
||||
$ret[0]['statement']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForDataDefinitionAndManipulationStatements() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForDataDefinitionAndManipulationStatements()
|
||||
{
|
||||
$url_query = "url_query";
|
||||
$last_version = 10;
|
||||
$html = PMA_getHtmlForDataDefinitionAndManipulationStatements(
|
||||
$url_query, $last_version, $GLOBALS['db'], array($GLOBALS['table'])
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<div id="div_create_version">',
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$url_query,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
PMA_URL_getHiddenInputs($GLOBALS['db']),
|
||||
$html
|
||||
);
|
||||
|
||||
$item = sprintf(
|
||||
__('Create version %1$s of %2$s'),
|
||||
($last_version + 1),
|
||||
htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table'])
|
||||
);
|
||||
$this->assertContains(
|
||||
$item,
|
||||
$html
|
||||
);
|
||||
|
||||
$item = '<input type="checkbox" name="delete" value="true"'
|
||||
. ' checked="checked" /> DELETE<br/>';
|
||||
$this->assertContains(
|
||||
$item,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Create version'),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForActivateDeactivateTracking() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForActivateDeactivateTracking()
|
||||
{
|
||||
$url_query = "url_query";
|
||||
$last_version = "10";
|
||||
$html = PMA_getHtmlForActivateDeactivateTracking(
|
||||
'activate', $url_query, $last_version
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$url_query,
|
||||
$html
|
||||
);
|
||||
|
||||
$item = sprintf(
|
||||
__('Activate tracking for %s'),
|
||||
htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table'])
|
||||
);
|
||||
$this->assertContains(
|
||||
$item,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$last_version,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Activate now'),
|
||||
$html
|
||||
);
|
||||
|
||||
$html = PMA_getHtmlForActivateDeactivateTracking(
|
||||
'deactivate', $url_query, $last_version
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$url_query,
|
||||
$html
|
||||
);
|
||||
|
||||
$item = sprintf(
|
||||
__('Deactivate tracking for %s'),
|
||||
htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table'])
|
||||
);
|
||||
$this->assertContains(
|
||||
$item,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$last_version,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Deactivate now'),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getTableLastVersionNumber() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetTableLastVersionNumber()
|
||||
{
|
||||
$sql_result = "sql_result";
|
||||
$last_version = PMA_getTableLastVersionNumber($sql_result);
|
||||
|
||||
$this->assertEquals(
|
||||
"10",
|
||||
$last_version
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getSQLResultForSelectableTables() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetSQLResultForSelectableTables()
|
||||
{
|
||||
$ret = PMA_getSQLResultForSelectableTables();
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$ret
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForColumns() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForColumns()
|
||||
{
|
||||
$columns = array(
|
||||
array(
|
||||
'Field'=>'Field1',
|
||||
'Type'=>'Type1',
|
||||
'Collation'=>'Collation1',
|
||||
"Null"=>'YES',
|
||||
'Extra'=>'Extra1',
|
||||
'Key'=>'PRI',
|
||||
'Comment'=>'Comment1'
|
||||
),
|
||||
array(
|
||||
'Field'=>'Field2',
|
||||
'Type'=>'Type2',
|
||||
'Collation'=>'Collation2',
|
||||
"Null"=>'No',
|
||||
'Extra'=>'Extra2',
|
||||
'Key'=>'Key2',
|
||||
'Comment'=>'Comment2'
|
||||
),
|
||||
);
|
||||
|
||||
$html = PMA_getHtmlForColumns($columns);
|
||||
|
||||
$this->assertContains(
|
||||
__('Column'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Type'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Collation'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Default'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Comment'),
|
||||
$html
|
||||
);
|
||||
|
||||
//column1
|
||||
$item1= $columns[0];
|
||||
$this->assertContains(
|
||||
htmlspecialchars($item1['Field']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($item1['Type']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($item1['Collation']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
'<i>NULL</i>',
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($item1['Comment']),
|
||||
$html
|
||||
);
|
||||
|
||||
//column2
|
||||
$item1= $columns[1];
|
||||
$this->assertContains(
|
||||
htmlspecialchars($item1['Field']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($item1['Type']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($item1['Collation']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
_pgettext('None for default', 'None'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($item1['Comment']),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getListOfVersionsOfTable() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetListOfVersionsOfTable()
|
||||
{
|
||||
$ret = PMA_getListOfVersionsOfTable();
|
||||
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$ret
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForTableVersionDetails() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForTableVersionDetails()
|
||||
{
|
||||
$sql_result = true;
|
||||
$last_version = "10";
|
||||
$url_params = array();
|
||||
$url_query = "select * from PMA";
|
||||
$pmaThemeImage = "themePath/img";
|
||||
$text_dir = "ltr";
|
||||
|
||||
$dbi_old = $GLOBALS['dbi'];
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$fetchArray = array(
|
||||
'tracking_active' => 1,
|
||||
'version' => "10",
|
||||
'db_name' => 'db_name',
|
||||
'table_name' => 'table_name',
|
||||
'date_created' => 'date_created',
|
||||
'date_updated' => 'date_updated'
|
||||
);
|
||||
$dbi->expects($this->at(0))
|
||||
->method('fetchArray')
|
||||
->will($this->returnValue($fetchArray));
|
||||
$dbi->expects($this->at(1))
|
||||
->method('fetchArray')
|
||||
->will($this->returnValue($fetchArray));
|
||||
$dbi->expects($this->at(2))
|
||||
->method('fetchArray')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$ret = PMA_getHtmlForTableVersionDetails(
|
||||
$sql_result, $last_version, $url_params, $url_query,
|
||||
$pmaThemeImage, $text_dir
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Version'),
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Created'),
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Updated'),
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Status'),
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Action'),
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Show'),
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
$fetchArray['version'],
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
$fetchArray['date_created'],
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
$fetchArray['date_updated'],
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Tracking report'),
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Structure snapshot'),
|
||||
$ret
|
||||
);
|
||||
$html = sprintf(
|
||||
__('Deactivate tracking for %s'),
|
||||
htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table'])
|
||||
);
|
||||
$this->assertContains(
|
||||
$html,
|
||||
$ret
|
||||
);
|
||||
|
||||
//restore DBI
|
||||
$GLOBALS['dbi'] = $dbi_old;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForSelectableTables() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForSelectableTables()
|
||||
{
|
||||
$selectable_tables_sql_result = true;
|
||||
$url_query = "select * from PMA";
|
||||
|
||||
$dbi_old = $GLOBALS['dbi'];
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$fetchArray = array(
|
||||
'tracking_active' => 1,
|
||||
'version' => "10",
|
||||
'db_name' => 'db_name',
|
||||
'table_name' => 'table_name',
|
||||
'date_created' => 'date_created',
|
||||
'date_updated' => 'date_updated'
|
||||
);
|
||||
$dbi->expects($this->at(0))
|
||||
->method('fetchArray')
|
||||
->will($this->returnValue($fetchArray));
|
||||
$dbi->expects($this->at(1))
|
||||
->method('fetchArray')
|
||||
->will($this->returnValue($fetchArray));
|
||||
$dbi->expects($this->at(2))
|
||||
->method('fetchArray')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$ret = PMA_getHtmlForSelectableTables(
|
||||
$selectable_tables_sql_result, $url_query
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
htmlspecialchars($fetchArray['table_name']),
|
||||
$ret
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($fetchArray['db_name']),
|
||||
$ret
|
||||
);
|
||||
|
||||
//restore DBI
|
||||
$GLOBALS['dbi'] = $dbi_old;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForTrackingReport() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForTrackingReportr()
|
||||
{
|
||||
$_REQUEST['version'] = 10;
|
||||
$_REQUEST['date_from'] = "date_from";
|
||||
$_REQUEST['date_to'] = "date_to";
|
||||
$_REQUEST['users'] = "users";
|
||||
$_REQUEST['logtype'] = 'logtype';
|
||||
$url_query = "select * from PMA";
|
||||
$data = array(
|
||||
'tracking'=>'tracking',
|
||||
'ddlog' => array('ddlog'),
|
||||
'dmlog' => array('dmlog')
|
||||
);
|
||||
$url_params = array();
|
||||
$selection_schema = array();
|
||||
$selection_data = array();
|
||||
$selection_both = array();
|
||||
$filter_ts_to = array();
|
||||
$filter_ts_from = array();
|
||||
$filter_users = array();
|
||||
|
||||
$html = PMA_getHtmlForTrackingReport(
|
||||
$url_query, $data, $url_params,
|
||||
$selection_schema, $selection_data,
|
||||
$selection_both, $filter_ts_to,
|
||||
$filter_ts_from, $filter_users
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Tracking report'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$url_query,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Tracking statements'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$data['tracking'],
|
||||
$html
|
||||
);
|
||||
|
||||
$version = '<form method="post" action="tbl_tracking.php'
|
||||
. PMA_URL_getCommon(
|
||||
$url_params + array(
|
||||
'report' => 'true', 'version' => $_REQUEST['version']
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$version,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$version,
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Structure only'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Data only'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Structure and data'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
htmlspecialchars($_REQUEST['date_from']),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
htmlspecialchars($_REQUEST['date_to']),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
htmlspecialchars($_REQUEST['users']),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForDataManipulationStatements() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForDataManipulationStatements()
|
||||
{
|
||||
$_REQUEST['version'] = "10";
|
||||
$data = array(
|
||||
'tracking'=>'tracking',
|
||||
'dmlog' => array(
|
||||
array(
|
||||
'statement' => 'statement',
|
||||
'date' => 'date',
|
||||
'username' => 'username',
|
||||
)
|
||||
),
|
||||
'ddlog' => array('ddlog')
|
||||
);
|
||||
$url_params = array();
|
||||
$ddlog_count = 10;
|
||||
$drop_image_or_text = "text";
|
||||
$filter_ts_to = 9999999999;
|
||||
$filter_ts_from = 0;
|
||||
$filter_users = array("*");
|
||||
|
||||
$html = PMA_getHtmlForDataManipulationStatements(
|
||||
$data, $filter_users,
|
||||
$filter_ts_from, $filter_ts_to, $url_params,
|
||||
$ddlog_count, $drop_image_or_text
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Date'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Username'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Data manipulation statement'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$data['dmlog'][0]['date'],
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
$data['dmlog'][0]['username'],
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForDataDefinitionStatements() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForDataDefinitionStatements()
|
||||
{
|
||||
$_REQUEST['version'] = "10";
|
||||
|
||||
$data = array(
|
||||
'tracking'=>'tracking',
|
||||
'ddlog' => array(
|
||||
array(
|
||||
'statement' => 'statement',
|
||||
'date' => 'date',
|
||||
'username' => 'username',
|
||||
)
|
||||
),
|
||||
'dmlog' => array('dmlog')
|
||||
);
|
||||
$filter_users = array("*");
|
||||
$filter_ts_to = 9999999999;
|
||||
$filter_ts_from = 0;
|
||||
$url_params = array();
|
||||
$drop_image_or_text = "text";
|
||||
|
||||
list($html, $count) = PMA_getHtmlForDataDefinitionStatements(
|
||||
$data, $filter_users,
|
||||
$filter_ts_from, $filter_ts_to, $url_params, $drop_image_or_text
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Date'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Username'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Data definition statement'),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
__('Action'),
|
||||
$html
|
||||
);
|
||||
|
||||
//PMA_getHtmlForDataDefinitionStatement
|
||||
$this->assertContains(
|
||||
htmlspecialchars($data['ddlog'][0]['username']),
|
||||
$html
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
2,
|
||||
$count
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getHtmlForIndexes() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetHtmlForIndexes()
|
||||
{
|
||||
$indexs = array(
|
||||
array(
|
||||
'Non_unique' => 0,
|
||||
'Packed' => '',
|
||||
'Key_name' => 'Key_name1',
|
||||
'Index_type' => 'BTREE',
|
||||
'Column_name' => 'Column_name',
|
||||
'Cardinality' => 'Cardinality',
|
||||
'Collation' => 'Collation',
|
||||
'Null' => 'Null',
|
||||
'Comment' => 'Comment',
|
||||
),
|
||||
);
|
||||
|
||||
$html = PMA_getHtmlForIndexes($indexs);
|
||||
|
||||
$this->assertContains(
|
||||
__('Indexes'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Keyname'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Type'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Unique'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Packed'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Column'),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
__('Cardinality'),
|
||||
$html
|
||||
);
|
||||
// items
|
||||
$this->assertContains(
|
||||
htmlspecialchars($indexs[0]['Key_name']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($indexs[0]['Index_type']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($indexs[0]['Column_name']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($indexs[0]['Cardinality']),
|
||||
$html
|
||||
);
|
||||
$this->assertContains(
|
||||
htmlspecialchars($indexs[0]['Collation']),
|
||||
$html
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for PMA_getTrackingSet() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetTrackingSet()
|
||||
{
|
||||
$_REQUEST['alter_table'] = false;
|
||||
$_REQUEST['rename_table'] = true;
|
||||
$_REQUEST['create_table'] = true;
|
||||
$_REQUEST['drop_table'] = true;
|
||||
$_REQUEST['create_index'] = false;
|
||||
$_REQUEST['drop_index'] = true;
|
||||
$_REQUEST['insert'] = true;
|
||||
$_REQUEST['update'] = false;
|
||||
$_REQUEST['delete'] = true;
|
||||
$_REQUEST['truncate'] = true;
|
||||
|
||||
$tracking_set = PMA_getTrackingSet();
|
||||
$this->assertEquals(
|
||||
'RENAME TABLE,CREATE TABLE,DROP TABLE,DROP INDEX,INSERT,DELETE,TRUNCATE',
|
||||
$tracking_set
|
||||
);
|
||||
|
||||
//other set to true
|
||||
$_REQUEST['alter_table'] = true;
|
||||
$_REQUEST['rename_table'] = false;
|
||||
$_REQUEST['create_table'] = false;
|
||||
$_REQUEST['drop_table'] = false;
|
||||
$_REQUEST['create_index'] = true;
|
||||
$_REQUEST['drop_index'] = false;
|
||||
$_REQUEST['insert'] = false;
|
||||
$_REQUEST['update'] = true;
|
||||
$_REQUEST['delete'] = false;
|
||||
$_REQUEST['truncate'] = false;
|
||||
|
||||
$tracking_set = PMA_getTrackingSet();
|
||||
$this->assertEquals(
|
||||
'ALTER TABLE,CREATE INDEX,UPDATE',
|
||||
$tracking_set
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Tests for PMA_getEntries() method.
|
||||
*
|
||||
* @return void
|
||||
* @test
|
||||
*/
|
||||
public function testPMAGetEntries()
|
||||
{
|
||||
$_REQUEST['logtype'] = 'schema';
|
||||
$data = array(
|
||||
'tracking'=>'tracking',
|
||||
'ddlog' => array(
|
||||
array(
|
||||
'statement' => 'statement1',
|
||||
'date' => 'date2',
|
||||
'username' => 'username3',
|
||||
)
|
||||
),
|
||||
'dmlog' => array(
|
||||
array(
|
||||
'statement' => 'statement1',
|
||||
'date' => 'date2',
|
||||
'username' => 'username3',
|
||||
)
|
||||
),
|
||||
);
|
||||
$filter_users = array("*");
|
||||
$filter_ts_to = 9999999999;
|
||||
$filter_ts_from = 0;
|
||||
|
||||
$entries = PMA_getEntries(
|
||||
$data, $filter_ts_from, $filter_ts_to, $filter_users
|
||||
);
|
||||
$this->assertEquals(
|
||||
'username3',
|
||||
$entries[0]['username']
|
||||
);
|
||||
$this->assertEquals(
|
||||
'statement1',
|
||||
$entries[0]['statement']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
259
#pma/test/libraries/PMA_transformation_test.php
Normal file
259
#pma/test/libraries/PMA_transformation_test.php
Normal file
@@ -0,0 +1,259 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for transformation wrappers
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/transformations.lib.php';
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/relation.lib.php';
|
||||
|
||||
/**
|
||||
* tests for transformation wrappers
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Transformation_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Set up global environment.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
$GLOBALS['table'] = 'table';
|
||||
$GLOBALS['db'] = 'db';
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$GLOBALS['cfg'] = array(
|
||||
'ServerDefault' => 1,
|
||||
'ActionLinksMode' => 'icons',
|
||||
);
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['cfg']['Server']['pmadb'] = 'pmadb';
|
||||
$GLOBALS['cfg']['Server']['user'] = 'user';
|
||||
$GLOBALS['cfg']['Server']['bookmarktable'] = '';
|
||||
$GLOBALS['cfg']['Server']['relation'] = '';
|
||||
$GLOBALS['cfg']['Server']['table_info'] = '';
|
||||
$GLOBALS['cfg']['Server']['table_coords'] = '';
|
||||
$GLOBALS['cfg']['Server']['column_info'] = 'column_info';
|
||||
$GLOBALS['cfg']['DBG']['sql'] = false;
|
||||
// need to clear relation test cache
|
||||
unset($_SESSION['relation']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for parsing options.
|
||||
*
|
||||
* @param string $input String to parse
|
||||
* @param array $expected Expected result
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider getOptionsData
|
||||
*/
|
||||
public function testGetOptions($input, $expected)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
PMA_Transformation_getOptions($input)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provided for parsing options
|
||||
*
|
||||
* @return array with test data
|
||||
*/
|
||||
public function getOptionsData()
|
||||
{
|
||||
return array(
|
||||
array("option1 , option2 ", array('option1 ', ' option2 ')),
|
||||
array("'option1' ,' option2' ", array('option1', ' option2')),
|
||||
array("'2,3' ,' ,, option ,,' ", array('2,3', ' ,, option ,,')),
|
||||
array("'',,", array('', '', '')),
|
||||
array('', array()),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getting available types.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetTypes()
|
||||
{
|
||||
$this->assertEquals(
|
||||
array (
|
||||
'mimetype' => array (
|
||||
'Application/Octetstream' => 'Application/Octetstream',
|
||||
'Image/JPEG' => 'Image/JPEG',
|
||||
'Image/PNG' => 'Image/PNG',
|
||||
'Text/Plain' => 'Text/Plain',
|
||||
'Text/Octetstream' => 'Text/Octetstream'
|
||||
),
|
||||
'transformation' => array (
|
||||
0 => 'Application/Octetstream: Download',
|
||||
1 => 'Application/Octetstream: Hex',
|
||||
2 => 'Image/JPEG: Inline',
|
||||
3 => 'Image/JPEG: Link',
|
||||
4 => 'Image/PNG: Inline',
|
||||
5 => 'Text/Octetstream: Sql',
|
||||
6 => 'Text/Plain: Binarytoip',
|
||||
7 => 'Text/Plain: Bool2Text',
|
||||
8 => 'Text/Plain: Dateformat',
|
||||
9 => 'Text/Plain: External',
|
||||
10 => 'Text/Plain: Formatted',
|
||||
11 => 'Text/Plain: Imagelink',
|
||||
12 => 'Text/Plain: Json',
|
||||
13 => 'Text/Plain: Sql',
|
||||
14 => 'Text/Plain: Xml',
|
||||
15 => 'Text/Plain: Link',
|
||||
16 => 'Text/Plain: Longtoipv4',
|
||||
17 => 'Text/Plain: PreApPend',
|
||||
18 => 'Text/Plain: Substring',
|
||||
),
|
||||
'transformation_file' => array (
|
||||
0 => 'output/Application_Octetstream_Download.php',
|
||||
1 => 'output/Application_Octetstream_Hex.php',
|
||||
2 => 'output/Image_JPEG_Inline.php',
|
||||
3 => 'output/Image_JPEG_Link.php',
|
||||
4 => 'output/Image_PNG_Inline.php',
|
||||
5 => 'output/Text_Octetstream_Sql.php',
|
||||
6 => 'output/Text_Plain_Binarytoip.php',
|
||||
7 => 'output/Text_Plain_Bool2Text.php',
|
||||
8 => 'output/Text_Plain_Dateformat.php',
|
||||
9 => 'output/Text_Plain_External.php',
|
||||
10 => 'output/Text_Plain_Formatted.php',
|
||||
11 => 'output/Text_Plain_Imagelink.php',
|
||||
12 => 'output/Text_Plain_Json.php',
|
||||
13 => 'output/Text_Plain_Sql.php',
|
||||
14 => 'output/Text_Plain_Xml.php',
|
||||
15 => 'Text_Plain_Link.php',
|
||||
16 => 'Text_Plain_Longtoipv4.php',
|
||||
17 => 'Text_Plain_PreApPend.php',
|
||||
18 => 'Text_Plain_Substring.php',
|
||||
),
|
||||
'input_transformation' => array(
|
||||
'Image/JPEG: Upload',
|
||||
'Text/Plain: FileUpload',
|
||||
'Text/Plain: Iptobinary',
|
||||
'Text/Plain: JsonEditor',
|
||||
'Text/Plain: RegexValidation',
|
||||
'Text/Plain: SqlEditor',
|
||||
'Text/Plain: XmlEditor',
|
||||
'Text/Plain: Link',
|
||||
'Text/Plain: Longtoipv4',
|
||||
'Text/Plain: PreApPend',
|
||||
'Text/Plain: Substring',
|
||||
),
|
||||
'input_transformation_file' => array(
|
||||
'input/Image_JPEG_Upload.php',
|
||||
'input/Text_Plain_FileUpload.php',
|
||||
'input/Text_Plain_Iptobinary.php',
|
||||
'input/Text_Plain_JsonEditor.php',
|
||||
'input/Text_Plain_RegexValidation.php',
|
||||
'input/Text_Plain_SqlEditor.php',
|
||||
'input/Text_Plain_XmlEditor.php',
|
||||
'Text_Plain_Link.php',
|
||||
'Text_Plain_Longtoipv4.php',
|
||||
'Text_Plain_PreApPend.php',
|
||||
'Text_Plain_Substring.php',
|
||||
),
|
||||
),
|
||||
PMA_getAvailableMIMEtypes()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests getting mime types for table
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetMime()
|
||||
{
|
||||
$_SESSION['relation'][$GLOBALS['server']]['PMA_VERSION'] = PMA_VERSION;
|
||||
$_SESSION['relation'][$GLOBALS['server']]['commwork'] = true;
|
||||
$_SESSION['relation'][$GLOBALS['server']]['db'] = "pmadb";
|
||||
$_SESSION['relation'][$GLOBALS['server']]['column_info'] = "column_info";
|
||||
$_SESSION['relation'][$GLOBALS['server']]['trackingwork'] = false;
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'o' => array(
|
||||
'column_name' => 'o',
|
||||
'mimetype' => 'Text/plain',
|
||||
'transformation' => 'Sql',
|
||||
'transformation_options' => '',
|
||||
'input_transformation' => 'regex',
|
||||
'input_transformation_options' => '/pma/i',
|
||||
),
|
||||
'col' => array(
|
||||
'column_name' => 'col',
|
||||
'mimetype' => 'T',
|
||||
'transformation' => 'o/P',
|
||||
'transformation_options' => '',
|
||||
'input_transformation' => 'i/p',
|
||||
'input_transformation_options' => '',
|
||||
),
|
||||
),
|
||||
PMA_getMIME('pma_test', 'table1')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_clearTransformations
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testClearTransformations()
|
||||
{
|
||||
// Mock dbi
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbi->expects($this->any())
|
||||
->method('tryQuery')
|
||||
->will($this->returnValue(true));
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
// Case 1 : no configuration storage
|
||||
$actual = PMA_clearTransformations('db');
|
||||
$this->assertEquals(
|
||||
false,
|
||||
$actual
|
||||
);
|
||||
|
||||
$_SESSION['relation'][$GLOBALS['server']]['PMA_VERSION'] = PMA_VERSION;
|
||||
$_SESSION['relation'][$GLOBALS['server']]['column_info'] = "column_info";
|
||||
$_SESSION['relation'][$GLOBALS['server']]['db'] = "pmadb";
|
||||
|
||||
// Case 2 : database delete
|
||||
$actual = PMA_clearTransformations('db');
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$actual
|
||||
);
|
||||
|
||||
// Case 3 : table delete
|
||||
$actual = PMA_clearTransformations('db', 'table');
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$actual
|
||||
);
|
||||
|
||||
// Case 4 : column delete
|
||||
$actual = PMA_clearTransformations('db', 'table', 'col');
|
||||
$this->assertEquals(
|
||||
true,
|
||||
$actual
|
||||
);
|
||||
}
|
||||
}
|
||||
455
#pma/test/libraries/PMA_user_preferences_test.php
Normal file
455
#pma/test/libraries/PMA_user_preferences_test.php
Normal file
@@ -0,0 +1,455 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for methods under user_preferences library
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test
|
||||
*/
|
||||
use PMA\libraries\config\ConfigFile;
|
||||
|
||||
require_once 'libraries/user_preferences.lib.php';
|
||||
require_once 'libraries/relation.lib.php';
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
|
||||
|
||||
/**
|
||||
* tests for methods under user_preferences library
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_User_Preferences_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Setup various pre conditions
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setUp()
|
||||
{
|
||||
$GLOBALS['server'] = 0;
|
||||
$GLOBALS['PMA_PHP_SELF'] = '/phpmyadmin/';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_userprefsPageInit
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testUserPrefPageInit()
|
||||
{
|
||||
$GLOBALS['cfg'] = array(
|
||||
'Server/hide_db' => 'testval123',
|
||||
'Server/only_db' => 'test213'
|
||||
);
|
||||
$GLOBALS['cfg']['AvailableCharsets'] = array();
|
||||
$GLOBALS['forms'] = array(
|
||||
'form1' => array(
|
||||
array('Servers/1/hide_db', 'bar'),
|
||||
array('test' => 'val')
|
||||
)
|
||||
);
|
||||
|
||||
PMA_userprefsPageInit(new ConfigFile());
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'Servers' => array(
|
||||
1 => array(
|
||||
'hide_db' => 'testval123'
|
||||
)
|
||||
)
|
||||
),
|
||||
$_SESSION['ConfigFile' . $GLOBALS['server']]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_loadUserprefs
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testLoadUserprefs()
|
||||
{
|
||||
$_SESSION['relation'][$GLOBALS['server']]['PMA_VERSION'] = PMA_VERSION;
|
||||
|
||||
$_SESSION['relation'][$GLOBALS['server']]['userconfigwork'] = null;
|
||||
unset($_SESSION['userconfig']);
|
||||
|
||||
$result = PMA_loadUserprefs();
|
||||
|
||||
$this->assertCount(
|
||||
3,
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array(),
|
||||
$result['config_data']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
time(),
|
||||
$result['mtime'],
|
||||
'',
|
||||
2
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
'session',
|
||||
$result['type']
|
||||
);
|
||||
|
||||
// case 2
|
||||
$_SESSION['relation'][$GLOBALS['server']]['userconfigwork'] = 1;
|
||||
$_SESSION['relation'][$GLOBALS['server']]['db'] = "pma'db";
|
||||
$_SESSION['relation'][$GLOBALS['server']]['userconfig'] = "testconf";
|
||||
$_SESSION['relation'][$GLOBALS['server']]['user'] = "user";
|
||||
$GLOBALS['controllink'] = null;
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$query = 'SELECT `config_data`, UNIX_TIMESTAMP(`timevalue`) ts '
|
||||
. 'FROM `pma\'db`.`testconf` WHERE `username` = \'user\'';
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('fetchSingleRow')
|
||||
->with($query, 'ASSOC', null)
|
||||
->will(
|
||||
$this->returnValue(
|
||||
array(
|
||||
'ts' => '123',
|
||||
'config_data' => json_encode(array(1, 2))
|
||||
)
|
||||
)
|
||||
);
|
||||
$dbi->expects($this->any())
|
||||
->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$result = PMA_loadUserprefs();
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'config_data' => array(1, 2),
|
||||
'mtime' => 123,
|
||||
'type' => 'db'
|
||||
),
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_saveUserprefs
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testSaveUserprefs()
|
||||
{
|
||||
$GLOBALS['server'] = 2;
|
||||
$_SESSION['relation'][2]['PMA_VERSION'] = PMA_VERSION;
|
||||
$_SESSION['relation'][2]['userconfigwork'] = null;
|
||||
unset($_SESSION['userconfig']);
|
||||
|
||||
$result = PMA_saveUserprefs(array(1));
|
||||
|
||||
$this->assertTrue(
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertCount(
|
||||
2,
|
||||
$_SESSION['userconfig']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array(1),
|
||||
$_SESSION['userconfig']['db']
|
||||
);
|
||||
|
||||
/* TODO: This breaks sometimes as there might be time difference! */
|
||||
$this->assertEquals(
|
||||
time(),
|
||||
$_SESSION['userconfig']['ts'],
|
||||
'',
|
||||
2
|
||||
);
|
||||
|
||||
$assert = true;
|
||||
|
||||
if (isset($_SESSION['cache']['server_2']['userprefs'])) {
|
||||
$assert = false;
|
||||
}
|
||||
|
||||
$this->assertTrue(
|
||||
$assert
|
||||
);
|
||||
|
||||
// case 2
|
||||
$_SESSION['relation'][$GLOBALS['server']]['userconfigwork'] = 1;
|
||||
$_SESSION['relation'][$GLOBALS['server']]['db'] = "pmadb";
|
||||
$_SESSION['relation'][$GLOBALS['server']]['userconfig'] = "testconf";
|
||||
$_SESSION['relation'][$GLOBALS['server']]['user'] = "user";
|
||||
$GLOBALS['controllink'] = null;
|
||||
|
||||
$query1 = 'SELECT `username` FROM `pmadb`.`testconf` '
|
||||
. 'WHERE `username` = \'user\'';
|
||||
|
||||
$query2 = 'UPDATE `pmadb`.`testconf` SET `timevalue` = NOW(), `config_data` = \''
|
||||
. json_encode(array(1)) . '\' WHERE `username` = \'user\'';
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('fetchValue')
|
||||
->with($query1, 0, 0, null)
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('tryQuery')
|
||||
->with($query2, null)
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$dbi->expects($this->any())
|
||||
->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
$this->assertTrue(
|
||||
PMA_saveUserprefs(array(1))
|
||||
);
|
||||
|
||||
// case 3
|
||||
|
||||
$query1 = 'SELECT `username` FROM `pmadb`.`testconf` '
|
||||
. 'WHERE `username` = \'user\'';
|
||||
|
||||
$query2 = 'INSERT INTO `pmadb`.`testconf` (`username`, `timevalue`,`config_data`) '
|
||||
. 'VALUES (\'user\', NOW(), \'' . json_encode(array(1)) . '\')';
|
||||
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('fetchValue')
|
||||
->with($query1, 0, 0, null)
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('tryQuery')
|
||||
->with($query2, null)
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$dbi->expects($this->once())
|
||||
->method('getError')
|
||||
->with(null)
|
||||
->will($this->returnValue("err1"));
|
||||
$dbi->expects($this->any())
|
||||
->method('escapeString')
|
||||
->will($this->returnArgument(0));
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
$result = PMA_saveUserprefs(array(1));
|
||||
|
||||
$this->assertEquals(
|
||||
'Could not save configuration <br /><br /> err1',
|
||||
$result->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_applyUserprefs
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testApplyUserprefs()
|
||||
{
|
||||
$GLOBALS['cfg']['UserprefsDisallow'] = array(
|
||||
'test' => 'val',
|
||||
'foo' => 'bar'
|
||||
);
|
||||
$GLOBALS['cfg']['UserprefsDeveloperTab'] = null;
|
||||
$result = PMA_applyUserprefs(
|
||||
array(
|
||||
'DBG/sql' => true,
|
||||
'ErrorHandler/display' => true,
|
||||
'ErrorHandler/gather' => false,
|
||||
'Servers/foobar' => '123',
|
||||
'Server/hide_db' => true
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array(
|
||||
'Server' => array(
|
||||
'hide_db' => 1
|
||||
)
|
||||
),
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_readUserprefsFieldNames
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testReadUserprefsFieldNames()
|
||||
{
|
||||
$this->assertGreaterThan(
|
||||
0,
|
||||
count(PMA_readUserprefsFieldNames())
|
||||
);
|
||||
|
||||
$forms = array(
|
||||
'form1' => array(
|
||||
array('Servers/1/hide_db', 'bar'),
|
||||
array('test' => 'val')
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
array('Servers/1/hide_db', 'bar', 'test'),
|
||||
PMA_readUserprefsFieldNames($forms)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_persistOption
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testPersistOption()
|
||||
{
|
||||
$_SESSION['relation'][$GLOBALS['server']]['PMA_VERSION'] = PMA_VERSION;
|
||||
$_SESSION['relation'][$GLOBALS['server']]['userconfigwork'] = null;
|
||||
$_SESSION['userconfig'] = array();
|
||||
$_SESSION['userconfig']['ts'] = "123";
|
||||
$_SESSION['userconfig']['db'] = array(
|
||||
'Server/hide_db' => true,
|
||||
'Server/only_db' => true,
|
||||
);
|
||||
|
||||
$GLOBALS['server'] = 2;
|
||||
$_SESSION['relation'][2]['userconfigwork'] = null;
|
||||
|
||||
$this->assertNull(
|
||||
PMA_persistOption('Server/hide_db', 'val', 'val')
|
||||
);
|
||||
|
||||
$this->assertNull(
|
||||
PMA_persistOption('Server/hide_db', 'val2', 'val')
|
||||
);
|
||||
|
||||
$this->assertNull(
|
||||
PMA_persistOption('Server/hide_db2', 'val', 'val')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_userprefsRedirect
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testUserprefsRedirect()
|
||||
{
|
||||
if (!defined('PMA_TEST_HEADERS')) {
|
||||
$this->markTestSkipped(
|
||||
'Cannot redefine constant/function - missing runkit extension'
|
||||
);
|
||||
}
|
||||
$GLOBALS['PMA_Config']->set('PmaAbsoluteUri', '');
|
||||
|
||||
$GLOBALS['cfg']['ServerDefault'] = 1;
|
||||
$GLOBALS['lang'] = '';
|
||||
|
||||
$redefine = null;
|
||||
if (!defined('PMA_IS_IIS')) {
|
||||
define('PMA_IS_IIS', false);
|
||||
} else {
|
||||
$redefine = PMA_IS_IIS;
|
||||
runkit_constant_redefine('PMA_IS_IIS', false);
|
||||
}
|
||||
|
||||
PMA_userprefsRedirect(
|
||||
'file.html',
|
||||
array('a' => 'b'),
|
||||
'h ash'
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'Location: /phpmyadmin/file.html?a=b&saved=1&server=0&' .
|
||||
'token=token#h+ash',
|
||||
$GLOBALS['header'][0]
|
||||
);
|
||||
|
||||
if ($redefine !== null) {
|
||||
runkit_constant_redefine('PMA_IS_IIS', $redefine);
|
||||
} else {
|
||||
runkit_constant_remove('PMA_IS_IIS');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_userprefsAutoloadGetHeader
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testUserprefsAutoloadGetHeader()
|
||||
{
|
||||
$_SESSION['userprefs_autoload'] = false;
|
||||
$_REQUEST['prefs_autoload'] = 'hide';
|
||||
|
||||
$this->assertEquals(
|
||||
'',
|
||||
PMA_userprefsAutoloadGetHeader()
|
||||
);
|
||||
|
||||
$this->assertTrue(
|
||||
$_SESSION['userprefs_autoload']
|
||||
);
|
||||
|
||||
$_REQUEST['prefs_autoload'] = 'nohide';
|
||||
$GLOBALS['cfg']['ServerDefault'] = 1;
|
||||
$GLOBALS['PMA_PHP_SELF'] = 'phpunit';
|
||||
$result = PMA_userprefsAutoloadGetHeader();
|
||||
|
||||
$this->assertContains(
|
||||
'<form action="prefs_manage.php" method="post" class="disableAjax">',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="token" value="token"',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="json" value="" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="submit_import" value="1" />',
|
||||
$result
|
||||
);
|
||||
|
||||
$this->assertContains(
|
||||
'<input type="hidden" name="return_url" value="phpunit?" />',
|
||||
$result
|
||||
);
|
||||
}
|
||||
}
|
||||
186
#pma/test/libraries/PMA_zip_extension_test.php
Normal file
186
#pma/test/libraries/PMA_zip_extension_test.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?php
|
||||
/**
|
||||
* Tests zip extension usage.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
require_once 'libraries/zip_extension.lib.php';
|
||||
|
||||
/**
|
||||
* Tests zip extension usage.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ZipExtension_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test zip file content
|
||||
*
|
||||
* @param string $file zip file
|
||||
* @param string $specific_entry regular expression to match a file
|
||||
* @param mixed $output expected output
|
||||
*
|
||||
* @dataProvider providerForTestGetZipContents
|
||||
* @return void
|
||||
*/
|
||||
public function testGetZipContents($file, $specific_entry, $output)
|
||||
{
|
||||
$this->assertEquals(
|
||||
PMA_getZipContents($file, $specific_entry),
|
||||
$output
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provider for testGetZipContents
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function providerForTestGetZipContents()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'./test/test_data/test.zip',
|
||||
null,
|
||||
array(
|
||||
'error' => '',
|
||||
'data' => 'TEST FILE' . "\n"
|
||||
)
|
||||
),
|
||||
array(
|
||||
'./test/test_data/test.zip',
|
||||
'test',
|
||||
array(
|
||||
'error' => 'Error in ZIP archive: Could not find "test"',
|
||||
'data' => ''
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Find file in Zip Archive
|
||||
*
|
||||
* @param string $file_regexp regular expression for the file name to match
|
||||
* @param string $file zip archive
|
||||
* @param mixed $output expected output
|
||||
*
|
||||
* @dataProvider providerForTestFindFileFromZipArchive
|
||||
* @return void
|
||||
*/
|
||||
public function testFindFileFromZipArchive($file_regexp, $file, $output)
|
||||
{
|
||||
$this->assertEquals(
|
||||
PMA_findFileFromZipArchive($file_regexp, $file),
|
||||
$output
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provider for testFindFileFromZipArchive
|
||||
*
|
||||
* @return array Test data
|
||||
*/
|
||||
public function providerForTestFindFileFromZipArchive()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'/test/',
|
||||
'./test/test_data/test.zip',
|
||||
'test.file'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getNoOfFilesInZip
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetNoOfFilesInZip()
|
||||
{
|
||||
$this->assertEquals(
|
||||
PMA_getNoOfFilesInZip('./test/test_data/test.zip'),
|
||||
1
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_zipExtract
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testZipExtract()
|
||||
{
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA_zipExtract(
|
||||
'./test/test_data/test.zip', 'wrongName'
|
||||
)
|
||||
);
|
||||
$this->assertEquals(
|
||||
"TEST FILE\n",
|
||||
PMA_zipExtract(
|
||||
'./test/test_data/test.zip', 'test.file'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getZipError
|
||||
*
|
||||
* @param int $code error code
|
||||
* @param mixed $output expected output
|
||||
*
|
||||
* @dataProvider providerForTestGetZipError
|
||||
* @return void
|
||||
*/
|
||||
public function testGetZipError($code, $output)
|
||||
{
|
||||
$this->assertEquals(
|
||||
PMA_getZipError($code),
|
||||
$output
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provider for testGetZipError
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function providerForTestGetZipError()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
1,
|
||||
'Multi-disk zip archives not supported'
|
||||
),
|
||||
array(
|
||||
5,
|
||||
'Read error'
|
||||
),
|
||||
array(
|
||||
7,
|
||||
'CRC error'
|
||||
),
|
||||
array(
|
||||
19,
|
||||
'Not a zip archive'
|
||||
),
|
||||
array(
|
||||
21,
|
||||
'Zip archive inconsistent'
|
||||
),
|
||||
array(
|
||||
404,
|
||||
404
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
76
#pma/test/libraries/common/PMA_browseUploadFile_test.php
Normal file
76
#pma/test/libraries/common/PMA_browseUploadFile_test.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA\libraries\Util::getBrowseUploadFileBlock from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for PMA\libraries\Util::getBrowseUploadFileBlock from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetBrowseUploadFileBlock_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
$GLOBALS['is_upload'] = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function dataProvider()
|
||||
{
|
||||
return array(
|
||||
array(10, __('B'), "10"),
|
||||
array(100, __('B'), "100"),
|
||||
array(1024, __('B'), "1,024"),
|
||||
array(102400, __('KiB'), "100"),
|
||||
array(10240000, __('MiB'), "10"),
|
||||
array(2147483648, __('MiB'), "2,048"),
|
||||
array(21474836480, __('GiB'), "20")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA\libraries\Util::getBrowseUploadFileBlock
|
||||
*
|
||||
* @param int $size Size
|
||||
* @param string $unit Unit
|
||||
* @param string $res Result
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider dataProvider
|
||||
*/
|
||||
function testBrowseUploadFile($size, $unit, $res)
|
||||
{
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getBrowseUploadFileBlock($size),
|
||||
'<label for="input_import_file">' . __("Browse your computer:")
|
||||
. '</label>'
|
||||
. '<div id="upload_form_status" style="display: none;"></div>'
|
||||
. '<div id="upload_form_status_info" style="display: none;"></div>'
|
||||
. '<input type="file" name="import_file" id="input_import_file" />'
|
||||
. "(" . __('Max: ') . $res . $unit . ")" . "\n"
|
||||
. '<input type="hidden" name="MAX_FILE_SIZE" value="'
|
||||
. $size . '" />' . "\n"
|
||||
);
|
||||
}
|
||||
}
|
||||
69
#pma/test/libraries/common/PMA_buildActionTitles_test.php
Normal file
69
#pma/test/libraries/common/PMA_buildActionTitles_test.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA\libraries\Util::buildActionTitles from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Test for PMA\libraries\Util::buildActionTitles from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_BuildActionTitles_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setup()
|
||||
{
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$GLOBALS['cfg'] = array('ActionLinksMode' => 'both');
|
||||
$GLOBALS['pmaThemeImage'] = 'theme/';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for buildActionTitles
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testBuildActionTitles()
|
||||
{
|
||||
$titles = array();
|
||||
$titles['Browse'] = PMA\libraries\Util::getIcon('b_browse.png', __('Browse'));
|
||||
$titles['NoBrowse'] = PMA\libraries\Util::getIcon('bd_browse.png', __('Browse'));
|
||||
$titles['Search'] = PMA\libraries\Util::getIcon('b_select.png', __('Search'));
|
||||
$titles['NoSearch'] = PMA\libraries\Util::getIcon('bd_select.png', __('Search'));
|
||||
$titles['Insert'] = PMA\libraries\Util::getIcon('b_insrow.png', __('Insert'));
|
||||
$titles['NoInsert'] = PMA\libraries\Util::getIcon('bd_insrow.png', __('Insert'));
|
||||
$titles['Structure'] = PMA\libraries\Util::getIcon('b_props.png', __('Structure'));
|
||||
$titles['Drop'] = PMA\libraries\Util::getIcon('b_drop.png', __('Drop'));
|
||||
$titles['NoDrop'] = PMA\libraries\Util::getIcon('bd_drop.png', __('Drop'));
|
||||
$titles['Empty'] = PMA\libraries\Util::getIcon('b_empty.png', __('Empty'));
|
||||
$titles['NoEmpty'] = PMA\libraries\Util::getIcon('bd_empty.png', __('Empty'));
|
||||
$titles['Edit'] = PMA\libraries\Util::getIcon('b_edit.png', __('Edit'));
|
||||
$titles['NoEdit'] = PMA\libraries\Util::getIcon('bd_edit.png', __('Edit'));
|
||||
$titles['Export'] = PMA\libraries\Util::getIcon('b_export.png', __('Export'));
|
||||
$titles['NoExport'] = PMA\libraries\Util::getIcon('bd_export.png', __('Export'));
|
||||
$titles['Execute'] = PMA\libraries\Util::getIcon('b_nextpage.png', __('Execute'));
|
||||
$titles['NoExecute'] = PMA\libraries\Util::getIcon('bd_nextpage.png', __('Execute'));
|
||||
$titles['Favorite'] = PMA\libraries\Util::getIcon('b_favorite.png', '');
|
||||
$titles['NoFavorite'] = PMA\libraries\Util::getIcon('b_no_favorite.png', '');
|
||||
|
||||
$this->assertEquals($titles, PMA\libraries\Util::buildActionTitles());
|
||||
|
||||
}
|
||||
}
|
||||
136
#pma/test/libraries/common/PMA_cache_test.php
Normal file
136
#pma/test/libraries/common/PMA_cache_test.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for caching data in session
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for caching data in session
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_Cache_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* @var array temporary variable for globals array
|
||||
*/
|
||||
protected $tmpGlobals;
|
||||
|
||||
/**
|
||||
* @var array temporary variable for session array
|
||||
*/
|
||||
protected $tmpSession;
|
||||
|
||||
/**
|
||||
* storing globals and session
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$this->tmpGlobals = $GLOBALS;
|
||||
$this->tmpSession = $_SESSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if cached data is available after set
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testCacheExists()
|
||||
{
|
||||
$GLOBALS['server'] = 'server';
|
||||
PMA\libraries\Util::cacheSet('test_data', 5);
|
||||
PMA\libraries\Util::cacheSet('test_data_2', 5);
|
||||
|
||||
$this->assertTrue(PMA\libraries\Util::cacheExists('test_data'));
|
||||
$this->assertTrue(PMA\libraries\Util::cacheExists('test_data_2'));
|
||||
$this->assertFalse(PMA\libraries\Util::cacheExists('fake_data_2'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if PMA\libraries\Util::cacheGet does not return data for non existing cache entries
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testCacheGet()
|
||||
{
|
||||
$GLOBALS['server'] = 'server';
|
||||
PMA\libraries\Util::cacheSet('test_data', 5);
|
||||
PMA\libraries\Util::cacheSet('test_data_2', 5);
|
||||
|
||||
$this->assertNotNull(PMA\libraries\Util::cacheGet('test_data'));
|
||||
$this->assertNotNull(PMA\libraries\Util::cacheGet('test_data_2'));
|
||||
$this->assertNull(PMA\libraries\Util::cacheGet('fake_data_2'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test retrieval of cached data
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testCacheSetGet()
|
||||
{
|
||||
$GLOBALS['server'] = 'server';
|
||||
PMA\libraries\Util::cacheSet('test_data', 25);
|
||||
|
||||
PMA\libraries\Util::cacheSet('test_data', 5);
|
||||
$this->assertEquals(5, $_SESSION['cache']['server_server']['test_data']);
|
||||
PMA\libraries\Util::cacheSet('test_data_3', 3);
|
||||
$this->assertEquals(3, $_SESSION['cache']['server_server']['test_data_3']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test clearing cached values
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testCacheUnSet()
|
||||
{
|
||||
$GLOBALS['server'] = 'server';
|
||||
PMA\libraries\Util::cacheSet('test_data', 25);
|
||||
PMA\libraries\Util::cacheSet('test_data_2', 25);
|
||||
|
||||
PMA\libraries\Util::cacheUnset('test_data');
|
||||
$this->assertArrayNotHasKey(
|
||||
'test_data',
|
||||
$_SESSION['cache']['server_server']
|
||||
);
|
||||
PMA\libraries\Util::cacheUnset('test_data_2');
|
||||
$this->assertArrayNotHasKey(
|
||||
'test_data_2',
|
||||
$_SESSION['cache']['server_server']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test clearing user cache
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testClearUserCache()
|
||||
{
|
||||
$GLOBALS['server'] = 'server';
|
||||
PMA\libraries\Util::cacheSet('is_superuser', 'yes');
|
||||
$this->assertEquals(
|
||||
'yes',
|
||||
$_SESSION['cache']['server_server']['is_superuser']
|
||||
);
|
||||
|
||||
PMA\libraries\Util::clearUserCache();
|
||||
$this->assertArrayNotHasKey(
|
||||
'is_superuser',
|
||||
$_SESSION['cache']['server_server']
|
||||
);
|
||||
}
|
||||
}
|
||||
76
#pma/test/libraries/common/PMA_checkParameters_test.php
Normal file
76
#pma/test/libraries/common/PMA_checkParameters_test.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::checkParameters from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::checkParameters from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_CheckParameters_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setup()
|
||||
{
|
||||
$GLOBALS['PMA_Config'] = new PMA\libraries\Config();
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$GLOBALS['cfg'] = array('ServerDefault' => 1);
|
||||
$GLOBALS['pmaThemeImage'] = 'theme/';
|
||||
$GLOBALS['text_dir'] = 'ltr';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for checkParameters
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testCheckParameterMissing()
|
||||
{
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['pmaThemePath'] = $_SESSION['PMA_Theme']->getPath();
|
||||
|
||||
$this->expectOutputRegex("/Missing parameter: field/");
|
||||
|
||||
PMA\libraries\Util::checkParameters(
|
||||
array('db', 'table', 'field')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for checkParameters
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testCheckParameter()
|
||||
{
|
||||
$GLOBALS['PMA_PHP_SELF'] = PMA_getenv('PHP_SELF');
|
||||
$GLOBALS['pmaThemePath'] = $_SESSION['PMA_Theme']->getPath();
|
||||
$GLOBALS['db'] = "dbDatabase";
|
||||
$GLOBALS['table'] = "tblTable";
|
||||
$GLOBALS['field'] = "test_field";
|
||||
$GLOBALS['sql_query'] = "SELECT * FROM tblTable;";
|
||||
|
||||
$this->expectOutputString("");
|
||||
PMA\libraries\Util::checkParameters(
|
||||
array('db', 'table', 'field', 'sql_query')
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::containsNonPrintableAscii from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::containsNonPrintableAscii from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_ContainsNonPrintableAsciiTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* data provider for testContainsNonPrintableAscii
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function dataProvider()
|
||||
{
|
||||
return array(
|
||||
array("normal string", 0),
|
||||
array("new\nline", 1),
|
||||
array("tab\tspace", 1),
|
||||
array("escape" . chr(27) . "char", 1),
|
||||
array("chars%$\r\n", 1),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for containsNonPrintableAscii
|
||||
*
|
||||
* @param string $str Value
|
||||
* @param bool $res Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider dataProvider
|
||||
*/
|
||||
public function testContainsNonPrintableAscii($str, $res)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$res, PMA\libraries\Util::containsNonPrintableAscii($str)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::convertBitDefaultValue from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::convertBitDefaultValue from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_ConvertBitDefaultValueTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Provider for testConvertBitDefaultValueTest
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @dataProvider dataProvider
|
||||
*/
|
||||
public function dataProvider()
|
||||
{
|
||||
return array(
|
||||
array("b'",""),
|
||||
array("b'01'","01"),
|
||||
array("b'010111010'","010111010")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for convertBitDefaultValue
|
||||
*
|
||||
* @param string $bit Value
|
||||
* @param string $val Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider dataProvider
|
||||
*/
|
||||
public function testConvertBitDefaultValueTest($bit, $val)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$val, PMA\libraries\Util::convertBitDefaultValue($bit)
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
75
#pma/test/libraries/common/PMA_escapeMySqlWildcards_test.php
Normal file
75
#pma/test/libraries/common/PMA_escapeMySqlWildcards_test.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for MySQL Wildcards escaping/unescaping
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for MySQL Wildcards escaping/unescaping
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_EscapeMySqlWildcardsTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* data provider for testEscape and testUnEscape
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function escapeDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('\_test', '_test'),
|
||||
array('\_\\', '_\\'),
|
||||
array('\\_\%', '_%'),
|
||||
array('\\\_', '\_'),
|
||||
array('\\\_\\\%', '\_\%'),
|
||||
array('\_\\%\_\_\%', '_%__%'),
|
||||
array('\%\_', '%_'),
|
||||
array('\\\%\\\_', '\%\_')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* PMA\libraries\Util::escapeMysqlWildcards tests
|
||||
*
|
||||
* @param string $a String to escape
|
||||
* @param string $b Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider escapeDataProvider
|
||||
*/
|
||||
public function testEscape($a, $b)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$a, PMA\libraries\Util::escapeMysqlWildcards($b)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* PMA\libraries\Util::unescapeMysqlWildcards tests
|
||||
*
|
||||
* @param string $a String to escape
|
||||
* @param string $b Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider escapeDataProvider
|
||||
*/
|
||||
public function testUnEscape($a, $b)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$b, PMA\libraries\Util::unescapeMysqlWildcards($a)
|
||||
);
|
||||
}
|
||||
}
|
||||
98
#pma/test/libraries/common/PMA_expandUserString_test.php
Normal file
98
#pma/test/libraries/common/PMA_expandUserString_test.php
Normal file
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::expandUserString from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::expandUserString function.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ExpandUserString_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Setup variables needed by test.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
$GLOBALS['PMA_Config'] = new PMA\libraries\Config();
|
||||
$GLOBALS['PMA_Config']->enableBc();
|
||||
$GLOBALS['cfg'] = array(
|
||||
'Server' => array(
|
||||
'host' => 'host&',
|
||||
'verbose' => 'verbose',
|
||||
)
|
||||
);
|
||||
$GLOBALS['db'] = 'database';
|
||||
$GLOBALS['table'] = 'table';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test case for expanding strings
|
||||
*
|
||||
* @param string $in string to evaluate
|
||||
* @param string $out expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provider
|
||||
*/
|
||||
public function testExpand($in, $out)
|
||||
{
|
||||
$out = str_replace('PMA_VERSION', PMA_VERSION, $out);
|
||||
$this->assertEquals(
|
||||
$out, PMA\libraries\Util::expandUserString($in)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test case for expanding strings with escaping
|
||||
*
|
||||
* @param string $in string to evaluate
|
||||
* @param string $out expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provider
|
||||
*/
|
||||
public function testExpandEscape($in, $out)
|
||||
{
|
||||
$out = str_replace('PMA_VERSION', PMA_VERSION, $out);
|
||||
$this->assertEquals(
|
||||
htmlspecialchars($out),
|
||||
PMA\libraries\Util::expandUserString(
|
||||
$in, 'htmlspecialchars'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provider()
|
||||
{
|
||||
return array(
|
||||
array('@SERVER@', 'host&'),
|
||||
array('@VSERVER@', 'verbose'),
|
||||
array('@DATABASE@', 'database'),
|
||||
array('@TABLE@', 'table'),
|
||||
array('@IGNORE@', '@IGNORE@'),
|
||||
array('@PHPMYADMIN@', 'phpMyAdmin PMA_VERSION'),
|
||||
);
|
||||
}
|
||||
}
|
||||
164
#pma/test/libraries/common/PMA_extractColumnSpec_test.php
Normal file
164
#pma/test/libraries/common/PMA_extractColumnSpec_test.php
Normal file
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::extractColumnSpec from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::extractColumnSpec function.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ExtractColumnSpec_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
$GLOBALS['cfg']['LimitChars'] = 1000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test case for parsing SHOW COLUMNS output
|
||||
*
|
||||
* @param string $in Column specification
|
||||
* @param array $out Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provider
|
||||
*/
|
||||
public function testParsing($in, $out)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$out, PMA\libraries\Util::extractColumnSpec($in)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provider()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
"SET('a','b')",
|
||||
array(
|
||||
'type' => 'set',
|
||||
'print_type' => "set('a', 'b')",
|
||||
'binary' => false,
|
||||
'unsigned' => false,
|
||||
'zerofill' => false,
|
||||
'spec_in_brackets' => "'a','b'",
|
||||
'enum_set_values' => array('a', 'b'),
|
||||
'attribute' => ' ',
|
||||
'can_contain_collation' => true,
|
||||
'displayed_type' => "set('a', 'b')"
|
||||
),
|
||||
),
|
||||
array(
|
||||
"SET('\'a','b')",
|
||||
array(
|
||||
'type' => 'set',
|
||||
'print_type' => "set('\'a', 'b')",
|
||||
'binary' => false,
|
||||
'unsigned' => false,
|
||||
'zerofill' => false,
|
||||
'spec_in_brackets' => "'\'a','b'",
|
||||
'enum_set_values' => array("'a", 'b'),
|
||||
'attribute' => ' ',
|
||||
'can_contain_collation' => true,
|
||||
'displayed_type' => "set('\'a', 'b')"
|
||||
),
|
||||
),
|
||||
array(
|
||||
"SET('''a','b')",
|
||||
array(
|
||||
'type' => 'set',
|
||||
'print_type' => "set('''a', 'b')",
|
||||
'binary' => false,
|
||||
'unsigned' => false,
|
||||
'zerofill' => false,
|
||||
'spec_in_brackets' => "'''a','b'",
|
||||
'enum_set_values' => array("'a", 'b'),
|
||||
'attribute' => ' ',
|
||||
'can_contain_collation' => true,
|
||||
'displayed_type' => "set('''a', 'b')"
|
||||
),
|
||||
),
|
||||
array(
|
||||
"ENUM('a&b', 'b''c\\'d', 'e\\\\f')",
|
||||
array(
|
||||
'type' => 'enum',
|
||||
'print_type' => "enum('a&b', 'b''c\\'d', 'e\\\\f')",
|
||||
'binary' => false,
|
||||
'unsigned' => false,
|
||||
'zerofill' => false,
|
||||
'spec_in_brackets' => "'a&b', 'b''c\\'d', 'e\\\\f'",
|
||||
'enum_set_values' => array('a&b', 'b\'c\'d', 'e\\f'),
|
||||
'attribute' => ' ',
|
||||
'can_contain_collation' => true,
|
||||
'displayed_type' => "enum('a&b', 'b''c\\'d', 'e\\\\f')"
|
||||
),
|
||||
),
|
||||
array(
|
||||
"INT UNSIGNED zerofill",
|
||||
array(
|
||||
'type' => 'int',
|
||||
'print_type' => 'int',
|
||||
'binary' => false,
|
||||
'unsigned' => true,
|
||||
'zerofill' => true,
|
||||
'spec_in_brackets' => '',
|
||||
'enum_set_values' => array(),
|
||||
'attribute' => 'UNSIGNED ZEROFILL',
|
||||
'can_contain_collation' => false,
|
||||
'displayed_type' => "int"
|
||||
),
|
||||
),
|
||||
array(
|
||||
"VARCHAR(255)",
|
||||
array(
|
||||
'type' => 'varchar',
|
||||
'print_type' => 'varchar(255)',
|
||||
'binary' => false,
|
||||
'unsigned' => false,
|
||||
'zerofill' => false,
|
||||
'spec_in_brackets' => '255',
|
||||
'enum_set_values' => array(),
|
||||
'attribute' => ' ',
|
||||
'can_contain_collation' => true,
|
||||
'displayed_type' => "varchar(255)"
|
||||
),
|
||||
),
|
||||
array(
|
||||
"VARBINARY(255)",
|
||||
array(
|
||||
'type' => 'varbinary',
|
||||
'print_type' => 'varbinary(255)',
|
||||
'binary' => false,
|
||||
'unsigned' => false,
|
||||
'zerofill' => false,
|
||||
'spec_in_brackets' => '255',
|
||||
'enum_set_values' => array(),
|
||||
'attribute' => ' ',
|
||||
'can_contain_collation' => false,
|
||||
'displayed_type' => "varbinary(255)"
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::extractValueFromFormattedSize from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::extractValueFromFormattedSize from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_ExtractValueFromFormattedSize_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for extractValueFromFormattedSize
|
||||
*
|
||||
* @param int|string $size Size
|
||||
* @param int $expected Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provider
|
||||
*/
|
||||
function testExtractValueFromFormattedSize($size, $expected)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
PMA\libraries\Util::extractValueFromFormattedSize($size)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testExtractValueFromFormattedSize
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provider()
|
||||
{
|
||||
return array(
|
||||
array(100, -1),
|
||||
array("10GB", 10737418240),
|
||||
array("15MB", 15728640),
|
||||
array("256K", 262144)
|
||||
);
|
||||
}
|
||||
}
|
||||
53
#pma/test/libraries/common/PMA_foreignKeySupported_test.php
Normal file
53
#pma/test/libraries/common/PMA_foreignKeySupported_test.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for supporting foreign key
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for supporting foreign key
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_IsForeignKeySupportedTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* data provider for foreign key supported test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function foreignkeySupportedDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('MyISAM', false),
|
||||
array('innodb', true),
|
||||
array('pBxT', true)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* foreign key supported test
|
||||
*
|
||||
* @param string $a Engine
|
||||
* @param bool $e Expected Value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider foreignkeySupportedDataProvider
|
||||
*/
|
||||
public function testForeignkeySupported($a, $e)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$e, PMA\libraries\Util::isForeignKeySupported($a)
|
||||
);
|
||||
}
|
||||
}
|
||||
169
#pma/test/libraries/common/PMA_formatNumberByteDown_test.php
Normal file
169
#pma/test/libraries/common/PMA_formatNumberByteDown_test.php
Normal file
@@ -0,0 +1,169 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for format number and byte
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for format number and byte
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_FormatNumberByteDown_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* temporary variable for globals array
|
||||
*/
|
||||
protected $tmpGlobals;
|
||||
|
||||
/**
|
||||
* temporary variable for session array
|
||||
*/
|
||||
protected $tmpSession;
|
||||
|
||||
/**
|
||||
* storing globals and session
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$this->tmpGlobals = $GLOBALS;
|
||||
$this->tmpSession = $_SESSION;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* recovering globals and session
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function tearDown()
|
||||
{
|
||||
$GLOBALS = $this->tmpGlobals;
|
||||
$_SESSION = $this->tmpSession;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* format number data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function formatNumberDataProvider()
|
||||
{
|
||||
return array(
|
||||
array(10, 2, 2, '10 '),
|
||||
array(100, 2, 0, '100 '),
|
||||
array(100, 2, 2, '100 '),
|
||||
array(-1000.454, 4, 2, '-1,000.45 '),
|
||||
array(0.00003, 3, 2, '30 µ'),
|
||||
array(0.003, 3, 3, '3 m'),
|
||||
array(-0.003, 6, 0, '-3,000 µ'),
|
||||
array(100.98, 0, 2, '100.98'),
|
||||
array(21010101, 0, 2, '21,010,101.00'),
|
||||
array(20000, 2, 2, '20 k'),
|
||||
array(20011, 2, 2, '20.01 k'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Core test for formatNumber
|
||||
*
|
||||
*
|
||||
* @param float $a Value to format
|
||||
* @param int $b Sensitiveness
|
||||
* @param int $c Number of decimals to retain
|
||||
* @param array $d Expected value
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function assertFormatNumber($a, $b, $c, $d)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$d,
|
||||
(string) PMA\libraries\Util::formatNumber(
|
||||
$a, $b, $c, false
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* format number test, globals are defined
|
||||
*
|
||||
* @param float $a Value to format
|
||||
* @param int $b Sensitiveness
|
||||
* @param int $c Number of decimals to retain
|
||||
* @param array $d Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider formatNumberDataProvider
|
||||
*/
|
||||
public function testFormatNumber($a, $b, $c, $d)
|
||||
{
|
||||
$this->assertFormatNumber($a, $b, $c, $d);
|
||||
|
||||
// Test with various precisions
|
||||
$old_precision = ini_get('precision');
|
||||
ini_set('precision', 20);
|
||||
$this->assertFormatNumber($a, $b, $c, $d);
|
||||
ini_set('precision', 14);
|
||||
$this->assertFormatNumber($a, $b, $c, $d);
|
||||
ini_set('precision', 10);
|
||||
$this->assertFormatNumber($a, $b, $c, $d);
|
||||
ini_set('precision', 5);
|
||||
$this->assertFormatNumber($a, $b, $c, $d);
|
||||
ini_set('precision', -1);
|
||||
$this->assertFormatNumber($a, $b, $c, $d);
|
||||
ini_set('precision', $old_precision);
|
||||
}
|
||||
|
||||
/**
|
||||
* format byte down data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function formatByteDownDataProvider()
|
||||
{
|
||||
return array(
|
||||
array(10, 2, 2, array('10', __('B'))),
|
||||
array(100, 2, 0, array('0', __('KiB'))),
|
||||
array(100, 3, 0, array('100', __('B'))),
|
||||
array(100, 2, 2, array('0.10', __('KiB'))),
|
||||
array(1034, 3, 2, array('1.01', __('KiB'))),
|
||||
array(100233, 3, 3, array('97.884', __('KiB'))),
|
||||
array(2206451, 1, 2, array('2.10', __('MiB'))),
|
||||
array(21474836480, 4, 0, array('20', __('GiB'))),
|
||||
array(doubleval(52) + doubleval(2048), 3, 1, array('2.1', 'KiB')),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* format byte test, globals are defined
|
||||
*
|
||||
* @param float $a Value to format
|
||||
* @param int $b Sensitiveness
|
||||
* @param int $c Number of decimals to retain
|
||||
* @param array $e Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider formatByteDownDataProvider
|
||||
*/
|
||||
public function testFormatByteDown($a, $b, $c, $e)
|
||||
{
|
||||
$result = PMA\libraries\Util::formatByteDown($a, $b, $c);
|
||||
$result[0] = trim($result[0]);
|
||||
$this->assertEquals($e, $result);
|
||||
}
|
||||
}
|
||||
55
#pma/test/libraries/common/PMA_formatSql_test.php
Normal file
55
#pma/test/libraries/common/PMA_formatSql_test.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::formatSql from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::formatSql from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_FormatSql_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for formatSql
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testFormatSQL()
|
||||
{
|
||||
|
||||
$this->assertEquals(
|
||||
'<code class="sql"><pre>' . "\n"
|
||||
. 'SELECT 1 < 2' . "\n"
|
||||
. '</pre></code>',
|
||||
PMA\libraries\Util::formatSql('SELECT 1 < 2')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for formatSql
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testFormatSQLTruncate()
|
||||
{
|
||||
$GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 6;
|
||||
|
||||
$this->assertEquals(
|
||||
'<code class="sql"><pre>' . "\n"
|
||||
. 'SELECT[...]' . "\n"
|
||||
. '</pre></code>',
|
||||
PMA\libraries\Util::formatSql('SELECT 1 < 2', true)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::generateHiddenMaxFileSize from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::generateHiddenMaxFileSize from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GenerateHiddenMaxFileSize_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Data provider for test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function dataProvider()
|
||||
{
|
||||
return array(
|
||||
array(10),
|
||||
array("100"),
|
||||
array(1024),
|
||||
array("1024Mb"),
|
||||
array(2147483648),
|
||||
array("some_string")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for generateHiddenMaxFileSize
|
||||
*
|
||||
* @param int $size Size
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider dataProvider
|
||||
*/
|
||||
function testGenerateHiddenMaxFileSize($size)
|
||||
{
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::generateHiddenMaxFileSize($size),
|
||||
'<input type="hidden" name="MAX_FILE_SIZE" value="' . $size . '" />'
|
||||
);
|
||||
}
|
||||
}
|
||||
94
#pma/test/libraries/common/PMA_getCheckbox_test.php
Normal file
94
#pma/test/libraries/common/PMA_getCheckbox_test.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getCheckbox from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getCheckbox from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetCheckboxTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for getCheckbox
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetCheckbox()
|
||||
{
|
||||
$name = "test_display_html_checkbox";
|
||||
$label = "text_label_for_checkbox";
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getCheckbox($name, $label, false, false, $name),
|
||||
'<input type="checkbox" name="' . $name . '" id="' . $name
|
||||
. '" /><label for="' . $name . '">' . $label
|
||||
. '</label>'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getCheckbox
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetCheckboxChecked()
|
||||
{
|
||||
$name = "test_display_html_checkbox";
|
||||
$label = "text_label_for_checkbox";
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getCheckbox($name, $label, true, false, $name),
|
||||
'<input type="checkbox" name="' . $name . '" id="' . $name
|
||||
. '" checked="checked" /><label for="' . $name . '">' . $label
|
||||
. '</label>'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getCheckbox
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetCheckboxOnclick()
|
||||
{
|
||||
$name = "test_display_html_checkbox";
|
||||
$label = "text_label_for_checkbox";
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getCheckbox($name, $label, false, true, $name),
|
||||
'<input type="checkbox" name="' . $name . '" id="' . $name
|
||||
. '" class="autosubmit" /><label for="' . $name . '">' . $label
|
||||
. '</label>'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getCheckbox
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetCheckboxCheckedOnclick()
|
||||
{
|
||||
$name = "test_display_html_checkbox";
|
||||
$label = "text_label_for_checkbox";
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getCheckbox($name, $label, true, true, $name),
|
||||
'<input type="checkbox" name="' . $name . '" id="' . $name
|
||||
. '" checked="checked" class="autosubmit" /><label for="' . $name
|
||||
. '">' . $label . '</label>'
|
||||
);
|
||||
}
|
||||
}
|
||||
118
#pma/test/libraries/common/PMA_getDbLink_test.php
Normal file
118
#pma/test/libraries/common/PMA_getDbLink_test.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA_getDbLink_test from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
/**
|
||||
* Test for PMA_getDbLink_test from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetDbLink_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setUp()
|
||||
{
|
||||
global $cfg;
|
||||
include 'libraries/config.default.php';
|
||||
$GLOBALS['server'] = 99;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getDbLink
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @group medium
|
||||
*/
|
||||
function testGetDbLinkEmpty()
|
||||
{
|
||||
$GLOBALS['db'] = null;
|
||||
$this->assertEmpty(PMA\libraries\Util::getDbLink());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getDbLink
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @group medium
|
||||
*/
|
||||
function testGetDbLinkNull()
|
||||
{
|
||||
global $cfg;
|
||||
$GLOBALS['db'] = 'test_db';
|
||||
$database = $GLOBALS['db'];
|
||||
$this->assertEquals(
|
||||
'<a href="'
|
||||
. PMA\libraries\Util::getScriptNameForOption(
|
||||
$GLOBALS['cfg']['DefaultTabDatabase'], 'database'
|
||||
)
|
||||
. '?db=' . $database
|
||||
. '&server=99&lang=en&token=token" '
|
||||
. 'title="Jump to database "'
|
||||
. htmlspecialchars($database) . '".">'
|
||||
. htmlspecialchars($database) . '</a>',
|
||||
PMA\libraries\Util::getDbLink()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getDbLink
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDbLink()
|
||||
{
|
||||
global $cfg;
|
||||
$database = 'test_database';
|
||||
$this->assertEquals(
|
||||
'<a href="' . PMA\libraries\Util::getScriptNameForOption(
|
||||
$GLOBALS['cfg']['DefaultTabDatabase'], 'database'
|
||||
)
|
||||
. '?db=' . $database
|
||||
. '&server=99&lang=en&token=token" title="Jump to database "'
|
||||
. htmlspecialchars($database) . '".">'
|
||||
. htmlspecialchars($database) . '</a>',
|
||||
PMA\libraries\Util::getDbLink($database)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getDbLink
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDbLinkWithSpecialChars()
|
||||
{
|
||||
global $cfg;
|
||||
$database = 'test&data\'base';
|
||||
$this->assertEquals(
|
||||
'<a href="'
|
||||
. PMA\libraries\Util::getScriptNameForOption(
|
||||
$GLOBALS['cfg']['DefaultTabDatabase'], 'database'
|
||||
)
|
||||
. '?db='
|
||||
. htmlspecialchars(urlencode($database))
|
||||
. '&server=99&lang=en&token=token" title="Jump to database "'
|
||||
. htmlspecialchars($database) . '".">'
|
||||
. htmlspecialchars($database) . '</a>',
|
||||
PMA\libraries\Util::getDbLink($database)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getDivForSliderEffect from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getDivForSliderEffect from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetDivForSliderEffectTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for getDivForSliderEffect
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDivForSliderEffectTest()
|
||||
{
|
||||
global $cfg;
|
||||
$cfg['InitialSlidersState'] = 'undefined';
|
||||
|
||||
$id = "test_id";
|
||||
$message = "test_message";
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getDivForSliderEffect($id, $message),
|
||||
'<div id="' . $id . '" class="pma_auto_slider" title="'
|
||||
. htmlspecialchars($message) . '">'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getDivForSliderEffect
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDivForSliderEffectTestClosed()
|
||||
{
|
||||
global $cfg;
|
||||
$cfg['InitialSlidersState'] = 'closed';
|
||||
|
||||
$id = "test_id";
|
||||
$message = "test_message";
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getDivForSliderEffect($id, $message),
|
||||
'<div id="' . $id . '" style="display: none; overflow:auto;" '
|
||||
. 'class="pma_auto_slider" title="' . htmlspecialchars($message) . '">'
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getDivForSliderEffect
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDivForSliderEffectTestDisabled()
|
||||
{
|
||||
global $cfg;
|
||||
$cfg['InitialSlidersState'] = 'disabled';
|
||||
|
||||
$id = "test_id";
|
||||
$message = "test_message";
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getDivForSliderEffect($id, $message),
|
||||
'<div id="' . $id . '">'
|
||||
);
|
||||
}
|
||||
}
|
||||
107
#pma/test/libraries/common/PMA_getDropdown_test.php
Normal file
107
#pma/test/libraries/common/PMA_getDropdown_test.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getDropdown from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getDropdown from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetDropdownTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for getDropdown
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDropdownEmpty()
|
||||
{
|
||||
$name = "test_dropdown_name";
|
||||
$choices = array();
|
||||
$active_choice = null;
|
||||
$id = "test_<dropdown>_name";
|
||||
|
||||
$result = '<select name="' . htmlspecialchars($name) . '" id="'
|
||||
. htmlspecialchars($id) . '"></select>';
|
||||
|
||||
$this->assertEquals(
|
||||
$result,
|
||||
PMA\libraries\Util::getDropdown(
|
||||
$name, $choices, $active_choice, $id
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getDropdown
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDropdown()
|
||||
{
|
||||
$name = "&test_dropdown_name";
|
||||
$choices = array("value_1" => "label_1", "value&_2\"" => "label_2");
|
||||
$active_choice = null;
|
||||
$id = "test_<dropdown>_name";
|
||||
|
||||
$result = '<select name="' . htmlspecialchars($name) . '" id="'
|
||||
. htmlspecialchars($id) . '">';
|
||||
foreach ($choices as $one_choice_value => $one_choice_label) {
|
||||
$result .= '<option value="' . htmlspecialchars($one_choice_value) . '"';
|
||||
if ($one_choice_value == $active_choice) {
|
||||
$result .= ' selected="selected"';
|
||||
}
|
||||
$result .= '>' . htmlspecialchars($one_choice_label) . '</option>';
|
||||
}
|
||||
$result .= '</select>';
|
||||
|
||||
$this->assertEquals(
|
||||
$result,
|
||||
PMA\libraries\Util::getDropdown(
|
||||
$name, $choices, $active_choice, $id
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getDropdown
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetDropdownWithActive()
|
||||
{
|
||||
$name = "&test_dropdown_name";
|
||||
$choices = array("value_1" => "label_1", "value&_2\"" => "label_2");
|
||||
$active_choice = "value&_2\"";
|
||||
$id = "test_<dropdown>_name";
|
||||
|
||||
$result = '<select name="' . htmlspecialchars($name) . '" id="'
|
||||
. htmlspecialchars($id) . '">';
|
||||
foreach ($choices as $one_choice_value => $one_choice_label) {
|
||||
$result .= '<option value="' . htmlspecialchars($one_choice_value) . '"';
|
||||
if ($one_choice_value == $active_choice) {
|
||||
$result .= ' selected="selected"';
|
||||
}
|
||||
$result .= '>' . htmlspecialchars($one_choice_label) . '</option>';
|
||||
}
|
||||
$result .= '</select>';
|
||||
|
||||
$this->assertEquals(
|
||||
$result,
|
||||
PMA\libraries\Util::getDropdown(
|
||||
$name, $choices, $active_choice, $id
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getFormattedMaximumUploadSize from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getFormattedMaximumUploadSize from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetFormattedMaximumUploadSize_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Data provider for test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function dataProvider()
|
||||
{
|
||||
return array(
|
||||
array(10, __('B'), "10"),
|
||||
array(100, __('B'), "100"),
|
||||
array(1024, __('B'), "1,024"),
|
||||
array(102400, __('KiB'), "100"),
|
||||
array(10240000, __('MiB'), "10"),
|
||||
array(2147483648, __('MiB'), "2,048"),
|
||||
array(21474836480, __('GiB'), "20")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA\libraries\Util::getFormattedMaximumUploadSize
|
||||
*
|
||||
* @param int $size Size
|
||||
* @param string $unit Unit
|
||||
* @param string $res Result
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider dataProvider
|
||||
*/
|
||||
function testMaximumUploadSize($size, $unit, $res)
|
||||
{
|
||||
$this->assertEquals(
|
||||
"(" . __('Max: ') . $res . $unit . ")",
|
||||
PMA\libraries\Util::getFormattedMaximumUploadSize($size)
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
104
#pma/test/libraries/common/PMA_getIcon_test.php
Normal file
104
#pma/test/libraries/common/PMA_getIcon_test.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getIcon() from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getIcon() from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetIcon_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setup()
|
||||
{
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getIcon
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetIconWithoutActionLinksMode()
|
||||
{
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'text';
|
||||
|
||||
$this->assertEquals(
|
||||
'<span class="nowrap"></span>',
|
||||
PMA\libraries\Util::getIcon('b_comment.png')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getIcon
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetIconWithActionLinksMode()
|
||||
{
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
||||
|
||||
$this->assertEquals(
|
||||
'<span class="nowrap"><img src="themes/dot.gif" title="" alt="" class="icon ic_b_comment" /></span>',
|
||||
PMA\libraries\Util::getIcon('b_comment.png')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getIcon
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetIconAlternate()
|
||||
{
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
||||
$alternate_text = 'alt_str';
|
||||
|
||||
$this->assertEquals(
|
||||
'<span class="nowrap"><img src="themes/dot.gif" title="'
|
||||
. $alternate_text . '" alt="' . $alternate_text
|
||||
. '" class="icon ic_b_comment" /></span>',
|
||||
PMA\libraries\Util::getIcon('b_comment.png', $alternate_text)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getIcon
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetIconWithForceText()
|
||||
{
|
||||
$GLOBALS['cfg']['ActionLinksMode'] = 'icons';
|
||||
$alternate_text = 'alt_str';
|
||||
|
||||
// Here we are checking for an icon embedded inside a span (i.e not a menu
|
||||
// bar icon
|
||||
$this->assertEquals(
|
||||
'<span class="nowrap"><img src="themes/dot.gif" title="'
|
||||
. $alternate_text . '" alt="' . $alternate_text
|
||||
. '" class="icon ic_b_comment" /> ' . $alternate_text . '</span>',
|
||||
PMA\libraries\Util::getIcon('b_comment.png', $alternate_text, true, false)
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
275
#pma/test/libraries/common/PMA_getRadioFields_test.php
Normal file
275
#pma/test/libraries/common/PMA_getRadioFields_test.php
Normal file
@@ -0,0 +1,275 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getRadioFields from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getRadioFields from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetRadioFieldsTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for getRadioFields
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetRadioFieldsEmpty()
|
||||
{
|
||||
$name = "test_display_radio";
|
||||
$choices = array();
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getRadioFields($name, $choices),
|
||||
""
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getRadioFields
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetRadioFields()
|
||||
{
|
||||
$name = "test_display_radio";
|
||||
$choices = array('value_1'=>'choice_1', 'value_2'=>'choice_2');
|
||||
|
||||
$out = "";
|
||||
foreach ($choices as $choice_value => $choice_label) {
|
||||
$html_field_id = $name . '_' . $choice_value;
|
||||
$out .= '<input type="radio" name="' . $name . '" id="' . $html_field_id
|
||||
. '" value="' . htmlspecialchars($choice_value) . '"';
|
||||
$out .= ' />' . "\n";
|
||||
$out .= '<label for="' . $html_field_id . '">' . $choice_label
|
||||
. '</label>';
|
||||
$out .= '<br />';
|
||||
$out .= "\n";
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getRadioFields($name, $choices),
|
||||
$out
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getRadioFields
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetRadioFieldsWithChecked()
|
||||
{
|
||||
$name = "test_display_radio";
|
||||
$choices = array('value_1'=>'choice_1', 'value_2'=>'choice_2');
|
||||
$checked_choice = "value_2";
|
||||
|
||||
$out = "";
|
||||
foreach ($choices as $choice_value => $choice_label) {
|
||||
$html_field_id = $name . '_' . $choice_value;
|
||||
$out .= '<input type="radio" name="' . $name . '" id="' . $html_field_id
|
||||
. '" value="' . htmlspecialchars($choice_value) . '"';
|
||||
if ($choice_value == $checked_choice) {
|
||||
$out .= ' checked="checked"';
|
||||
}
|
||||
$out .= ' />' . "\n";
|
||||
$out .= '<label for="' . $html_field_id . '">' . $choice_label
|
||||
. '</label>';
|
||||
$out .= '<br />';
|
||||
$out .= "\n";
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getRadioFields(
|
||||
$name, $choices, $checked_choice
|
||||
),
|
||||
$out
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getRadioFields
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetRadioFieldsWithCheckedWithClass()
|
||||
{
|
||||
$name = "test_display_radio";
|
||||
$choices = array('value_1'=>'choice_1', 'value_2'=>'choice_2');
|
||||
$checked_choice = "value_2";
|
||||
$class = "test_class";
|
||||
|
||||
$out = "";
|
||||
foreach ($choices as $choice_value => $choice_label) {
|
||||
$html_field_id = $name . '_' . $choice_value;
|
||||
$out .= '<div class="' . $class . '">';
|
||||
$out .= '<input type="radio" name="' . $name . '" id="' . $html_field_id
|
||||
. '" value="' . htmlspecialchars($choice_value) . '"';
|
||||
if ($choice_value == $checked_choice) {
|
||||
$out .= ' checked="checked"';
|
||||
}
|
||||
$out .= ' />' . "\n";
|
||||
$out .= '<label for="' . $html_field_id . '">' . $choice_label
|
||||
. '</label>';
|
||||
$out .= '<br />';
|
||||
$out .= '</div>';
|
||||
$out .= "\n";
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getRadioFields(
|
||||
$name, $choices, $checked_choice, true, false, $class
|
||||
),
|
||||
$out
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getRadioFields
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetRadioFieldsWithoutBR()
|
||||
{
|
||||
$name = "test_display_radio";
|
||||
$choices = array('value_1'=>'choice_1', 'value&_<2>'=>'choice_2');
|
||||
$checked_choice = "choice_2";
|
||||
|
||||
$out = "";
|
||||
foreach ($choices as $choice_value => $choice_label) {
|
||||
$html_field_id = $name . '_' . $choice_value;
|
||||
$out .= '<input type="radio" name="' . $name . '" id="' . $html_field_id
|
||||
. '" value="' . htmlspecialchars($choice_value) . '"';
|
||||
if ($choice_value == $checked_choice) {
|
||||
$out .= ' checked="checked"';
|
||||
}
|
||||
$out .= ' />' . "\n";
|
||||
$out .= '<label for="' . $html_field_id . '">' . $choice_label
|
||||
. '</label>';
|
||||
$out .= "\n";
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getRadioFields(
|
||||
$name, $choices, $checked_choice, false
|
||||
),
|
||||
$out
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getRadioFields
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetRadioFieldsEscapeLabelEscapeLabel()
|
||||
{
|
||||
$name = "test_display_radio";
|
||||
$choices = array('value_1'=>'choice_1', 'value_&2'=>'choice&_<2>');
|
||||
$checked_choice = "value_2";
|
||||
|
||||
$out = "";
|
||||
foreach ($choices as $choice_value => $choice_label) {
|
||||
$html_field_id = $name . '_' . $choice_value;
|
||||
$out .= '<input type="radio" name="' . $name . '" id="' . $html_field_id
|
||||
. '" value="' . htmlspecialchars($choice_value) . '"';
|
||||
if ($choice_value == $checked_choice) {
|
||||
$out .= ' checked="checked"';
|
||||
}
|
||||
$out .= ' />' . "\n";
|
||||
$out .= '<label for="' . $html_field_id . '">'
|
||||
. htmlspecialchars($choice_label) . '</label>';
|
||||
$out .= '<br />';
|
||||
$out .= "\n";
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getRadioFields(
|
||||
$name, $choices, $checked_choice, true, true
|
||||
),
|
||||
$out
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getRadioFields
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetRadioFieldsEscapeLabelNotEscapeLabel()
|
||||
{
|
||||
$name = "test_display_radio";
|
||||
$choices = array('value_1'=>'choice_1', 'value_&2'=>'choice&_<2>');
|
||||
$checked_choice = "value_2";
|
||||
|
||||
$out = "";
|
||||
foreach ($choices as $choice_value => $choice_label) {
|
||||
$html_field_id = $name . '_' . $choice_value;
|
||||
$out .= '<input type="radio" name="' . $name . '" id="' . $html_field_id
|
||||
. '" value="' . htmlspecialchars($choice_value) . '"';
|
||||
if ($choice_value == $checked_choice) {
|
||||
$out .= ' checked="checked"';
|
||||
}
|
||||
$out .= ' />' . "\n";
|
||||
$out .= '<label for="' . $html_field_id . '">' . $choice_label
|
||||
. '</label>';
|
||||
$out .= '<br />';
|
||||
$out .= "\n";
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getRadioFields(
|
||||
$name, $choices, $checked_choice, true, false
|
||||
),
|
||||
$out
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getRadioFields
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testGetRadioFieldsEscapeLabelEscapeLabelWithClass()
|
||||
{
|
||||
$name = "test_display_radio";
|
||||
$choices = array('value_1'=>'choice_1', 'value_&2'=>'choice&_<2>');
|
||||
$checked_choice = "value_2";
|
||||
$class = "test_class";
|
||||
|
||||
$out = "";
|
||||
foreach ($choices as $choice_value => $choice_label) {
|
||||
$html_field_id = $name . '_' . $choice_value;
|
||||
$out .= '<div class="' . $class . '">';
|
||||
$out .= '<input type="radio" name="' . $name . '" id="' . $html_field_id
|
||||
. '" value="' . htmlspecialchars($choice_value) . '"';
|
||||
if ($choice_value == $checked_choice) {
|
||||
$out .= ' checked="checked"';
|
||||
}
|
||||
$out .= ' />' . "\n";
|
||||
$out .= '<label for="' . $html_field_id . '">'
|
||||
. htmlspecialchars($choice_label) . '</label>';
|
||||
$out .= '<br />';
|
||||
$out .= '</div>';
|
||||
$out .= "\n";
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
PMA\libraries\Util::getRadioFields(
|
||||
$name, $choices, $checked_choice, true, true, $class
|
||||
),
|
||||
$out
|
||||
);
|
||||
}
|
||||
}
|
||||
60
#pma/test/libraries/common/PMA_getTitleForTarget_test.php
Normal file
60
#pma/test/libraries/common/PMA_getTitleForTarget_test.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getTitleForTarget from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getTitleForTarget from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_GetTitleForTarget_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Data provider for testGetTitleForTarget
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function dataProvider()
|
||||
{
|
||||
return array(
|
||||
array('tbl_structure.php', __('Structure')),
|
||||
array('tbl_sql.php', __('SQL'),),
|
||||
array('tbl_select.php', __('Search'),),
|
||||
array('tbl_change.php', __('Insert')),
|
||||
array('sql.php', __('Browse')),
|
||||
array('db_structure.php', __('Structure')),
|
||||
array('db_sql.php', __('SQL')),
|
||||
array('db_search.php', __('Search')),
|
||||
array('db_operations.php', __('Operations')),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for
|
||||
*
|
||||
* @param string $target Target
|
||||
* @param array $result Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider dataProvider
|
||||
*/
|
||||
function testGetTitleForTarget($target, $result)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$result, PMA\libraries\Util::getTitleForTarget($target)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
126
#pma/test/libraries/common/PMA_localisedDateTimespan_test.php
Normal file
126
#pma/test/libraries/common/PMA_localisedDateTimespan_test.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for generating localised date or timespan expression
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for generating localised date or timespan expression
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_LocalisedDateTimespan_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* temporary variable for globals array
|
||||
*/
|
||||
protected $tmpGlobals;
|
||||
|
||||
/**
|
||||
* temporary variable for session array
|
||||
*/
|
||||
protected $tmpSession;
|
||||
|
||||
/**
|
||||
* temporary variable for timezone info
|
||||
*/
|
||||
protected $tmpTimezone;
|
||||
|
||||
/**
|
||||
* storing globals and session
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$this->tmpGlobals = $GLOBALS;
|
||||
$this->tmpSession = $_SESSION;
|
||||
$this->tmpTimezone = date_default_timezone_get();
|
||||
date_default_timezone_set('Europe/London');
|
||||
}
|
||||
|
||||
/**
|
||||
* recovering globals and session
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function tearDown()
|
||||
{
|
||||
$GLOBALS = $this->tmpGlobals;
|
||||
$_SESSION = $this->tmpSession;
|
||||
date_default_timezone_set($this->tmpTimezone);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for localised date test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function localisedDateDataProvider()
|
||||
{
|
||||
return array(
|
||||
array(1227455558, '', 'Nov 23, 2008 at 03:52 PM'),
|
||||
array(1227455558, '%Y-%m-%d %H:%M:%S %a', '2008-11-23 15:52:38 Sun')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* localised date test, globals are defined
|
||||
*
|
||||
* @param string $a Current timestamp
|
||||
* @param string $b Format
|
||||
* @param string $e Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider localisedDateDataProvider
|
||||
*/
|
||||
public function testLocalisedDate($a, $b, $e)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$e, PMA\libraries\Util::localisedDate($a, $b)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for localised timestamp test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function timespanFormatDataProvider()
|
||||
{
|
||||
return array(
|
||||
array(1258, '0 days, 0 hours, 20 minutes and 58 seconds'),
|
||||
array(821958, '9 days, 12 hours, 19 minutes and 18 seconds')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* localised timestamp test, globals are defined
|
||||
*
|
||||
* @param int $a Timespan in seconds
|
||||
* @param string $e Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider timespanFormatDataProvider
|
||||
*/
|
||||
public function testTimespanFormat($a, $e)
|
||||
{
|
||||
$GLOBALS['timespanfmt'] = '%s days, %s hours, %s minutes and %s seconds';
|
||||
|
||||
$this->assertEquals(
|
||||
$e, PMA\libraries\Util::timespanFormat($a)
|
||||
);
|
||||
}
|
||||
}
|
||||
133
#pma/test/libraries/common/PMA_pow_test.php
Normal file
133
#pma/test/libraries/common/PMA_pow_test.php
Normal file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for PMA\libraries\Util::pow() function from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Tests for PMA\libraries\Util::pow() function from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_Pow_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test forpow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testIntOverflow()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'1267650600228229401496703205376',
|
||||
PMA\libraries\Util::pow(2, 100)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test forpow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testBcpow()
|
||||
{
|
||||
if (function_exists('bcpow')) {
|
||||
$this->assertEquals(
|
||||
'1267650600228229401496703205376',
|
||||
PMA\libraries\Util::pow(2, 100, 'bcpow')
|
||||
);
|
||||
} else {
|
||||
$this->markTestSkipped('function bcpow() does not exist');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test forpow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGmppow()
|
||||
{
|
||||
if (function_exists('gmp_pow')) {
|
||||
$this->assertEquals(
|
||||
'1267650600228229401496703205376',
|
||||
PMA\libraries\Util::pow(2, 100, 'gmp_pow')
|
||||
);
|
||||
} else {
|
||||
$this->markTestSkipped('function gmp_pow() does not exist');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test forpow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNegativeExp()
|
||||
{
|
||||
$this->assertEquals(
|
||||
0.25,
|
||||
PMA\libraries\Util::pow(2, -2)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test forpow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNegativeExpPow()
|
||||
{
|
||||
if (function_exists('pow')) {
|
||||
$this->assertEquals(
|
||||
0.25,
|
||||
PMA\libraries\Util::pow(2, -2, 'pow')
|
||||
);
|
||||
} else {
|
||||
$this->markTestSkipped('function pow() does not exist');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test forpow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNegativeExpBcpow()
|
||||
{
|
||||
if (function_exists('bcpow')) {
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA\libraries\Util::pow(2, -2, 'bcpow')
|
||||
);
|
||||
} else {
|
||||
$this->markTestSkipped('function bcpow() does not exist');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test forpow
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNegativeExpGmppow()
|
||||
{
|
||||
if (function_exists('gmp_pow')) {
|
||||
$this->assertEquals(
|
||||
false,
|
||||
PMA\libraries\Util::pow(2, -2, 'gmp_pow')
|
||||
);
|
||||
} else {
|
||||
$this->markTestSkipped('function gmp_pow() does not exist');
|
||||
}
|
||||
}
|
||||
}
|
||||
58
#pma/test/libraries/common/PMA_printableBitValue_test.php
Normal file
58
#pma/test/libraries/common/PMA_printableBitValue_test.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test PMA\libraries\Util::printableBitValue function
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test PMA\libraries\Util::printableBitValue function
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_PrintableBitValueTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* data provider for printable bit value test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function printableBitValueDataProvider()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'20131009',
|
||||
64,
|
||||
'0000000000000000000000000000000000000001001100110010110011000001'
|
||||
),
|
||||
array('5', 32, '00000000000000000000000000000101')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* test for generating string contains printable bit value of selected data
|
||||
*
|
||||
* @param integer $a Value
|
||||
* @param int $b Length
|
||||
* @param string $e Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider printableBitValueDataProvider
|
||||
*/
|
||||
public function testPrintableBitValue($a, $b, $e)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$e, PMA\libraries\Util::printableBitValue($a, $b)
|
||||
);
|
||||
}
|
||||
}
|
||||
186
#pma/test/libraries/common/PMA_quoting_slashing_test.php
Normal file
186
#pma/test/libraries/common/PMA_quoting_slashing_test.php
Normal file
@@ -0,0 +1,186 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for quoting, slashing/backslashing
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for quoting, slashing/backslashing
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_QuotingSlashing_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* data provider for PMA\libraries\Util::unQuote test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function unQuoteProvider()
|
||||
{
|
||||
return array(
|
||||
array('"test\'"', "test'"),
|
||||
array("'test''", "test'"),
|
||||
array("`test'`", "test'"),
|
||||
array("'test'test", "'test'test")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* PMA\libraries\Util::unQuote test
|
||||
*
|
||||
* @param string $param String
|
||||
* @param string $expected Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider unQuoteProvider
|
||||
*/
|
||||
public function testUnQuote($param, $expected)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$expected, PMA\libraries\Util::unQuote($param)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for PMA\libraries\Util::unQuote test with chosen quote
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function unQuoteSelectedProvider()
|
||||
{
|
||||
return array(
|
||||
array('"test\'"', "test'"),
|
||||
array("'test''", "'test''"),
|
||||
array("`test'`", "`test'`"),
|
||||
array("'test'test", "'test'test")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* PMA\libraries\Util::unQuote test with chosen quote
|
||||
*
|
||||
* @param string $param String
|
||||
* @param string $expected Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider unQuoteSelectedProvider
|
||||
*/
|
||||
public function testUnQuoteSelectedChar($param, $expected)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$expected, PMA\libraries\Util::unQuote($param, '"')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for backquote test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function backquoteDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('0', '`0`'),
|
||||
array('test', '`test`'),
|
||||
array('te`st', '`te``st`'),
|
||||
array(
|
||||
array('test', 'te`st', '', '*'),
|
||||
array('`test`', '`te``st`', '', '*')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* backquote test with different param $do_it (true, false)
|
||||
*
|
||||
* @param string $a String
|
||||
* @param string $b Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider backquoteDataProvider
|
||||
*/
|
||||
public function testBackquote($a, $b)
|
||||
{
|
||||
// Test bypass quoting (used by dump functions)
|
||||
$this->assertEquals($a, PMA\libraries\Util::backquote($a, false));
|
||||
|
||||
// Test backquote
|
||||
$this->assertEquals($b, PMA\libraries\Util::backquote($a));
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for backquoteCompat test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function backquoteCompatDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('0', '"0"'),
|
||||
array('test', '"test"'),
|
||||
array('te`st', '"te`st"'),
|
||||
array(
|
||||
array('test', 'te`st', '', '*'),
|
||||
array('"test"', '"te`st"', '', '*')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* backquoteCompat test with different param $compatibility (NONE, MSSQL)
|
||||
*
|
||||
* @param string $a String
|
||||
* @param string $b Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider backquoteCompatDataProvider
|
||||
*/
|
||||
public function testbackquoteCompat($a, $b)
|
||||
{
|
||||
// Test bypass quoting (used by dump functions)
|
||||
$this->assertEquals($a, PMA\libraries\Util::backquoteCompat($a, 'NONE', false));
|
||||
|
||||
// Run tests in MSSQL compatibility mode
|
||||
// Test bypass quoting (used by dump functions)
|
||||
$this->assertEquals($a, PMA\libraries\Util::backquoteCompat($a, 'MSSQL', false));
|
||||
|
||||
// Test backquote
|
||||
$this->assertEquals($b, PMA\libraries\Util::backquoteCompat($a, 'MSSQL'));
|
||||
}
|
||||
|
||||
/**
|
||||
* backquoteCompat test with forbidden words
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testBackquoteForbidenWords()
|
||||
{
|
||||
foreach (SqlParser\Context::$KEYWORDS as $keyword => $type) {
|
||||
if ($type & SqlParser\Token::FLAG_KEYWORD_RESERVED) {
|
||||
$this->assertEquals(
|
||||
"`" . $keyword . "`",
|
||||
PMA\libraries\Util::backquote($keyword, false)
|
||||
);
|
||||
} else {
|
||||
$this->assertEquals(
|
||||
$keyword,
|
||||
PMA\libraries\Util::backquote($keyword, false)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
51
#pma/test/libraries/common/PMA_showDocu_test.php
Normal file
51
#pma/test/libraries/common/PMA_showDocu_test.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::showDocu from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::showDocu from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_ShowDocu_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setup()
|
||||
{
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$GLOBALS['server'] = '99';
|
||||
$GLOBALS['cfg']['ServerDefault'] = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for showDocu
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testShowDocu()
|
||||
{
|
||||
$this->assertEquals(
|
||||
'<a href="./url.php?url=https%3A%2F%2Fdocs.phpmyadmin.net%2Fen%2Flatest%2Fpage.html%23anchor" target="documentation"><img src="themes/dot.gif" title="Documentation" alt="Documentation" class="icon ic_b_help" /></a>',
|
||||
PMA\libraries\Util::showDocu('page', 'anchor')
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
80
#pma/test/libraries/common/PMA_showMessage_test_disabled.php
Normal file
80
#pma/test/libraries/common/PMA_showMessage_test_disabled.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getMessage from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
const PMA_IS_WINDOWS = false;
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::getMessage from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_ShowMessage_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setUp()
|
||||
{
|
||||
global $cfg;
|
||||
if (! defined('VERSION_CHECK_DEFAULT')) {
|
||||
define('VERSION_CHECK_DEFAULT', 1);
|
||||
}
|
||||
|
||||
include 'libraries/config.default.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for getMessage
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testShowMessageNotAjax()
|
||||
{
|
||||
global $cfg;
|
||||
|
||||
$GLOBALS['is_ajax_request'] = true;
|
||||
$cfg['Server']['DisableIS'] = false;
|
||||
$GLOBALS['table'] = 'tbl';
|
||||
$GLOBALS['db'] = 'db';
|
||||
|
||||
$GLOBALS['sql_query'] = "SELECT * FROM tblPatient ";
|
||||
|
||||
$this->expectOutputString(
|
||||
"<div class=\"result_query\" align=\"\">
|
||||
<div class=\"notice\">msg</div><code class=\"sql\"><span class=\"syntax\"><span class=\"inner_sql\"><a href=\"./url.php?url=http%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F5.0%2Fen%2Fselect.html&server=server&lang=en&token=647a62ad301bf9025e3b13bc7caa02cb\" target=\"mysql_doc\"><span class=\"syntax_alpha syntax_alpha_reservedWord\">SELECT</span></a> <span class=\"syntax_punct\">*</span> <br /><span class=\"syntax_alpha syntax_alpha_reservedWord\">FROM</span> <span class=\"syntax_alpha syntax_alpha_identifier\">tblPatient</span></span></span></code><div class=\"tools\"><form action=\"sql.php\" method=\"post\"><input type=\"hidden\" name=\"db\" value=\"db\" /><input type=\"hidden\" name=\"table\" value=\"tbl\" /><input type=\"hidden\" name=\"server\" value=\"server\" /><input type=\"hidden\" name=\"lang\" value=\"en\" /><input type=\"hidden\" name=\"token\" value=\"647a62ad301bf9025e3b13bc7caa02cb\" /><input type=\"hidden\" name=\"sql_query\" value=\"SELECT * FROM tblPatient \" /></form><script type=\"text/javascript\">
|
||||
//<![CDATA[
|
||||
$('.tools form').last().after('[<a href=\"#\" title=\"Inline edit of this query\" class=\"inline_edit_sql\">Inline</a>]');
|
||||
//]]>
|
||||
</script> [
|
||||
<a href=\"tbl_sql.php?db=db&table=tbl&sql_query=SELECT+%2A+FROM+tblPatient+&show_query=1&server=server&lang=en&token=647a62ad301bf9025e3b13bc7caa02cb#querybox\" >Edit</a>
|
||||
] [
|
||||
<a href=\"import.php?db=db&table=tbl&sql_query=EXPLAIN+SELECT+%2A+FROM+tblPatient+&server=server&lang=en&token=647a62ad301bf9025e3b13bc7caa02cb\" >Explain SQL</a>
|
||||
] [
|
||||
<a href=\"import.php?db=db&table=tbl&sql_query=SELECT+%2A+FROM+tblPatient+&show_query=1&show_as_php=1&server=server&lang=en&token=647a62ad301bf9025e3b13bc7caa02cb\" >Create PHP code</a>
|
||||
] [
|
||||
<a href=\"import.php?db=db&table=tbl&sql_query=SELECT+%2A+FROM+tblPatient+&show_query=1&server=server&lang=en&token=647a62ad301bf9025e3b13bc7caa02cb\" >Refresh</a>
|
||||
]</div></div>"
|
||||
);
|
||||
|
||||
echo PMA\libraries\Util::getMessage("msg");
|
||||
|
||||
//$this->assertEquals("", PMA\libraries\Util::getMessage("msg"));
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
}
|
||||
56
#pma/test/libraries/common/PMA_showPHPDocu_test.php
Normal file
56
#pma/test/libraries/common/PMA_showPHPDocu_test.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::showPHPDocu from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::showPHPDocu from Util.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_ShowPHPDocu_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setup()
|
||||
{
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$GLOBALS['server'] = 99;
|
||||
$GLOBALS['cfg']['ServerDefault'] = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for showPHPDocu
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testShowPHPDocu()
|
||||
{
|
||||
$target = "docu";
|
||||
$lang = _pgettext('PHP documentation language', 'en');
|
||||
$expected = '<a href="./url.php?url=https%3A%2F%2Fphp.net%2Fmanual%2F' . $lang
|
||||
. '%2F' . $target . '" target="documentation">'
|
||||
. '<img src="themes/dot.gif" title="' . __('Documentation') . '" alt="'
|
||||
. __('Documentation') . '" class="icon ic_b_help" /></a>';
|
||||
|
||||
$this->assertEquals(
|
||||
$expected, PMA\libraries\Util::showPHPDocu($target)
|
||||
);
|
||||
}
|
||||
}
|
||||
171
#pma/test/libraries/common/PMA_stringOperations_test.php
Normal file
171
#pma/test/libraries/common/PMA_stringOperations_test.php
Normal file
@@ -0,0 +1,171 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for several string operations
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for several string operations
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_StringOperations_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* temporary variable for globals array
|
||||
*/
|
||||
protected $tmpGlobals;
|
||||
|
||||
/**
|
||||
* temporary variable for session array
|
||||
*/
|
||||
protected $tmpSession;
|
||||
|
||||
/**
|
||||
* storing globals and session
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
global $GLOBALS, $_SESSION;
|
||||
$this->tmpGlobals = $GLOBALS;
|
||||
$this->tmpSession = $_SESSION;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for PMA\libraries\Util::flipstring test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function flipStringDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('test', "t<br />\ne<br />\ns<br />\nt"),
|
||||
array(
|
||||
'te ;st',
|
||||
"t<br />\ne<br />\n <br />\n;<br />\ns<br />\nt"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* test of changing string from horizontal to vertical orientation
|
||||
*
|
||||
* @param string $a String
|
||||
* @param string $e Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider flipStringDataProvider
|
||||
*/
|
||||
public function testFlipString($a, $e)
|
||||
{
|
||||
$this->assertEquals($e, PMA\libraries\Util::flipstring($a));
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for PMA\libraries\Util::userDir test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function userDirDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('/var/pma_tmp/%u/', "/var/pma_tmp/root/"),
|
||||
array('/home/%u/pma', "/home/root/pma/")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* test of generating user dir, globals are defined
|
||||
*
|
||||
* @param string $a String
|
||||
* @param string $e Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider userDirDataProvider
|
||||
*/
|
||||
public function testUserDirString($a, $e)
|
||||
{
|
||||
$GLOBALS['cfg']['Server']['user'] = 'root';
|
||||
|
||||
$this->assertEquals($e, PMA\libraries\Util::userDir($a));
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for replace binary content test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function replaceBinaryContentsDataProvider()
|
||||
{
|
||||
return array(
|
||||
array("\x000", '\00'),
|
||||
array("\x08\x0a\x0d\x1atest", '\b\n\r\Ztest'),
|
||||
array("\ntest", '\ntest')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* replace binary contents test
|
||||
*
|
||||
* @param string $a String
|
||||
* @param string $e Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider replaceBinaryContentsDataProvider
|
||||
*/
|
||||
public function testReplaceBinaryContents($a, $e)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$e, PMA\libraries\Util::replaceBinaryContents($a)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* data provider for duplicate first newline test
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function duplicateFirstNewlineDataProvider()
|
||||
{
|
||||
return array(
|
||||
array('test', 'test'),
|
||||
array("\r\ntest", "\n\r\ntest"),
|
||||
array("\ntest", "\ntest"),
|
||||
array("\n\r\ntest", "\n\r\ntest")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* duplicate first newline test
|
||||
*
|
||||
* @param string $a String
|
||||
* @param string $e Expected output
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider duplicateFirstNewlineDataProvider
|
||||
*/
|
||||
public function testDuplicateFirstNewline($a, $e)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$e, PMA\libraries\Util::duplicateFirstNewline($a)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
35
#pma/test/libraries/common/PMA_unsupportedDatatypes_test.php
Normal file
35
#pma/test/libraries/common/PMA_unsupportedDatatypes_test.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
** Test for PMA\libraries\Util::unsupportedDatatypes from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
** Test for PMA\libraries\Util::unsupportedDatatypes from common.lib
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_UnsupportedDatatypes_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for unsupportedDatatypes
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testNotSupportedDataTypes()
|
||||
{
|
||||
$no_support_types = array();
|
||||
$this->assertEquals(
|
||||
$no_support_types, PMA\libraries\Util::unsupportedDatatypes()
|
||||
);
|
||||
}
|
||||
}
|
||||
87
#pma/test/libraries/common/PMA_whichCrlf_test.php
Normal file
87
#pma/test/libraries/common/PMA_whichCrlf_test.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test PMA\libraries\Util::whichCrlf function
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test PMA\libraries\Util::whichCrlf function
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
* @group common.lib-tests
|
||||
*/
|
||||
class PMA_WhichCrlf_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Test for whichCrlf
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @using runkit pecl extension
|
||||
* if not define PMA_USR_OS, then define it as Win
|
||||
* if installed runkit, then constant will not change
|
||||
*/
|
||||
public function testWhichCrlf()
|
||||
{
|
||||
if (PMA_HAS_RUNKIT && defined('PMA_USR_OS')) {
|
||||
$pma_usr_os = PMA_USR_OS;
|
||||
}
|
||||
|
||||
if (defined('PMA_USR_OS') && !PMA_HAS_RUNKIT) {
|
||||
|
||||
if (PMA_USR_OS == 'Win') {
|
||||
$this->assertEquals(
|
||||
"\r\n", PMA\libraries\Util::whichCrlf()
|
||||
);
|
||||
} else {
|
||||
$this->assertEquals(
|
||||
"\n", PMA\libraries\Util::whichCrlf()
|
||||
);
|
||||
}
|
||||
|
||||
$this->markTestIncomplete('Cannot redefine constant');
|
||||
|
||||
} else {
|
||||
|
||||
if (PMA_HAS_RUNKIT) {
|
||||
if (!defined('PMA_USR_OS')) {
|
||||
define('PMA_USR_OS', 'Linux');
|
||||
} else {
|
||||
runkit_constant_redefine('PMA_USR_OS', 'Linux');
|
||||
}
|
||||
|
||||
$this->assertEquals(
|
||||
"\n", PMA\libraries\Util::whichCrlf()
|
||||
);
|
||||
}
|
||||
|
||||
if (PMA_HAS_RUNKIT) {
|
||||
runkit_constant_redefine('PMA_USR_OS', 'Win');
|
||||
} else {
|
||||
define('PMA_USR_OS', 'Win');
|
||||
}
|
||||
$this->assertEquals(
|
||||
"\r\n", PMA\libraries\Util::whichCrlf()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if (PMA_HAS_RUNKIT) {
|
||||
if (isset($pma_usr_os)) {
|
||||
runkit_constant_redefine('PMA_USR_OS', 'Win');
|
||||
} else {
|
||||
runkit_constant_remove('PMA_USR_OS');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
76
#pma/test/libraries/config/PMA_messages_inc_test.php
Normal file
76
#pma/test/libraries/config/PMA_messages_inc_test.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Tests for libraries/config/messages.inc.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tests for libraries/config/messages.inc.php
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_MessagesIncTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Setup for test cases
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests messages variables
|
||||
*
|
||||
* @return void
|
||||
* @group medium
|
||||
*/
|
||||
function testMessages()
|
||||
{
|
||||
$strConfigAllowArbitraryServer_name = '';
|
||||
$strConfigAllowThirdPartyFraming_name = '';
|
||||
$strConfigblowfish_secret_name = '';
|
||||
$strConfigExport_htmlword_structure_or_data_name = '';
|
||||
$strConfigForm_TableStructure = '';
|
||||
$strConfigSQLQuery_Explain_name = '';
|
||||
$strConfigSendErrorReports_name = '';
|
||||
|
||||
include 'libraries/config/messages.inc.php';
|
||||
|
||||
$this->assertEquals(
|
||||
'Allow login to any MySQL server',
|
||||
$strConfigAllowArbitraryServer_name
|
||||
);
|
||||
$this->assertEquals(
|
||||
'Allow third party framing',
|
||||
$strConfigAllowThirdPartyFraming_name
|
||||
);
|
||||
$this->assertEquals(
|
||||
'Blowfish secret',
|
||||
$strConfigblowfish_secret_name
|
||||
);
|
||||
$this->assertEquals(
|
||||
'Dump table',
|
||||
$strConfigExport_htmlword_structure_or_data_name
|
||||
);
|
||||
$this->assertEquals(
|
||||
'Table structure',
|
||||
$strConfigForm_TableStructure
|
||||
);
|
||||
$this->assertEquals(
|
||||
'Explain SQL',
|
||||
$strConfigSQLQuery_Explain_name
|
||||
);
|
||||
$this->assertEquals(
|
||||
'Send error reports',
|
||||
$strConfigSendErrorReports_name
|
||||
);
|
||||
}
|
||||
}
|
||||
223
#pma/test/libraries/core/PMA_array_test.php
Normal file
223
#pma/test/libraries/core/PMA_array_test.php
Normal file
@@ -0,0 +1,223 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA_arrayRead(), PMA_arrayWrite(), PMA_arrayRemove()
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Test for PMA_arrayRead(), PMA_arrayWrite(), PMA_arrayRemove()
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_Array_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_arrayRead
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testRead()
|
||||
{
|
||||
$arr = array(
|
||||
"int" => 1,
|
||||
"str" => "str_val",
|
||||
"arr" => array('val1', 'val2', 'val3'),
|
||||
"sarr" => array(
|
||||
'arr1' => array(1, 2, 3),
|
||||
array(3, array('a', 'b', 'c'), 4)
|
||||
)
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('int', $arr),
|
||||
$arr['int']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('str', $arr),
|
||||
$arr['str']
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('arr/0', $arr),
|
||||
$arr['arr'][0]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('arr/1', $arr),
|
||||
$arr['arr'][1]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('arr/2', $arr),
|
||||
$arr['arr'][2]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/arr1/0', $arr),
|
||||
$arr['sarr']['arr1'][0]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/arr1/1', $arr),
|
||||
$arr['sarr']['arr1'][1]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/arr1/2', $arr),
|
||||
$arr['sarr']['arr1'][2]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/0/0', $arr),
|
||||
$arr['sarr'][0][0]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/0/1', $arr),
|
||||
$arr['sarr'][0][1]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/0/1/2', $arr),
|
||||
$arr['sarr'][0][1][2]
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/not_exiting/1', $arr),
|
||||
null
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/not_exiting/1', $arr, 0),
|
||||
0
|
||||
);
|
||||
|
||||
$this->assertEquals(
|
||||
PMA_arrayRead('sarr/not_exiting/1', $arr, 'default_val'),
|
||||
'default_val'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_arrayWrite
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testWrite()
|
||||
{
|
||||
$arr = array(
|
||||
"int" => 1,
|
||||
"str" => "str_val",
|
||||
"arr" => array('val1', 'val2', 'val3'),
|
||||
"sarr" => array(
|
||||
'arr1' => array(1, 2, 3),
|
||||
array(3, array('a', 'b', 'c'), 4)
|
||||
)
|
||||
);
|
||||
|
||||
PMA_arrayWrite('int', $arr, 5);
|
||||
$this->assertEquals($arr['int'], 5);
|
||||
|
||||
PMA_arrayWrite('str', $arr, '_str');
|
||||
$this->assertEquals($arr['str'], '_str');
|
||||
|
||||
PMA_arrayWrite('arr/0', $arr, 'val_arr_0');
|
||||
$this->assertEquals($arr['arr'][0], 'val_arr_0');
|
||||
|
||||
PMA_arrayWrite('arr/1', $arr, 'val_arr_1');
|
||||
$this->assertEquals($arr['arr'][1], 'val_arr_1');
|
||||
|
||||
PMA_arrayWrite('arr/2', $arr, 'val_arr_2');
|
||||
$this->assertEquals($arr['arr'][2], 'val_arr_2');
|
||||
|
||||
PMA_arrayWrite('sarr/arr1/0', $arr, 'val_sarr_arr_0');
|
||||
$this->assertEquals($arr['sarr']['arr1'][0], 'val_sarr_arr_0');
|
||||
|
||||
PMA_arrayWrite('sarr/arr1/1', $arr, 'val_sarr_arr_1');
|
||||
$this->assertEquals($arr['sarr']['arr1'][1], 'val_sarr_arr_1');
|
||||
|
||||
PMA_arrayWrite('sarr/arr1/2', $arr, 'val_sarr_arr_2');
|
||||
$this->assertEquals($arr['sarr']['arr1'][2], 'val_sarr_arr_2');
|
||||
|
||||
PMA_arrayWrite('sarr/0/0', $arr, 5);
|
||||
$this->assertEquals($arr['sarr'][0][0], 5);
|
||||
|
||||
PMA_arrayWrite('sarr/0/1/0', $arr, 'e');
|
||||
$this->assertEquals($arr['sarr'][0][1][0], 'e');
|
||||
|
||||
PMA_arrayWrite('sarr/not_existing/1', $arr, 'some_val');
|
||||
$this->assertEquals($arr['sarr']['not_existing'][1], 'some_val');
|
||||
|
||||
PMA_arrayWrite('sarr/0/2', $arr, null);
|
||||
$this->assertNull($arr['sarr'][0][2]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_arrayRemove
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testRemove()
|
||||
{
|
||||
$arr = array(
|
||||
"int" => 1,
|
||||
"str" => "str_val",
|
||||
"arr" => array('val1', 'val2', 'val3'),
|
||||
"sarr" => array(
|
||||
'arr1' => array(1, 2, 3),
|
||||
array(3, array('a', 'b', 'c'), 4)
|
||||
)
|
||||
);
|
||||
|
||||
PMA_arrayRemove('int', $arr);
|
||||
$this->assertArrayNotHasKey('int', $arr);
|
||||
|
||||
PMA_arrayRemove('str', $arr);
|
||||
$this->assertArrayNotHasKey('str', $arr);
|
||||
|
||||
PMA_arrayRemove('arr/0', $arr);
|
||||
$this->assertArrayNotHasKey(0, $arr['arr']);
|
||||
|
||||
PMA_arrayRemove('arr/1', $arr);
|
||||
$this->assertArrayNotHasKey(1, $arr['arr']);
|
||||
|
||||
PMA_arrayRemove('arr/2', $arr);
|
||||
$this->assertArrayNotHasKey('arr', $arr);
|
||||
|
||||
$tmp_arr = $arr;
|
||||
PMA_arrayRemove('sarr/not_existing/1', $arr);
|
||||
$this->assertEquals($tmp_arr, $arr);
|
||||
|
||||
PMA_arrayRemove('sarr/arr1/0', $arr);
|
||||
$this->assertArrayNotHasKey(0, $arr['sarr']['arr1']);
|
||||
|
||||
PMA_arrayRemove('sarr/arr1/1', $arr);
|
||||
$this->assertArrayNotHasKey(1, $arr['sarr']['arr1']);
|
||||
|
||||
PMA_arrayRemove('sarr/arr1/2', $arr);
|
||||
$this->assertArrayNotHasKey('arr1', $arr['sarr']);
|
||||
|
||||
PMA_arrayRemove('sarr/0/0', $arr);
|
||||
$this->assertArrayNotHasKey(0, $arr['sarr'][0]);
|
||||
|
||||
PMA_arrayRemove('sarr/0/1/0', $arr);
|
||||
$this->assertArrayNotHasKey(0, $arr['sarr'][0][1]);
|
||||
|
||||
PMA_arrayRemove('sarr/0/1/1', $arr);
|
||||
$this->assertArrayNotHasKey(1, $arr['sarr'][0][1]);
|
||||
|
||||
PMA_arrayRemove('sarr/0/1/2', $arr);
|
||||
$this->assertArrayNotHasKey(1, $arr['sarr'][0]);
|
||||
|
||||
PMA_arrayRemove('sarr/0/2', $arr);
|
||||
|
||||
$this->assertEmpty($arr);
|
||||
}
|
||||
}
|
||||
68
#pma/test/libraries/core/PMA_checkPageValidity_test.php
Normal file
68
#pma/test/libraries/core/PMA_checkPageValidity_test.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_CheckPageValidity_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
protected $goto_whitelist = array(
|
||||
'db_datadict.php',
|
||||
'db_sql.php',
|
||||
'db_export.php',
|
||||
'db_search.php',
|
||||
'export.php',
|
||||
'import.php',
|
||||
'index.php',
|
||||
'pdf_pages.php',
|
||||
'pdf_schema.php',
|
||||
'server_binlog.php',
|
||||
'server_variables.php',
|
||||
'sql.php',
|
||||
'tbl_select.php',
|
||||
'transformation_overview.php',
|
||||
'transformation_wrapper.php',
|
||||
'user_password.php',
|
||||
);
|
||||
|
||||
/**
|
||||
* Test for PMA_checkPageValidity
|
||||
*
|
||||
* @param string $page Page
|
||||
* @param array|null $whiteList White list
|
||||
* @param int $expected Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provider
|
||||
*/
|
||||
function testGotoNowhere($page, $whiteList, $expected)
|
||||
{
|
||||
$this->assertTrue($expected === PMA_checkPageValidity($page, $whiteList));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testGotoNowhere
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provider()
|
||||
{
|
||||
return array(
|
||||
array(null, null, false),
|
||||
array('export.php', $this->goto_whitelist, true),
|
||||
array('shell.php', $this->goto_whitelist, false),
|
||||
array('index.php?sql.php&test=true', $this->goto_whitelist, true),
|
||||
array('index.php%3Fsql.php%26test%3Dtrue', $this->goto_whitelist, true),
|
||||
);
|
||||
}
|
||||
}
|
||||
84
#pma/test/libraries/core/PMA_cleanupPathInfo_test.php
Normal file
84
#pma/test/libraries/core/PMA_cleanupPathInfo_test.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
*
|
||||
* PMA_fatalError() displays the given error message on phpMyAdmin error page in
|
||||
* foreign language
|
||||
* and ends script execution and closes session
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* PMA_fatalError() displays the given error message on phpMyAdmin error page in
|
||||
* foreign language
|
||||
* and ends script execution and closes session
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_CleanupPathInfo_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_cleanupPathInfo
|
||||
*
|
||||
* @param string $php_self The PHP_SELF value
|
||||
* @param string $request The REQUEST_URI value
|
||||
* @param string $path_info The PATH_INFO value
|
||||
* @param string $expected Expected result
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider pathsProvider
|
||||
*/
|
||||
public function testPahtInfo($php_self, $request, $path_info, $expected)
|
||||
{
|
||||
$_SERVER['PHP_SELF'] = $php_self;
|
||||
$_SERVER['REQUEST_URI'] = $request;
|
||||
$_SERVER['PATH_INFO'] = $path_info;
|
||||
PMA_cleanupPathInfo();
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$GLOBALS['PMA_PHP_SELF']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for PMA_cleanupPathInfo tests
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function pathsProvider()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
'/phpmyadmin/index.php/; cookieinj=value/',
|
||||
'/phpmyadmin/index.php/;%20cookieinj=value///',
|
||||
'/; cookieinj=value/',
|
||||
'/phpmyadmin/index.php'
|
||||
),
|
||||
array(
|
||||
'',
|
||||
'/phpmyadmin/index.php/;%20cookieinj=value///',
|
||||
'/; cookieinj=value/',
|
||||
'/phpmyadmin/index.php'
|
||||
),
|
||||
array(
|
||||
'/phpmyadmin/index.php',
|
||||
'/phpmyadmin/index.php',
|
||||
'',
|
||||
'/phpmyadmin/index.php'
|
||||
),
|
||||
array(
|
||||
'',
|
||||
'/phpmyadmin/index.php',
|
||||
'',
|
||||
'/phpmyadmin/index.php'
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
88
#pma/test/libraries/core/PMA_fatalError_test.php
Normal file
88
#pma/test/libraries/core/PMA_fatalError_test.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
*
|
||||
* PMA_fatalError() displays the given error message on phpMyAdmin error page in
|
||||
* foreign language
|
||||
* and ends script execution and closes session
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* PMA_fatalError() displays the given error message on phpMyAdmin error page in
|
||||
* foreign language
|
||||
* and ends script execution and closes session
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_FatalError_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setup()
|
||||
{
|
||||
$GLOBALS['PMA_Config'] = new PMA\libraries\Config();
|
||||
$GLOBALS['PMA_Config']->enableBc();
|
||||
$GLOBALS['cfg']['Server'] = array(
|
||||
'host' => 'host',
|
||||
'verbose' => 'verbose',
|
||||
);
|
||||
$GLOBALS['cfg']['OBGzip'] = false;
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$GLOBALS['pmaThemeImage'] = 'theme/';
|
||||
$GLOBALS['pmaThemePath'] = $_SESSION['PMA_Theme']->getPath();
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['db'] = '';
|
||||
$GLOBALS['table'] = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_fatalError
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testFatalErrorMessage()
|
||||
{
|
||||
$this->expectOutputRegex("/FatalError!/");
|
||||
PMA_fatalError("FatalError!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_fatalError
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testFatalErrorMessageWithArgs()
|
||||
{
|
||||
$message = "Fatal error #%d in file %s.";
|
||||
$params = array(1, 'error_file.php');
|
||||
|
||||
$this->expectOutputRegex("/Fatal error #1 in file error_file.php./");
|
||||
PMA_fatalError($message, $params);
|
||||
|
||||
$message = "Fatal error in file %s.";
|
||||
$params = 'error_file.php';
|
||||
|
||||
$this->expectOutputRegex("/Fatal error in file error_file.php./");
|
||||
PMA_fatalError($message, $params);
|
||||
}
|
||||
|
||||
}
|
||||
76
#pma/test/libraries/core/PMA_getLinks_test.php
Normal file
76
#pma/test/libraries/core/PMA_getLinks_test.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_GetLinks_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function setUp()
|
||||
{
|
||||
$GLOBALS['server'] = 99;
|
||||
$GLOBALS['cfg']['ServerDefault'] = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getPHPDocLink
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetPHPDocLink()
|
||||
{
|
||||
$lang = _pgettext('PHP documentation language', 'en');
|
||||
$this->assertEquals(
|
||||
PMA_getPHPDocLink('function'),
|
||||
'./url.php?url=https%3A%2F%2Fphp.net%2Fmanual%2F'
|
||||
. $lang . '%2Ffunction'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testLinkURL
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function providerLinkURL()
|
||||
{
|
||||
return array(
|
||||
array('https://wiki.phpmyadmin.net',
|
||||
'./url.php?url=https%3A%2F%2Fwiki.phpmyadmin.net'),
|
||||
array('https://wiki.phpmyadmin.net',
|
||||
'./url.php?url=https%3A%2F%2Fwiki.phpmyadmin.net'),
|
||||
array('wiki.phpmyadmin.net', 'wiki.phpmyadmin.net'),
|
||||
array('index.php?db=phpmyadmin', 'index.php?db=phpmyadmin')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_linkURL
|
||||
*
|
||||
* @param string $link URL where to go
|
||||
* @param string $url Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider providerLinkURL
|
||||
*/
|
||||
public function testLinkURL($link, $url)
|
||||
{
|
||||
$this->assertEquals(PMA_linkURL($link), $url);
|
||||
}
|
||||
}
|
||||
65
#pma/test/libraries/core/PMA_getTableCount_test_dis.php
Normal file
65
#pma/test/libraries/core/PMA_getTableCount_test_dis.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* PMA_getTableCount_test returns count of tables in given db
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
require_once 'libraries/select_lang.inc.php';
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
require_once 'libraries/config.default.php';
|
||||
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
|
||||
require_once 'config.sample.inc.php';
|
||||
|
||||
/**
|
||||
* PMA_getTableCount_test returns count of tables in given db
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_GetTableCount_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['PMA_Config'] = new PMA\libraries\Config();
|
||||
$GLOBALS['PMA_Config']->enableBc();
|
||||
$GLOBALS['cfg']['OBGzip'] = false;
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$GLOBALS['pmaThemeImage'] = 'theme/';
|
||||
$GLOBALS['pmaThemePath'] = $_SESSION['PMA_Theme']->getPath();
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['db'] = '';
|
||||
$GLOBALS['table'] = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_getTableCount
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testTableCount()
|
||||
{
|
||||
$GLOBALS['cfg']['Server']['host'] = 'localhost';
|
||||
$GLOBALS['cfg']['Server']['user'] = 'root';
|
||||
|
||||
$this->assertEquals(5, PMA_getTableCount('meddb'));
|
||||
}
|
||||
}
|
||||
50
#pma/test/libraries/core/PMA_get_real_size_test.php
Normal file
50
#pma/test/libraries/core/PMA_get_real_size_test.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_GetRealSize_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for
|
||||
*
|
||||
* @param string $size Size
|
||||
* @param int $expected Expected value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provider
|
||||
*/
|
||||
public function testNull($size, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, PMA_getRealSize($size));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testExtractValueFromFormattedSize
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provider()
|
||||
{
|
||||
return array(
|
||||
array('0', 0),
|
||||
array('1kb', 1024),
|
||||
array('1024k', 1024 * 1024),
|
||||
array('8m', 8 * 1024 * 1024),
|
||||
array('12gb', 12 * 1024 * 1024 * 1024),
|
||||
array('1024', 1024),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
224
#pma/test/libraries/core/PMA_headerLocation_test.php
Normal file
224
#pma/test/libraries/core/PMA_headerLocation_test.php
Normal file
@@ -0,0 +1,224 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA_sendHeaderLocation
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
|
||||
require_once 'libraries/url_generating.lib.php';
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Test function sending headers.
|
||||
* Warning - these tests set constants, so it can interfere with other tests
|
||||
* If you have runkit extension, then it is possible to back changes made on
|
||||
* constants rest of options can be tested only with apd, when functions header
|
||||
* and headers_sent are redefined rename_function() of header and headers_sent
|
||||
* may cause CLI error report in Windows XP (but tests are done correctly)
|
||||
* additional functions which were created during tests must be stored to
|
||||
* coverage test e.g.
|
||||
*
|
||||
* <code>
|
||||
* rename_function(
|
||||
* 'headers_sent',
|
||||
* 'headers_sent'.str_replace(array('.', ' '),array('', ''),microtime())
|
||||
* );
|
||||
* </code>
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
class PMA_HeaderLocation_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
protected $oldIISvalue;
|
||||
protected $runkitExt;
|
||||
protected $apdExt;
|
||||
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
//session_start();
|
||||
|
||||
// cleaning constants
|
||||
if (PMA_HAS_RUNKIT) {
|
||||
|
||||
$this->oldIISvalue = 'non-defined';
|
||||
|
||||
$defined_constants = get_defined_constants(true);
|
||||
$user_defined_constants = $defined_constants['user'];
|
||||
if (array_key_exists('PMA_IS_IIS', $user_defined_constants)) {
|
||||
$this->oldIISvalue = PMA_IS_IIS;
|
||||
runkit_constant_redefine('PMA_IS_IIS', null);
|
||||
} else {
|
||||
runkit_constant_add('PMA_IS_IIS', null);
|
||||
}
|
||||
}
|
||||
$_SESSION['PMA_Theme'] = Theme::load('./themes/pmahomme');
|
||||
$GLOBALS['server'] = 0;
|
||||
$GLOBALS['PMA_Config'] = new PMA\libraries\Config();
|
||||
$GLOBALS['PMA_Config']->enableBc();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tear down
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function tearDown()
|
||||
{
|
||||
//session_destroy();
|
||||
|
||||
// cleaning constants
|
||||
if (PMA_HAS_RUNKIT) {
|
||||
|
||||
if ($this->oldIISvalue != 'non-defined') {
|
||||
runkit_constant_redefine('PMA_IS_IIS', $this->oldIISvalue);
|
||||
} elseif (defined('PMA_IS_IIS')) {
|
||||
runkit_constant_remove('PMA_IS_IIS');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_sendHeaderLocation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testSendHeaderLocationWithoutSidWithIis()
|
||||
{
|
||||
if (defined('PMA_TEST_HEADERS')) {
|
||||
|
||||
runkit_constant_redefine('PMA_IS_IIS', true);
|
||||
|
||||
$testUri = 'https://example.com/test.php';
|
||||
|
||||
$header = array('Location: ' . $testUri);
|
||||
PMA_sendHeaderLocation($testUri); // sets $GLOBALS['header']
|
||||
$this->assertEquals($header, $GLOBALS['header']);
|
||||
|
||||
//reset $GLOBALS['header'] for the next assertion
|
||||
unset($GLOBALS['header']);
|
||||
|
||||
$header = array('Refresh: 0; ' . $testUri);
|
||||
PMA_sendHeaderLocation($testUri, true); // sets $GLOBALS['header']
|
||||
$this->assertEquals($header, $GLOBALS['header']);
|
||||
|
||||
} else {
|
||||
$this->markTestSkipped(
|
||||
'Cannot redefine constant/function - missing runkit extension'
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_sendHeaderLocation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testSendHeaderLocationWithoutSidWithoutIis()
|
||||
{
|
||||
if (defined('PMA_TEST_HEADERS')) {
|
||||
|
||||
$testUri = 'https://example.com/test.php';
|
||||
$header = array('Location: ' . $testUri);
|
||||
|
||||
PMA_sendHeaderLocation($testUri); // sets $GLOBALS['header']
|
||||
$this->assertEquals($header, $GLOBALS['header']);
|
||||
|
||||
} else {
|
||||
$this->markTestSkipped(
|
||||
'Cannot redefine constant/function - missing runkit extension'
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_sendHeaderLocation
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testSendHeaderLocationIisLongUri()
|
||||
{
|
||||
if (defined('PMA_IS_IIS') && PMA_HAS_RUNKIT) {
|
||||
runkit_constant_redefine('PMA_IS_IIS', true);
|
||||
} elseif (!defined('PMA_IS_IIS')) {
|
||||
define('PMA_IS_IIS', true);
|
||||
} elseif (! PMA_IS_IIS) {
|
||||
$this->markTestSkipped(
|
||||
'Cannot redefine constant/function - missing runkit extension'
|
||||
);
|
||||
}
|
||||
|
||||
// over 600 chars
|
||||
$testUri = 'https://example.com/test.php?testlonguri=over600chars&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test&test=test&test=test&test=test&test=test'
|
||||
. '&test=test&test=test';
|
||||
$testUri_html = htmlspecialchars($testUri);
|
||||
$testUri_js = PMA_escapeJsString($testUri);
|
||||
|
||||
$header = "<html>\n<head>\n <title>- - -</title>
|
||||
<meta http-equiv=\"expires\" content=\"0\">"
|
||||
. "\n <meta http-equiv=\"Pragma\" content=\"no-cache\">"
|
||||
. "\n <meta http-equiv=\"Cache-Control\" content=\"no-cache\">"
|
||||
. "\n <meta http-equiv=\"Refresh\" content=\"0;url=" . $testUri_html . "\">"
|
||||
. "\n <script type=\"text/javascript\">\n //<![CDATA[
|
||||
setTimeout(\"window.location = decodeURI('" . $testUri_js . "')\", 2000);
|
||||
//]]>\n </script>\n</head>
|
||||
<body>\n<script type=\"text/javascript\">\n //<![CDATA[
|
||||
document.write('<p><a href=\"" . $testUri_html . "\">" . __('Go') . "</a></p>');
|
||||
//]]>\n</script>\n</body>\n</html>
|
||||
";
|
||||
|
||||
$this->expectOutputString($header);
|
||||
|
||||
$restoreInstance = PMA\libraries\Response::getInstance();
|
||||
|
||||
$mockResponse = $this->getMockBuilder('PMA\libraries\Response')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(array('disable', 'header', 'headersSent'))
|
||||
->getMock();
|
||||
|
||||
$mockResponse->expects($this->once())
|
||||
->method('disable');
|
||||
|
||||
$mockResponse->expects($this->any())
|
||||
->method('headersSent')
|
||||
->with()
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$attrInstance = new ReflectionProperty('PMA\libraries\Response', '_instance');
|
||||
$attrInstance->setAccessible(true);
|
||||
$attrInstance->setValue($mockResponse);
|
||||
|
||||
PMA_sendHeaderLocation($testUri);
|
||||
|
||||
$attrInstance->setValue($restoreInstance);
|
||||
}
|
||||
}
|
||||
69
#pma/test/libraries/core/PMA_ifSetOr_test.php
Normal file
69
#pma/test/libraries/core/PMA_ifSetOr_test.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_IfSetOr_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for PMA_ifSetOr
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVarSet()
|
||||
{
|
||||
$default = 'foo';
|
||||
$in = 'bar';
|
||||
$out = PMA_ifSetOr($in, $default);
|
||||
$this->assertEquals($in, $out);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_ifSetOr
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVarSetWrongType()
|
||||
{
|
||||
$default = 'foo';
|
||||
$in = 'bar';
|
||||
$out = PMA_ifSetOr($in, $default, 'boolean');
|
||||
$this->assertEquals($out, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_ifSetOr
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVarNotSet()
|
||||
{
|
||||
$default = 'foo';
|
||||
// $in is not set!
|
||||
$out = PMA_ifSetOr($in, $default);
|
||||
$this->assertEquals($out, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_ifSetOr
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVarNotSetNoDefault()
|
||||
{
|
||||
// $in is not set!
|
||||
$out = PMA_ifSetOr($in);
|
||||
$this->assertEquals($out, null);
|
||||
}
|
||||
|
||||
}
|
||||
56
#pma/test/libraries/core/PMA_isAllowedDomain_test.php
Normal file
56
#pma/test/libraries/core/PMA_isAllowedDomain_test.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA_isAllowedDomain
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/core.lib.php';
|
||||
|
||||
class PMA_isAllowedDomain_test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for unserializing
|
||||
*
|
||||
* @param string $url URL to test
|
||||
* @param mixed $expected Expected result
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provideURLs
|
||||
*/
|
||||
function testIsAllowedDomain($url, $expected)
|
||||
{
|
||||
$_SERVER['SERVER_NAME'] = 'server.local';
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
PMA_isAllowedDomain($url)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provideURLs()
|
||||
{
|
||||
return array(
|
||||
array('https://www.phpmyadmin.net/', true),
|
||||
array('http://duckduckgo.com\\@github.com', false),
|
||||
array('https://github.com/', true),
|
||||
array('https://github.com:123/', false),
|
||||
array('https://user:pass@github.com:123/', false),
|
||||
array('https://user:pass@github.com/', false),
|
||||
array('https://server.local/', true),
|
||||
array('./relative/', false),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
343
#pma/test/libraries/core/PMA_isValid_test.php
Normal file
343
#pma/test/libraries/core/PMA_isValid_test.php
Normal file
@@ -0,0 +1,343 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_IsValid_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Data provider for testNoVarType
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function providerNoVarTypeProvider()
|
||||
{
|
||||
return array(
|
||||
array(0, false, 0),
|
||||
array(0, false, 1),
|
||||
array(1, false, null),
|
||||
array(1.1, false, null),
|
||||
array('', false, null),
|
||||
array(' ', false, null),
|
||||
array('0', false, null),
|
||||
array('string', false, null),
|
||||
array(array(), false, null),
|
||||
array(array(1, 2, 3), false, null),
|
||||
array(true, false, null),
|
||||
array(false, false, null));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @param mixed $var Variable to check
|
||||
* @param mixed $type Type
|
||||
* @param mixed $compare Compared value
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider providerNoVarTypeProvider
|
||||
*/
|
||||
public function testNoVarType($var, $type, $compare)
|
||||
{
|
||||
$this->assertTrue(PMA_isValid($var, $type, $compare));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVarNotSetAfterTest()
|
||||
{
|
||||
PMA_isValid($var);
|
||||
$this->assertFalse(isset($var));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNotSet()
|
||||
{
|
||||
$this->assertFalse(PMA_isValid($var));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testEmptyString()
|
||||
{
|
||||
$var = '';
|
||||
$this->assertFalse(PMA_isValid($var));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNotEmptyString()
|
||||
{
|
||||
$var = '0';
|
||||
$this->assertTrue(PMA_isValid($var));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testZero()
|
||||
{
|
||||
$var = 0;
|
||||
$this->assertTrue(PMA_isValid($var));
|
||||
$this->assertTrue(PMA_isValid($var, 'int'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNullFail()
|
||||
{
|
||||
$var = null;
|
||||
$this->assertFalse(PMA_isValid($var));
|
||||
|
||||
$var = 'null_text';
|
||||
$this->assertFalse(PMA_isValid($var, 'null'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNotSetArray()
|
||||
{
|
||||
/** @var $array undefined array */
|
||||
$this->assertFalse(PMA_isValid($array['x']));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testScalarString()
|
||||
{
|
||||
$var = 'string';
|
||||
$this->assertTrue(PMA_isValid($var, 'len'));
|
||||
$this->assertTrue(PMA_isValid($var, 'scalar'));
|
||||
$this->assertTrue(PMA_isValid($var));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testScalarInt()
|
||||
{
|
||||
$var = 1;
|
||||
$this->assertTrue(PMA_isValid($var, 'int'));
|
||||
$this->assertTrue(PMA_isValid($var, 'scalar'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testScalarFloat()
|
||||
{
|
||||
$var = 1.1;
|
||||
$this->assertTrue(PMA_isValid($var, 'float'));
|
||||
$this->assertTrue(PMA_isValid($var, 'double'));
|
||||
$this->assertTrue(PMA_isValid($var, 'scalar'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testScalarBool()
|
||||
{
|
||||
$var = true;
|
||||
$this->assertTrue(PMA_isValid($var, 'scalar'));
|
||||
$this->assertTrue(PMA_isValid($var, 'bool'));
|
||||
$this->assertTrue(PMA_isValid($var, 'boolean'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNotScalarArray()
|
||||
{
|
||||
$var = array('test');
|
||||
$this->assertFalse(PMA_isValid($var, 'scalar'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNotScalarNull()
|
||||
{
|
||||
$var = null;
|
||||
$this->assertFalse(PMA_isValid($var, 'scalar'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNumericInt()
|
||||
{
|
||||
$var = 1;
|
||||
$this->assertTrue(PMA_isValid($var, 'numeric'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNumericFloat()
|
||||
{
|
||||
$var = 1.1;
|
||||
$this->assertTrue(PMA_isValid($var, 'numeric'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNumericZero()
|
||||
{
|
||||
$var = 0;
|
||||
$this->assertTrue(PMA_isValid($var, 'numeric'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNumericString()
|
||||
{
|
||||
$var = '+0.1';
|
||||
$this->assertTrue(PMA_isValid($var, 'numeric'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testValueInArray()
|
||||
{
|
||||
$var = 'a';
|
||||
$this->assertTrue(PMA_isValid($var, array('a', 'b',)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testValueNotInArray()
|
||||
{
|
||||
$var = 'c';
|
||||
$this->assertFalse(PMA_isValid($var, array('a', 'b',)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNumericIdentical()
|
||||
{
|
||||
$var = 1;
|
||||
$compare = 1;
|
||||
$this->assertTrue(PMA_isValid($var, 'identic', $compare));
|
||||
|
||||
$var = 1;
|
||||
$compare += 2;
|
||||
$this->assertFalse(PMA_isValid($var, 'identic', $compare));
|
||||
|
||||
$var = 1;
|
||||
$compare = '1';
|
||||
$this->assertFalse(PMA_isValid($var, 'identic', $compare));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testSimilarType
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function providerSimilarType()
|
||||
{
|
||||
return array(
|
||||
array(1, 1),
|
||||
array(1.5, 1.5),
|
||||
array(true, true),
|
||||
array('string', "string"),
|
||||
array(array(1, 2, 3.4), array(1, 2, 3.4)),
|
||||
array(array(1, '2', '3.4', 5, 'text'), array('1', '2', 3.4,'5'))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @param mixed $var Variable
|
||||
* @param mixed $compare Compare
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider providerSimilarType
|
||||
*/
|
||||
public function testSimilarType($var, $compare)
|
||||
{
|
||||
$this->assertTrue(PMA_isValid($var, 'similar', $compare));
|
||||
$this->assertTrue(PMA_isValid($var, 'equal', $compare));
|
||||
$this->assertTrue(PMA_isValid($compare, 'similar', $var));
|
||||
$this->assertTrue(PMA_isValid($compare, 'equal', $var));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_isValid
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testOtherTypes()
|
||||
{
|
||||
$var = new PMA_isValid_test();
|
||||
$this->assertFalse(PMA_isValid($var, 'class'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
56
#pma/test/libraries/core/PMA_safeUnserialize_test.php
Normal file
56
#pma/test/libraries/core/PMA_safeUnserialize_test.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA_safeUnserialize
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/core.lib.php';
|
||||
|
||||
class PMA_safeUnserialize_test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for unserializing
|
||||
*
|
||||
* @param string $data Serialized data
|
||||
* @param mixed $expected Expected result
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provideMySQLHosts
|
||||
*/
|
||||
function testSanitizeMySQLHost($data, $expected)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
PMA_safeUnserialize($data)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provideMySQLHosts()
|
||||
{
|
||||
return array(
|
||||
array('s:6:"foobar";', 'foobar'),
|
||||
array('foobar', null),
|
||||
array('b:0;', false),
|
||||
array('O:1:"a":1:{s:5:"value";s:3:"100";}', null),
|
||||
array('O:8:"stdClass":1:{s:5:"field";O:8:"stdClass":0:{}}', null),
|
||||
array('a:2:{i:0;s:90:"1234567890;a345678901234567890123456789012345678901234567890123456789012345678901234567890";i:1;O:8:"stdClass":0:{}}', null),
|
||||
array(serialize(array(1, 2, 3)), array(1, 2, 3)),
|
||||
array(serialize('string""'), 'string""'),
|
||||
array(serialize(array('foo' => 'bar')), array('foo' => 'bar')),
|
||||
array(serialize(array('1', new stdClass(), '2')), null),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
49
#pma/test/libraries/core/PMA_sanitizeMySQLHost_test.php
Normal file
49
#pma/test/libraries/core/PMA_sanitizeMySQLHost_test.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Test for PMA_sanitizeMySQLHost
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
require_once 'libraries/core.lib.php';
|
||||
|
||||
class PMA_sanitizeMySQLHost_test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for MySQL host sanitizing
|
||||
*
|
||||
* @param string $host Test host name
|
||||
* @param string $expected Expected result
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @dataProvider provideMySQLHosts
|
||||
*/
|
||||
function testSanitizeMySQLHost($host, $expected)
|
||||
{
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
PMA_sanitizeMySQLHost($host)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test data provider
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function provideMySQLHosts()
|
||||
{
|
||||
return array(
|
||||
array('p:foo.bar', 'foo.bar'),
|
||||
array('p:p:foo.bar', 'foo.bar'),
|
||||
array('bar.baz', 'bar.baz'),
|
||||
array('P:example.com', 'example.com'),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
38
#pma/test/libraries/core/PMA_securePath_test.php
Normal file
38
#pma/test/libraries/core/PMA_securePath_test.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* PMA_securePath changes .. to .
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Test for securing path.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_SecurePath extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Test for replacing dots.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testReplaceDots()
|
||||
{
|
||||
$this->assertEquals(
|
||||
PMA_securePath('../../../etc/passwd'),
|
||||
'./././etc/passwd'
|
||||
);
|
||||
$this->assertEquals(
|
||||
PMA_securePath('/var/www/../phpmyadmin'),
|
||||
'/var/www/./phpmyadmin'
|
||||
);
|
||||
$this->assertEquals(
|
||||
PMA_securePath('./path/with..dots/../../file..php'),
|
||||
'./path/with.dots/././file.php'
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
89
#pma/test/libraries/core/PMA_warnMissingExtension_test.php
Normal file
89
#pma/test/libraries/core/PMA_warnMissingExtension_test.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* PMA_warnMissingExtension warns or fails on missing extension.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
|
||||
require_once 'libraries/js_escape.lib.php';
|
||||
require_once 'libraries/sanitizing.lib.php';
|
||||
|
||||
/**
|
||||
* PMA_warnMissingExtension warns or fails on missing extension.
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_WarnMissingExtension_Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Set up
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['PMA_Config'] = new PMA\libraries\Config();
|
||||
$GLOBALS['PMA_Config']->enableBc();
|
||||
$GLOBALS['cfg']['Server'] = array(
|
||||
'host' => 'host',
|
||||
'verbose' => 'verbose',
|
||||
);
|
||||
$GLOBALS['cfg']['OBGzip'] = false;
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
$GLOBALS['pmaThemeImage'] = 'theme/';
|
||||
$GLOBALS['pmaThemePath'] = $_SESSION['PMA_Theme']->getPath();
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['db'] = '';
|
||||
$GLOBALS['table'] = '';
|
||||
|
||||
include_once './libraries/ErrorHandler.php';
|
||||
$GLOBALS['error_handler'] = new PMA\libraries\ErrorHandler();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_warnMissingExtension
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testMissingExtensionFatal()
|
||||
{
|
||||
$ext = 'php_ext';
|
||||
$warn = 'The <a href="' . PMA_getPHPDocLink('book.' . $ext . '.php')
|
||||
. '" target="Documentation"><em>' . $ext
|
||||
. '</em></a> extension is missing. Please check your PHP configuration.';
|
||||
|
||||
$this->expectOutputRegex('@' . preg_quote($warn, '@') . '@');
|
||||
|
||||
PMA_warnMissingExtension($ext, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for PMA_warnMissingExtension
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testMissingExtensionFatalWithExtra()
|
||||
{
|
||||
$ext = 'php_ext';
|
||||
$extra = 'Appended Extra String';
|
||||
|
||||
$warn = 'The <a href="' . PMA_getPHPDocLink('book.' . $ext . '.php')
|
||||
. '" target="Documentation"><em>' . $ext
|
||||
. '</em></a> extension is missing. Please check your PHP configuration.'
|
||||
. ' ' . $extra;
|
||||
|
||||
ob_start();
|
||||
PMA_warnMissingExtension($ext, true, $extra);
|
||||
$printed = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertGreaterThan(0, mb_strpos($printed, $warn));
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user