MDL-39441 behat: Restrict config.php allowed settings

This commit is contained in:
David Monllao 2013-07-12 21:42:04 +02:00
parent 07bbbcf174
commit f38e22ed91
3 changed files with 34 additions and 0 deletions

View file

@ -142,6 +142,9 @@ foreach ($vars as $var) {
$CFG->{$var} = $CFG->{'behat_' . $var}; $CFG->{$var} = $CFG->{'behat_' . $var};
} }
// Clean $CFG extra values before performing any action.
behat_clean_init_config();
$CFG->noemailever = true; $CFG->noemailever = true;
$CFG->passwordsaltmain = 'moodle'; $CFG->passwordsaltmain = 'moodle';

View file

@ -141,3 +141,30 @@ function behat_error_handler($errno, $errstr, $errfile, $errline, $errcontext) {
// Also use the internal error handler so we keep the usual behaviour. // Also use the internal error handler so we keep the usual behaviour.
return false; return false;
} }
/**
* Restrict the config.php settings allowed.
*
* When running the behat features the config.php
* settings should not affect the results.
*
* @return void
*/
function behat_clean_init_config() {
global $CFG;
$allowed = array_flip(array(
'wwwroot', 'dataroot', 'dirroot', 'admin', 'directorypermissions', 'filepermissions',
'dbtype', 'dblibrary', 'dbhost', 'dbname', 'dbuser', 'dbpass', 'prefix', 'dboptions',
'proxyhost', 'proxyport', 'proxytype', 'proxyuser', 'proxypassword', 'proxybypass',
'theme'
));
// Also allowing behat_ prefixed attributes.
foreach ($CFG as $key => $value) {
if (!isset($allowed[$key]) && strpos($key, 'behat_') !== 0) {
unset($CFG->{$key});
}
}
}

View file

@ -131,6 +131,10 @@ if (!defined('BEHAT_SITE_RUNNING') && !empty($CFG->behat_dataroot) &&
// actions like reset the site or use data generators. // actions like reset the site or use data generators.
define('BEHAT_SITE_RUNNING', true); define('BEHAT_SITE_RUNNING', true);
// Clean extra config.php settings.
require_once(__DIR__ . '/../lib/behat/lib.php');
behat_clean_init_config();
$CFG->wwwroot = $CFG->behat_wwwroot; $CFG->wwwroot = $CFG->behat_wwwroot;
$CFG->passwordsaltmain = 'moodle'; $CFG->passwordsaltmain = 'moodle';
$CFG->prefix = $CFG->behat_prefix; $CFG->prefix = $CFG->behat_prefix;