Merge remote-tracking branch 'origin/master'

This commit is contained in:
Michal Čihař 2012-05-14 16:16:38 +02:00
commit cd94a5c765
5 changed files with 458 additions and 228 deletions

8
.gitignore vendored
View File

@ -1,9 +1,9 @@
# Directory for creating releases
/release/
# Configuration files
config.inc.php
config.header.inc.php
config.footer.inc.php
/config.inc.php
/config.header.inc.php
/config.footer.inc.php
# Upload/save dirs
/upload/
/save/
@ -36,4 +36,4 @@ revision-info.php
phpunit.xml
/test/bootstrap.php
# Jenkins
/build/
/build/

View File

@ -1387,7 +1387,7 @@ class PMA_Config
{
static $cookie_path = null;
if (null !== $cookie_path) {
if (null !== $cookie_path && !defined('TESTSUITE')) {
return $cookie_path;
}
@ -1435,17 +1435,6 @@ class PMA_Config
}
}
/**
* Saves config file.
*
* @todo finish
*
* @return void
*/
function save()
{
}
/**
* returns options for font size selection
*

View File

@ -10,6 +10,7 @@
* Include to test.
*/
require_once 'libraries/Advisor.class.php';
require_once 'libraries/Theme.class.php';
require_once 'libraries/php-gettext/gettext.inc';
require_once 'libraries/url_generating.lib.php';
require_once 'libraries/core.lib.php';
@ -24,6 +25,11 @@ class Advisor_test extends PHPUnit_Framework_TestCase
}
/**
* Tests string escaping
*
* @param string $text Text to escape
* @param string $expected Expected output
*
* @dataProvider escapeStrings
*/
public function testEscape($text, $expected)
@ -49,6 +55,12 @@ class Advisor_test extends PHPUnit_Framework_TestCase
}
/**
* Test for adding rule
*
* @param array $rule Rule to test
* @param array $expected Expected rendered rulle in fired/errors list
* @param string $error Expected error string (null if none error expected)
*
* @depends testParse
* @dataProvider rulesProvider
*/
@ -71,32 +83,92 @@ class Advisor_test extends PHPUnit_Framework_TestCase
{
return array(
array(
array('justification' => 'foo', 'name' => 'Basic', 'issue' => 'issue', 'recommendation' => 'Recommend'),
array('justification' => 'foo', 'id' => 'Basic', 'name' => 'Basic', 'issue' => 'issue', 'recommendation' => 'Recommend'),
array(
'justification' => 'foo',
'name' => 'Basic',
'issue' => 'issue',
'recommendation' => 'Recommend'
),
array(
'justification' => 'foo',
'id' => 'Basic',
'name' => 'Basic',
'issue' => 'issue',
'recommendation' => 'Recommend'
),
null,
),
array(
array('justification' => 'foo', 'name' => 'Variable', 'issue' => 'issue', 'recommendation' => 'Recommend {status_var}'),
array('justification' => 'foo', 'id' => 'Variable', 'name' => 'Variable', 'issue' => 'issue', 'recommendation' => 'Recommend <a href="server_variables.php?lang=en&amp;token=token#filter=status_var">status_var</a>'),
array(
'justification' => 'foo',
'name' => 'Variable',
'issue' => 'issue',
'recommendation' => 'Recommend {status_var}'
),
array(
'justification' => 'foo',
'id' => 'Variable',
'name' => 'Variable',
'issue' => 'issue',
'recommendation' => 'Recommend <a href="server_variables.php?lang=en&amp;token=token#filter=status_var">status_var</a>'
),
null,
),
array(
array('justification' => '%s foo | value', 'name' => 'Format', 'issue' => 'issue', 'recommendation' => 'Recommend'),
array('justification' => '0 foo', 'id' => 'Format', 'name' => 'Format', 'issue' => 'issue', 'recommendation' => 'Recommend'),
array(
'justification' => '%s foo | value',
'name' => 'Format',
'issue' => 'issue',
'recommendation' => 'Recommend'
),
array(
'justification' => '0 foo',
'id' => 'Format',
'name' => 'Format',
'issue' => 'issue',
'recommendation' => 'Recommend'
),
null,
),
array(
array('justification' => '%s% foo | value', 'name' => 'Percent', 'issue' => 'issue', 'recommendation' => 'Recommend'),
array('justification' => '0% foo', 'id' => 'Percent', 'name' => 'Percent', 'issue' => 'issue', 'recommendation' => 'Recommend'),
array(
'justification' => '%s% foo | value',
'name' => 'Percent',
'issue' => 'issue',
'recommendation' => 'Recommend'
),
array(
'justification' => '0% foo',
'id' => 'Percent',
'name' => 'Percent',
'issue' => 'issue',
'recommendation' => 'Recommend'
),
null,
),
array(
array('justification' => '"\'foo', 'name' => 'Quotes', 'issue' => 'issue', 'recommendation' => 'Recommend"\''),
array('justification' => '"\'foo', 'id' => 'Quotes', 'name' => 'Quotes', 'issue' => 'issue', 'recommendation' => 'Recommend"\''),
array(
'justification' => '"\'foo',
'name' => 'Quotes',
'issue' => 'issue',
'recommendation' => 'Recommend"\''
),
array(
'justification' => '"\'foo',
'id' => 'Quotes',
'name' => 'Quotes',
'issue' => 'issue',
'recommendation' => 'Recommend"\''
),
null,
),
array(
array('justification' => 'foo | fsafdsa', 'name' => 'Failure', 'issue' => 'issue', 'recommendation' => 'Recommend'),
array(
'justification' => 'foo | fsafdsa',
'name' => 'Failure',
'issue' => 'issue',
'recommendation' => 'Recommend'
),
array(),
'Failed formatting string for rule \'Failure\'. PHP threw following error: Use of undefined constant fsafdsa - assumed \'fsafdsa\'',
),

View File

@ -33,6 +33,7 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
protected function setUp()
{
$this->object = new PMA_Config;
$GLOBALS['server'] = 0;
}
/**
@ -67,55 +68,97 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
$this->object->set('PMA_USR_BROWSER_VER', 5);
$this->object->checkOutputCompression();
$this->assertEquals('auto', $this->object->get("OBGzip"));
/*
Disabled as ini_set is quite often not allowed
@ini_set('zlib.output_compression', 'Off');
$this->object->checkOutputCompression();
$this->assertFalse($this->object->get("OBGzip"));
@ini_set('zlib.output_compression', 'On');
*/
}
public function testCheckClient()
/**
* Tests client parsing code.
*
* @param string $agent User agent string
* @param string $os Expected parsed OS (or null if none)
* @param string $browser Expected parsed browser (or null if none)
* @param string $version Expected browser version (or null if none)
*
* @dataProvider userAgentProvider
*/
public function testCheckClient($agent, $os, $browser = null, $version = null)
{
$_SERVER['HTTP_USER_AGENT'] = 'Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00';
$_SERVER['HTTP_USER_AGENT'] = $agent;
$this->object->checkClient();
$this->assertEquals("Linux", $this->object->get('PMA_USR_OS'), "User OS expected to be Linux");
$this->assertEquals("OPERA", $this->object->get('PMA_USR_BROWSER_AGENT'), "Browser expected to be Opera");
$this->assertEquals("9.80", $this->object->get('PMA_USR_BROWSER_VER'), "Browser ver expected to be 9.80");
$this->assertEquals($os, $this->object->get('PMA_USR_OS'));
if ($os != null) {
$this->assertEquals(
$browser,
$this->object->get('PMA_USR_BROWSER_AGENT')
);
}
if ($version != null) {
$this->assertEquals(
$version,
$this->object->get('PMA_USR_BROWSER_VER')
);
}
}
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/528.16 OmniWeb/622.8.0.112941';
$this->object->checkClient();
$this->assertEquals("Mac", $this->object->get('PMA_USR_OS'), "User OS expected to be Mac");
$this->assertEquals("OMNIWEB", $this->object->get('PMA_USR_BROWSER_AGENT'), "Browser expected to be OmniWeb");
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)';
$this->object->checkClient();
$this->assertEquals("Win", $this->object->get('PMA_USR_OS'), "User OS expected to be Windows");
$this->assertEquals("IE", $this->object->get('PMA_USR_BROWSER_AGENT'), "Browser expected to be IE");
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Unknown; U; Unix BSD/SYSV system; C -) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.10.2';
$this->object->checkClient();
$this->assertEquals("Unix", $this->object->get('PMA_USR_OS'), "User OS expected to be Unix");
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/4.0 (compatible; OS/2 Webexplorer)';
$this->object->checkClient();
$this->assertEquals("OS/2", $this->object->get('PMA_USR_OS'), "User OS expected to be OS/2");
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows; U; Win95; en-US; rv:1.9b) Gecko/20031208';
$this->object->checkClient();
$this->assertEquals("GECKO", $this->object->get('PMA_USR_BROWSER_AGENT'), "Browser expected to be Gecko");
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (compatible; Konqueror/4.5; NetBSD 5.0.2; X11; amd64; en_US) KHTML/4.5.4 (like Gecko)';
$this->object->checkClient();
$this->assertEquals("KONQUEROR", $this->object->get('PMA_USR_BROWSER_AGENT'), "Browser expected to be Konqueror");
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0';
$this->object->checkClient();
$this->assertEquals("MOZILLA", $this->object->get('PMA_USR_BROWSER_AGENT'), "Browser expected to be Mozilla");
$this->assertEquals("Linux", $this->object->get('PMA_USR_OS'), "User OS expected to be Linux");
public function userAgentProvider()
{
return array(
array(
'Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00',
'Linux',
'OPERA',
'9.80',
),
array(
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/528.16 OmniWeb/622.8.0.112941',
'Mac',
'OMNIWEB',
'622',
),
array(
'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)',
'Win',
'IE',
'8.0',
),
array(
'Mozilla/5.0 (Unknown; U; Unix BSD/SYSV system; C -) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.10.2',
'Unix',
'SAFARI',
'5.0.419',
),
array(
'Mozilla/5.0 (Windows; U; Win95; en-US; rv:1.9b) Gecko/20031208',
'Win',
'GECKO',
'1.9',
),
array(
'Mozilla/5.0 (compatible; Konqueror/4.5; NetBSD 5.0.2; X11; amd64; en_US) KHTML/4.5.4 (like Gecko)',
'Other',
'KONQUEROR',
),
array(
'Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0',
'Linux',
'MOZILLA',
'5.0',
),
/**
* @todo Is this version really expected?
*/
array(
'Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0',
'Linux',
'MOZILLA',
'5.0',
),
array(
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.4+ (KHTML, like Gecko) Version/5.0 Safari/535.4+ SUSE/12.1 (3.2.1) Epiphany/3.2.1',
'Linux',
'SAFARI',
'5.0.535',
),
);
}
@ -135,16 +178,28 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
if (!@function_exists('imagecreatetruecolor')) {
$this->object->checkGd2();
$this->assertEquals(0, $this->object->get('PMA_IS_GD2'), 'Function imagecreatetruecolor does not exist, PMA_IS_GD2 should be 0');
$this->assertEquals(
0,
$this->object->get('PMA_IS_GD2'),
'imagecreatetruecolor does not exist, PMA_IS_GD2 should be 0'
);
}
if (@function_exists('gd_info')) {
$this->object->checkGd2();
$gd_nfo = gd_info();
if (strstr($gd_nfo["GD Version"], '2.')) {
$this->assertEquals(1, $this->object->get('PMA_IS_GD2'), 'GD Version >= 2, PMA_IS_GD2 should be 1');
$this->assertEquals(
1,
$this->object->get('PMA_IS_GD2'),
'GD Version >= 2, PMA_IS_GD2 should be 1'
);
} else {
$this->assertEquals(0, $this->object->get('PMA_IS_GD2'), 'GD Version < 2, PMA_IS_GD2 should be 0');
$this->assertEquals(
0,
$this->object->get('PMA_IS_GD2'),
'GD Version < 2, PMA_IS_GD2 should be 0'
);
}
}
@ -156,26 +211,51 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
if (preg_match('@GD Version[[:space:]]*\(.*\)@', $a, $v)) {
if (strstr($v, '2.')) {
$this->assertEquals(1, $this->object->get('PMA_IS_GD2'), 'PMA_IS_GD2 should be 1');
$this->assertEquals(
1,
$this->object->get('PMA_IS_GD2'),
'PMA_IS_GD2 should be 1'
);
} else {
$this->assertEquals(0, $this->object->get('PMA_IS_GD2'), 'PMA_IS_GD2 should be 0');
$this->assertEquals(
0,
$this->object->get('PMA_IS_GD2'),
'PMA_IS_GD2 should be 0'
);
}
}
}
public function testCheckWebServer()
/**
* Web server detection test
*
* @param string $server Server indentification
* @param boolean $iis Whether server should be detected as IIS
*
* @dataProvider serverNames
*/
public function testCheckWebServer($server, $iis)
{
$_SERVER['SERVER_SOFTWARE'] = "Microsoft-IIS 7.0";
$_SERVER['SERVER_SOFTWARE'] = $server;
$this->object->checkWebServer();
$this->assertEquals(1, $this->object->get('PMA_IS_IIS'));
$_SERVER['SERVER_SOFTWARE'] = "Apache/2.2.17";
$this->object->checkWebServer();
$this->assertEquals(0, $this->object->get('PMA_IS_IIS'));
$this->assertEquals($iis, $this->object->get('PMA_IS_IIS'));
unset($_SERVER['SERVER_SOFTWARE']);
}
public function serverNames()
{
return array(
array(
"Microsoft-IIS 7.0",
1,
),
array(
"Apache/2.2.17",
0,
),
);
}
public function testCheckWebServerOs()
{
$this->object->checkWebServerOs();
@ -183,20 +263,20 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
if (defined('PHP_OS')) {
switch (PHP_OS) {
case stristr(PHP_OS, 'win'):
$this->assertEquals(1, $this->object->get('PMA_IS_WINDOWS'), 'PHP_OS equals: ' . PHP_OS . ' PMA_IS_WINDOWS should be 1');
$this->assertEquals(1, $this->object->get('PMA_IS_WINDOWS'));
break;
case stristr(PHP_OS, 'OS/2'):
$this->assertEquals(1, $this->object->get('PMA_IS_WINDOWS'), 'PHP_OS is OS/2 PMA_IS_WINDOWS should be 1 (No file permissions like Windows)');
$this->assertEquals(1, $this->object->get('PMA_IS_WINDOWS'));
break;
case stristr(PHP_OS, 'Linux'):
$this->assertEquals(0, $this->object->get('PMA_IS_WINDOWS'));
break;
}
} else {
$this->assertEquals(0, $this->object->get('PMA_IS_WINDOWS'), 'PMA_IS_WINDOWS Default to Unix or Equiv');
$this->assertEquals(0, $this->object->get('PMA_IS_WINDOWS'));
define('PHP_OS', 'Windows');
$this->assertEquals(1, $this->object->get('PMA_IS_WINDOWS'), 'PMA_IS_WINDOWS must be 1');
$this->assertEquals(1, $this->object->get('PMA_IS_WINDOWS'));
}
}
@ -208,7 +288,11 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
$php_str_ver = phpversion();
$match = array();
preg_match('@([0-9]{1,2}).([0-9]{1,2}).([0-9]{1,2})@', phpversion(), $match);
preg_match(
'@([0-9]{1,2}).([0-9]{1,2}).([0-9]{1,2})@',
phpversion(),
$match
);
if (isset($match) && ! empty($match[1])) {
if (! isset($match[2])) {
$match[2] = 0;
@ -216,15 +300,31 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
if (! isset($match[3])) {
$match[3] = 0;
}
$php_int_ver = (int) sprintf('%d%02d%02d', $match[1], $match[2], $match[3]);
$php_int_ver = (int) sprintf(
'%d%02d%02d',
$match[1],
$match[2],
$match[3]
);
} else {
$php_int_ver = 0;
}
$this->assertEquals($php_str_ver, $this->object->get('PMA_PHP_STR_VERSION'));
$this->assertEquals($php_int_ver, $this->object->get('PMA_PHP_INT_VERSION'));
$this->assertEquals(
$php_str_ver,
$this->object->get('PMA_PHP_STR_VERSION')
);
$this->assertEquals(
$php_int_ver,
$this->object->get('PMA_PHP_INT_VERSION')
);
}
/**
* Tests loading of default values
*
* @group large
*/
public function testLoadDefaults()
{
$prevDefaultSource = $this->object->default_source;
@ -241,16 +341,29 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
$this->assertTrue($this->object->loadDefaults());
$this->assertEquals($this->object->default_source_mtime, filemtime($prevDefaultSource));
$this->assertEquals($loadedConf['Servers'][1], $this->object->default_server);
$this->assertEquals(
$this->object->default_source_mtime,
filemtime($prevDefaultSource)
);
$this->assertEquals(
$loadedConf['Servers'][1],
$this->object->default_server
);
unset($loadedConf['Servers']);
$this->assertEquals($loadedConf, $this->object->default);
$expectedSettings = PMA_array_merge_recursive($this->object->settings, $loadedConf);
$expectedSettings = PMA_array_merge_recursive(
$this->object->settings,
$loadedConf
);
$this->assertEquals($expectedSettings, $this->object->settings, 'Settings loaded wrong');
$this->assertEquals(
$expectedSettings,
$this->object->settings,
'Settings loaded wrong'
);
$this->assertFalse($this->object->error_config_default_file);
}
@ -261,9 +374,6 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
$this->assertFalse($this->object->checkConfigSource());
$this->assertEquals(0, $this->object->source_mtime);
// if(! is_readable($this->object->getSource()))
// $this->markTestSkipped('Configuration file is read only');
$this->object->setSource('libraries/config.default.php');
$this->assertNotEmpty($this->object->getSource());
@ -271,6 +381,7 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
}
/**
* Test getting and setting config values
*
* @covers PMA_Config::get
* @covers PMA_Config::set
@ -287,6 +398,8 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
}
/**
* Tests setting configuration source
*
* @covers PMA_Config::getSource
* @covers PMA_Config::setSource
*/
@ -298,35 +411,72 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
$this->object->setSource("config.sample.inc.php");
$this->assertEquals("config.sample.inc.php", $this->object->getSource(), "Cant set new source");
$this->assertEquals(
"config.sample.inc.php",
$this->object->getSource(),
"Cant set new source"
);
}
public function testCheckPmaAbsoluteUriEmpty()
{
$this->object->set('PmaAbsoluteUri', '');
$this->assertFalse($this->object->checkPmaAbsoluteUri(), 'PmaAbsoluteUri is not set and should be error');
$this->assertTrue($this->object->error_pma_uri, 'PmaAbsoluteUri is not set and should be error');
$this->assertFalse(
$this->object->checkPmaAbsoluteUri(),
'PmaAbsoluteUri is not set and should be error'
);
$this->assertTrue(
$this->object->error_pma_uri,
'PmaAbsoluteUri is not set and should be error'
);
}
/**
* Checks correcting of absolute URI
*
* @param string $real Real URI received
* @param string $expected Expected corrected URI
*
* @depends testCheckPmaAbsoluteUriEmpty
* @dataProvider absoluteUris
*/
public function testCheckPmaAbsoluteUriNormal()
public function testCheckPmaAbsoluteUri($real, $expected)
{
$this->object->set('PmaAbsoluteUri', 'http://localhost/phpmyadmin/');
$this->object->set('PmaAbsoluteUri', $real);
$this->object->checkPmaAbsoluteUri();
$this->assertEquals("http://localhost/phpmyadmin/", $this->object->get('PmaAbsoluteUri'));
$this->object->set('PmaAbsoluteUri', 'http://localhost/phpmyadmin');
$this->object->checkPmaAbsoluteUri();
$this->assertEquals("http://localhost/phpmyadmin/", $this->object->get('PmaAbsoluteUri'), 'Expected trailing slash at the end of the phpMyAdmin uri');
$this->assertEquals($expected, $this->object->get('PmaAbsoluteUri'));
}
public function absoluteUris()
{
return array(
array(
'http://localhost/phpmyadmin/',
'http://localhost/phpmyadmin/',
),
array(
'http://localhost/phpmyadmin',
'http://localhost/phpmyadmin/',
),
array(
'localhost/phpmyadmin/',
'http://localhost/phpmyadmin/',
),
array(
'http://user:pwd@localhost/phpmyadmin/index.php',
"http://user:pwd@localhost/phpmyadmin/index.php/",
),
array(
'https://user:pwd@localhost/phpmyadmin/index.php',
"https://user:pwd@localhost/phpmyadmin/index.php/",
),
);
}
/**
* Test for absolute URI composition
*
* @depends testCheckPmaAbsoluteUriNormal
* @depends testCheckPmaAbsoluteUri
*/
public function testCheckPmaAbsoluteUriScheme()
{
@ -338,24 +488,10 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
$this->object->set('PmaAbsoluteUri', '');
$this->object->checkPmaAbsoluteUri();
$this->assertEquals("http://localhost/", $this->object->get('PmaAbsoluteUri'));
}
/**
*
* @depends testCheckPmaAbsoluteUriScheme
*/
public function testCheckPmaAbsoluteUriUser()
{
$this->object->set('PmaAbsoluteUri', 'http://user:pwd@localhost/phpmyadmin/index.php');
$this->object->checkPmaAbsoluteUri();
$this->assertEquals("http://user:pwd@localhost/phpmyadmin/index.php/", $this->object->get('PmaAbsoluteUri'));
$this->object->set('PmaAbsoluteUri', 'https://user:pwd@localhost/phpmyadmin/index.php');
$this->object->checkPmaAbsoluteUri();
$this->assertEquals("https://user:pwd@localhost/phpmyadmin/index.php/", $this->object->get('PmaAbsoluteUri'));
$this->assertEquals(
"http://localhost/",
$this->object->get('PmaAbsoluteUri')
);
}
public function testCheckCollationConnection()
@ -363,7 +499,10 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
$_REQUEST['collation_connection'] = 'utf-8';
$this->object->checkCollationConnection();
$this->assertEquals($_REQUEST['collation_connection'], $this->object->get('collation_connection'));
$this->assertEquals(
$_REQUEST['collation_connection'],
$this->object->get('collation_connection')
);
}
public function testIsHttps()
@ -402,6 +541,7 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
}
/**
* Test for checking cookie path
*
* @depends testDetectHttps
*/
@ -413,11 +553,13 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
}
/**
* Test for backward compatibility globals
*
* @depends testCheckSystem
* @depends testCheckWebServer
* @depends testLoadDefaults
* @depends testLoad
*
* @group large
*/
public function testEnableBc()
{
@ -444,77 +586,7 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
}
/**
*
* @todo Implement testSave().
*/
public function testSave()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
*
* @todo Implement testGetFontsizeForm().
*/
public function testGetFontsizeForm()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
*
* @todo Implement testRemoveCookie().
*/
public function testRemoveCookie()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
*
* @todo Implement testCheckFontsize().
*/
public function testCheckFontsize()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
*
* @todo Implement testCheckUpload().
*/
public function testCheckUpload()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
*
* @todo Implement testCheckUploadSize().
*/
public function testCheckUploadSize()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* Should check for https detection
*
* @todo Implement testCheckIsHttps().
*/
@ -527,53 +599,93 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
}
/**
* Test for getting cookie path
*
* @todo Implement testGetCookiePath().
* @param string $absolute The absolute URL used for phpMyAdmin
* @param string $expected Expected cookie path
*
* @dataProvider cookieUris
*/
public function testGetCookiePath()
public function testGetCookiePath($absolute, $expected)
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
$this->object->set('PmaAbsoluteUri', $absolute);
$this->assertEquals($expected, $this->object->getCookiePath());
}
public function cookieUris()
{
return array(
array(
'http://example.net/phpmyadmin/',
'/phpmyadmin/',
),
array(
'http://example.net/',
'/',
),
);
}
/**
* Tests loading of config file
*
* @todo finish implementing test + dependencies
* @param string $source File name of config to load
* @param boolean $result Expected result of loading
*
* @dataProvider configPaths
*/
public function testLoad()
public function testLoad($source, $result)
{
$this->assertFalse($this->object->load());
if ($result) {
$this->assertTrue($this->object->load($source));
} else {
$this->assertFalse($this->object->load($source));
}
}
$this->assertTrue($this->object->load('./libraries/config.default.php'));
public function configPaths()
{
return array(
array(
'./test/test_data/config.inc.php',
true,
),
array(
'./test/test_data/config-nonexisting.inc.php',
false,
),
array(
'./libraries/config.default.php',
true,
),
);
}
/**
* Test for loading user preferences
*
* @todo Implement testLoadUserPreferences().
* @todo Test actualy preferences loading
*/
public function testLoadUserPreferences()
{
$this->assertNull($this->object->loadUserPreferences());
// echo $GLOBALS['cfg']['ServerDefault'];
}
/**
*
* @todo Implement testSetUserValue().
* Test for setting user config value
*/
public function testSetUserValue()
{
$this->object->setUserValue(null, 'lang', 'cs', 'en');
$this->object->setUserValue("TEST_COOKIE_USER_VAL", '', 'cfg_val_1');
$this->assertEquals($this->object->getUserValue("TEST_COOKIE_USER_VAL", 'fail'), 'cfg_val_1');
$this->assertEquals(
$this->object->getUserValue("TEST_COOKIE_USER_VAL", 'fail'),
'cfg_val_1'
);
}
/**
*
* @todo Implement testGetUserValue().
* Test for getting user config value
*/
public function testGetUserValue()
{
@ -581,6 +693,7 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
}
/**
* Should test getting unique value for theme
*
* @todo Implement testGetThemeUniqueValue().
*/
@ -593,6 +706,7 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
}
/**
* Should test checking of config permissions
*
* @todo Implement testCheckPermissions().
*/
@ -606,23 +720,51 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
/**
*
* @todo Implement testSetCookie().
* Test for setting cookies
*/
public function testSetCookie()
{
$this->assertFalse($this->object->setCookie('TEST_DEF_COOKIE', 'test_def_123', 'test_def_123'));
$this->assertFalse(
$this->object->setCookie(
'TEST_DEF_COOKIE',
'test_def_123',
'test_def_123'
)
);
$this->assertTrue($this->object->setCookie('TEST_CONFIG_COOKIE', 'test_val_123', null, 3600));
$this->assertTrue(
$this->object->setCookie(
'TEST_CONFIG_COOKIE',
'test_val_123',
null,
3600
)
);
$this->assertTrue($this->object->setCookie('TEST_CONFIG_COOKIE', '', 'default_val'));
$this->assertTrue(
$this->object->setCookie(
'TEST_CONFIG_COOKIE',
'',
'default_val'
)
);
$_COOKIE['TEST_MANUAL_COOKIE'] = 'some_test_val';
$this->assertTrue($this->object->setCookie('TEST_MANUAL_COOKIE', 'other', 'other'));
$this->assertTrue(
$this->object->setCookie(
'TEST_MANUAL_COOKIE',
'other',
'other'
)
);
}
/**
* Tests for rewriting URL to SSL variant
*
* @param string $original Original URL
* @param string $expected Expected URL rewritten to SSL
*
* @dataProvider sslUris
*/
@ -635,10 +777,22 @@ class PMA_ConfigTest extends PHPUnit_Framework_TestCase
public function sslUris()
{
return array(
array('http://server.foo/path/', 'https://server.foo:443/path/'),
array('http://server.foo:80/path/', 'https://server.foo:443/path/'),
array('http://server.foo.bar:123/path/', 'https://server.foo.bar:443/path/'),
array('http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/', 'https://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:443/'),
array(
'http://server.foo/path/',
'https://server.foo:443/path/'
),
array(
'http://server.foo:80/path/',
'https://server.foo:443/path/'
),
array(
'http://server.foo.bar:123/path/',
'https://server.foo.bar:443/path/'
),
array(
'http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/',
'https://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:443/'
),
);
}
}

View File

@ -0,0 +1,15 @@
<?php
/**
* Minimal config file for test
*/
$i = 0;
/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';