Merge branch 'develop-olympus' of https://github.com/phpbb/phpbb3 into ticket/11538

This commit is contained in:
Marc Alexander 2013-05-17 12:22:27 +02:00
commit 30e0b694e6
9 changed files with 235 additions and 3 deletions

View file

@ -1005,7 +1005,7 @@ if (!function_exists('stripos'))
*/
function is_absolute($path)
{
return ($path[0] == '/' || (DIRECTORY_SEPARATOR == '\\' && preg_match('#^[a-z]:[/\\\]#i', $path))) ? true : false;
return (isset($path[0]) && $path[0] == '/' || preg_match('#^[a-z]:[/\\\]#i', $path)) ? true : false;
}
/**

View file

@ -1025,8 +1025,8 @@ class install_install extends module
}
// Replace backslashes and doubled slashes (could happen on some proxy setups)
$name = str_replace(array('\\', '//', '/install'), '/', $name);
$data['script_path'] = trim(dirname($name));
$name = str_replace(array('\\', '//'), '/', $name);
$data['script_path'] = trim(dirname(dirname($name)));
}
foreach ($this->advanced_config_options as $config_key => $vars)

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<dataset>
<table name="phpbb_lang">
<column>lang_id</column>
<column>lang_iso</column>
<column>lang_local_name</column>
<column>lang_english_name</column>
<row>
<value>1</value>
<value>en</value>
<value>English</value>
<value>English</value>
</row>
<row>
<value>2</value>
<value>cs</value>
<value>Čeština</value>
<value>Czech</value>
</row>
</table>
</dataset>

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<dataset>
<table name="phpbb_styles">
<column>style_id</column>
<column>style_name</column>
<column>style_active</column>
<row>
<value>1</value>
<value>prosilver</value>
<value>1</value>
</row>
<row>
<value>2</value>
<value>subsilver2</value>
<value>1</value>
</row>
<row>
<value>3</value>
<value>zoo</value>
<value>0</value>
</row>
</table>
</dataset>

View file

@ -0,0 +1,56 @@
<?php
/**
*
* @package testing
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
class phpbb_functions_is_absolute_test extends phpbb_test_case
{
static public function is_absolute_data()
{
return array(
// Empty
array('', false),
// Absolute unix style
array('/etc/phpbb', true),
// Unix does not support \ so that is not an absolute path
array('\etc\phpbb', false),
// Absolute windows style
array('c:\windows', true),
array('C:\Windows', true),
array('c:/windows', true),
array('C:/Windows', true),
// Executable
array('etc/phpbb', false),
array('explorer.exe', false),
// Relative subdir
array('Windows\System32', false),
array('Windows\System32\explorer.exe', false),
array('Windows/System32', false),
array('Windows/System32/explorer.exe', false),
// Relative updir
array('..\Windows\System32', false),
array('..\Windows\System32\explorer.exe', false),
array('../Windows/System32', false),
array('../Windows/System32/explorer.exe', false),
);
}
/**
* @dataProvider is_absolute_data
*/
public function test_is_absolute($path, $expected)
{
$this->assertEquals($expected, is_absolute($path));
}
}

View file

@ -0,0 +1,39 @@
<?php
/**
*
* @package testing
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
class phpbb_functions_language_select_test extends phpbb_database_test_case
{
public function getDataSet()
{
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/language_select.xml');
}
static public function language_select_data()
{
return array(
array('', '<option value="cs">Čeština</option><option value="en">English</option>'),
array('en', '<option value="cs">Čeština</option><option value="en" selected="selected">English</option>'),
array('cs', '<option value="cs" selected="selected">Čeština</option><option value="en">English</option>'),
array('de', '<option value="cs">Čeština</option><option value="en">English</option>'),
);
}
/**
* @dataProvider language_select_data
*/
public function test_language_select($default, $expected)
{
global $db;
$db = $this->new_dbal();
$this->assertEquals($expected, language_select($default));
}
}

View file

@ -0,0 +1,41 @@
<?php
/**
*
* @package testing
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
class phpbb_functions_style_select_test extends phpbb_database_test_case
{
public function getDataSet()
{
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/style_select.xml');
}
static public function style_select_data()
{
return array(
array('', false, '<option value="1">prosilver</option><option value="2">subsilver2</option>'),
array('', true, '<option value="1">prosilver</option><option value="2">subsilver2</option><option value="3">zoo</option>'),
array('1', false, '<option value="1" selected="selected">prosilver</option><option value="2">subsilver2</option>'),
array('1', true, '<option value="1" selected="selected">prosilver</option><option value="2">subsilver2</option><option value="3">zoo</option>'),
array('3', false, '<option value="1">prosilver</option><option value="2">subsilver2</option>'),
array('3', true, '<option value="1">prosilver</option><option value="2">subsilver2</option><option value="3" selected="selected">zoo</option>'),
);
}
/**
* @dataProvider style_select_data
*/
public function test_style_select($default, $all, $expected)
{
global $db;
$db = $this->new_dbal();
$this->assertEquals($expected, style_select($default, $all));
}
}

View file

@ -142,6 +142,14 @@ class phpbb_database_test_connection_manager
}
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
switch ($this->config['dbms'])
{
case 'mysql':
case 'mysqli':
$this->pdo->exec('SET NAMES utf8');
default:
}
}
/**

View file

@ -299,6 +299,50 @@ class phpbb_functional_test_case extends phpbb_test_case
}
}
/**
* Login to the ACP
* You must run login() before calling this.
*/
protected function admin_login($username = 'admin')
{
$this->add_lang('acp/common');
// Requires login first!
if (empty($this->sid))
{
$this->fail('$this->sid is empty. Make sure you call login() before admin_login()');
return;
}
$crawler = $this->request('GET', 'adm/index.php?sid=' . $this->sid);
$this->assertContains($this->lang('LOGIN_ADMIN_CONFIRM'), $crawler->filter('html')->text());
$form = $crawler->selectButton($this->lang('LOGIN'))->form();
foreach ($form->getValues() as $field => $value)
{
if (strpos($field, 'password_') === 0)
{
$crawler = $this->client->submit($form, array('username' => $username, $field => $username));
$this->assert_response_success();
$this->assertContains($this->lang('LOGIN_ADMIN_SUCCESS'), $crawler->filter('html')->text());
$cookies = $this->cookieJar->all();
// The session id is stored in a cookie that ends with _sid - we assume there is only one such cookie
foreach ($cookies as $cookie);
{
if (substr($cookie->getName(), -4) == '_sid')
{
$this->sid = $cookie->getValue();
}
}
break;
}
}
}
protected function add_lang($lang_file)
{
if (is_array($lang_file))