mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-31 05:50:42 +02:00
[ticket/14044] Deduplicate the installers
PHPBB3-14044
This commit is contained in:
committed by
Marc Alexander
parent
cc1a96a804
commit
597297b169
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
use Symfony\Component\BrowserKit\CookieJar;
|
||||
|
||||
require_once __DIR__ . '/../../phpBB/includes/functions_install.php';
|
||||
require_once __DIR__ . '/mock/phpbb_mock_null_installer_task.php';
|
||||
|
||||
class phpbb_functional_test_case extends phpbb_test_case
|
||||
{
|
||||
@@ -285,120 +285,97 @@ class phpbb_functional_test_case extends phpbb_test_case
|
||||
}
|
||||
}
|
||||
|
||||
self::$cookieJar = new CookieJar;
|
||||
self::$client = new Goutte\Client(array(), null, self::$cookieJar);
|
||||
// Set client manually so we can increase the cURL timeout
|
||||
self::$client->setClient(new Guzzle\Http\Client('', array(
|
||||
Guzzle\Http\Client::DISABLE_REDIRECTS => true,
|
||||
'curl.options' => array(
|
||||
CURLOPT_TIMEOUT => 120,
|
||||
),
|
||||
)));
|
||||
$container_builder = new \phpbb\di\container_builder($phpbb_root_path, $phpEx);
|
||||
$container = $container_builder
|
||||
->with_environment('installer')
|
||||
->without_extensions()
|
||||
->without_cache()
|
||||
->with_custom_parameters([
|
||||
'core.disable_super_globals' => false,
|
||||
'installer.create_config_file.options' => [
|
||||
'debug' => true,
|
||||
'environment' => 'test',
|
||||
]
|
||||
])
|
||||
->without_compiled_container()
|
||||
->get_container();
|
||||
|
||||
// Reset the curl handle because it is 0 at this point and not a valid
|
||||
// resource
|
||||
self::$client->getClient()->getCurlMulti()->reset(true);
|
||||
$container->register('installer.install_finish.notify_user')->setSynthetic(true);
|
||||
$container->set('installer.install_finish.notify_user', new phpbb_mock_null_installer_task());
|
||||
$container->compile();
|
||||
|
||||
$language = $container->get('language');
|
||||
$language->add_lang(array('common', 'acp/common', 'acp/board', 'install', 'posting'));
|
||||
|
||||
$iohandler_factory = $container->get('installer.helper.iohandler_factory');
|
||||
$iohandler_factory->set_environment('cli');
|
||||
$iohandler = $iohandler_factory->get();
|
||||
|
||||
$parseURL = parse_url(self::$config['phpbb_functional_url']);
|
||||
|
||||
$crawler = self::request('GET', 'install/index.php?mode=install&language=en');
|
||||
self::assertContains('Welcome to Installation', $crawler->filter('#main')->text());
|
||||
$form = $crawler->selectButton('submit')->form();
|
||||
$output = new \Symfony\Component\Console\Output\NullOutput();
|
||||
$style = new \Symfony\Component\Console\Style\SymfonyStyle(
|
||||
new \Symfony\Component\Console\Input\ArrayInput(array()),
|
||||
$output
|
||||
);
|
||||
$iohandler->set_style($style, $output);
|
||||
|
||||
// install/index.php?mode=install&sub=requirements
|
||||
$crawler = self::submit($form);
|
||||
self::assertContains('Installation compatibility', $crawler->filter('#main')->text());
|
||||
$form = $crawler->selectButton('submit')->form();
|
||||
$installer = $container->get('installer.installer.install');
|
||||
$installer->set_iohandler($iohandler);
|
||||
|
||||
// install/index.php?mode=install&sub=database
|
||||
$crawler = self::submit($form);
|
||||
self::assertContains('Database configuration', $crawler->filter('#main')->text());
|
||||
$form = $crawler->selectButton('submit')->form(array(
|
||||
// Installer uses 3.0-style dbms name
|
||||
'dbms' => str_replace('phpbb\db\driver\\', '', self::$config['dbms']),
|
||||
'dbhost' => self::$config['dbhost'],
|
||||
'dbport' => self::$config['dbport'],
|
||||
'dbname' => self::$config['dbname'],
|
||||
'dbuser' => self::$config['dbuser'],
|
||||
'dbpasswd' => self::$config['dbpasswd'],
|
||||
'table_prefix' => self::$config['table_prefix'],
|
||||
));
|
||||
// Set data
|
||||
$iohandler->set_input('admin_name', 'admin');
|
||||
$iohandler->set_input('admin_pass1', 'adminadmin');
|
||||
$iohandler->set_input('admin_pass2', 'adminadmin');
|
||||
$iohandler->set_input('board_email', 'nobody@example.com');
|
||||
$iohandler->set_input('submit_admin', 'submit');
|
||||
|
||||
// install/index.php?mode=install&sub=database
|
||||
$crawler = self::submit($form);
|
||||
self::assertContains('Successful connection', $crawler->filter('#main')->text());
|
||||
$form = $crawler->selectButton('submit')->form();
|
||||
$iohandler->set_input('default_lang', 'en');
|
||||
$iohandler->set_input('board_name', 'yourdomain.com');
|
||||
$iohandler->set_input('board_description', 'A short text to describe your forum');
|
||||
$iohandler->set_input('submit_board', 'submit');
|
||||
|
||||
// install/index.php?mode=install&sub=administrator
|
||||
$crawler = self::submit($form);
|
||||
self::assertContains('Administrator configuration', $crawler->filter('#main')->text());
|
||||
$form = $crawler->selectButton('submit')->form(array(
|
||||
'default_lang' => 'en',
|
||||
'admin_name' => 'admin',
|
||||
'admin_pass1' => 'adminadmin',
|
||||
'admin_pass2' => 'adminadmin',
|
||||
'board_email' => 'nobody@example.com',
|
||||
));
|
||||
$iohandler->set_input('dbms', str_replace('phpbb\db\driver\\', '', self::$config['dbms']));
|
||||
$iohandler->set_input('dbhost', self::$config['dbhost']);
|
||||
$iohandler->set_input('dbport', self::$config['dbport']);
|
||||
$iohandler->set_input('dbuser', self::$config['dbuser']);
|
||||
$iohandler->set_input('dbpasswd', self::$config['dbpasswd']);
|
||||
$iohandler->set_input('dbname', self::$config['dbname']);
|
||||
$iohandler->set_input('table_prefix', self::$config['table_prefix']);
|
||||
$iohandler->set_input('submit_database', 'submit');
|
||||
|
||||
// install/index.php?mode=install&sub=administrator
|
||||
$crawler = self::submit($form);
|
||||
self::assertContains('Tests passed', $crawler->filter('#main')->text());
|
||||
$form = $crawler->selectButton('submit')->form();
|
||||
$iohandler->set_input('email_enable', true);
|
||||
$iohandler->set_input('smtp_delivery', '1');
|
||||
$iohandler->set_input('smtp_host', 'nxdomain.phpbb.com');
|
||||
$iohandler->set_input('smtp_auth', 'PLAIN');
|
||||
$iohandler->set_input('smtp_user', 'nxuser');
|
||||
$iohandler->set_input('smtp_pass', 'nxpass');
|
||||
$iohandler->set_input('submit_email', 'submit');
|
||||
|
||||
// We have to skip install/index.php?mode=install&sub=config_file
|
||||
// because that step will create a config.php file if phpBB has the
|
||||
// permission to do so. We have to create the config file on our own
|
||||
// in order to get the DEBUG constants defined.
|
||||
$config_php_data = phpbb_create_config_file_data(self::$config, self::$config['dbms'], true, false, true);
|
||||
$config_created = file_put_contents($config_file, $config_php_data) !== false;
|
||||
if (!$config_created)
|
||||
$iohandler->set_input('cookie_secure', '0');
|
||||
$iohandler->set_input('server_protocol', '0');
|
||||
$iohandler->set_input('force_server_vars', $parseURL['scheme'] . '://');
|
||||
$iohandler->set_input('server_name', $parseURL['host']);
|
||||
$iohandler->set_input('server_port', isset($parseURL['port']) ? (int) $parseURL['port'] : 80);
|
||||
$iohandler->set_input('script_path', $parseURL['path']);
|
||||
$iohandler->set_input('submit_server', 'submit');
|
||||
|
||||
do
|
||||
{
|
||||
self::markTestSkipped("Could not write $config_file file.");
|
||||
$installer->run();
|
||||
}
|
||||
|
||||
// We also have to create a install lock that is normally created by
|
||||
// the installer. The file will be removed by the final step of the
|
||||
// installer.
|
||||
$install_lock_file = $phpbb_root_path . 'cache/install_lock';
|
||||
$lock_created = file_put_contents($install_lock_file, '') !== false;
|
||||
if (!$lock_created)
|
||||
{
|
||||
self::markTestSkipped("Could not create $lock_created file.");
|
||||
}
|
||||
@chmod($install_lock_file, 0666);
|
||||
|
||||
// install/index.php?mode=install&sub=advanced
|
||||
$form_data = $form->getValues();
|
||||
unset($form_data['submit']);
|
||||
|
||||
$crawler = self::request('POST', 'install/index.php?mode=install&sub=advanced', $form_data);
|
||||
self::assertContains('The settings on this page are only necessary to set if you know that you require something different from the default.', $crawler->filter('#main')->text());
|
||||
$form = $crawler->selectButton('submit')->form(array(
|
||||
'email_enable' => true,
|
||||
'smtp_delivery' => true,
|
||||
'smtp_host' => 'nxdomain.phpbb.com',
|
||||
'smtp_auth' => 'PLAIN',
|
||||
'smtp_user' => 'nxuser',
|
||||
'smtp_pass' => 'nxpass',
|
||||
'cookie_secure' => false,
|
||||
'force_server_vars' => false,
|
||||
'server_protocol' => $parseURL['scheme'] . '://',
|
||||
'server_name' => 'localhost',
|
||||
'server_port' => isset($parseURL['port']) ? (int) $parseURL['port'] : 80,
|
||||
'script_path' => $parseURL['path'],
|
||||
));
|
||||
|
||||
// install/index.php?mode=install&sub=create_table
|
||||
$crawler = self::submit($form);
|
||||
self::assertContains('The database tables used by phpBB', $crawler->filter('#main')->text());
|
||||
self::assertContains('have been created and populated with some initial data.', $crawler->filter('#main')->text());
|
||||
$form = $crawler->selectButton('submit')->form();
|
||||
|
||||
// install/index.php?mode=install&sub=final
|
||||
$crawler = self::submit($form);
|
||||
self::assertContains('You have successfully installed', $crawler->text());
|
||||
while (file_exists($phpbb_root_path . 'store/install_config.php'));
|
||||
|
||||
copy($config_file, $config_file_test);
|
||||
|
||||
if (file_exists($phpbb_root_path . 'cache/install_lock'))
|
||||
{
|
||||
unlink($phpbb_root_path . 'cache/install_lock');
|
||||
}
|
||||
|
||||
global $phpbb_container, $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $phpbb_log, $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template;
|
||||
$phpbb_container->reset();
|
||||
unset($phpbb_container, $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $phpbb_log, $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template);
|
||||
}
|
||||
|
||||
public function install_ext($extension)
|
||||
|
Reference in New Issue
Block a user