X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Fsrc%2FCore%2FConsole%2FAutomaticInstallationConsoleTest.php;h=9ed3d404f21a57bed039c9bada2a6503ed5c5989;hb=2d1e7711783828b9be17d24706055c3345531fae;hp=6fc803f8428add2f1e76b4e17ebad16e0b8c2419;hpb=92d3d77e76aa21dafca14ee515f664fb81290866;p=friendica.git diff --git a/tests/src/Core/Console/AutomaticInstallationConsoleTest.php b/tests/src/Core/Console/AutomaticInstallationConsoleTest.php index 6fc803f842..9ed3d404f2 100644 --- a/tests/src/Core/Console/AutomaticInstallationConsoleTest.php +++ b/tests/src/Core/Console/AutomaticInstallationConsoleTest.php @@ -2,9 +2,16 @@ namespace Friendica\Test\src\Core\Console; +use Friendica\Core\Config\Cache\ConfigCache; use Friendica\Core\Console\AutomaticInstallation; +use Friendica\Core\Installer; +use Friendica\Core\Logger; use Friendica\Test\Util\DBAMockTrait; use Friendica\Test\Util\DBStructureMockTrait; +use Friendica\Test\Util\L10nMockTrait; +use Friendica\Test\Util\RendererMockTrait; +use Friendica\Util\BaseURL; +use Friendica\Util\Logger\VoidLogger; use org\bovigo\vfs\vfsStream; use org\bovigo\vfs\vfsStreamFile; @@ -15,14 +22,10 @@ use org\bovigo\vfs\vfsStreamFile; */ class AutomaticInstallationConsoleTest extends ConsoleTest { + use L10nMockTrait; use DBAMockTrait; use DBStructureMockTrait; - - private $db_host; - private $db_port; - private $db_data; - private $db_user; - private $db_pass; + use RendererMockTrait; /** * @var vfsStreamFile Assert file without DB credentials @@ -33,55 +36,130 @@ class AutomaticInstallationConsoleTest extends ConsoleTest */ private $assertFileDb; + /** + * @var ConfigCache The configuration cache to check after each test + */ + private $configCache; + public function setUp() { parent::setUp(); - if ($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.ini.php')) { + if ($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.config.php')) { $this->root->getChild('config') - ->removeChild('local.ini.php'); + ->removeChild('local.config.php'); } - $this->db_host = getenv('MYSQL_HOST'); - $this->db_port = (!empty(getenv('MYSQL_PORT'))) ? getenv('MYSQL_PORT') : null; - $this->db_data = getenv('MYSQL_DATABASE'); - $this->db_user = getenv('MYSQL_USERNAME') . getenv('MYSQL_USER'); - $this->db_pass = getenv('MYSQL_PASSWORD'); - - $this->mockConfigGet('config', 'php_path', false); - - $assertFile = dirname(__DIR__) . DIRECTORY_SEPARATOR . - '..' . DIRECTORY_SEPARATOR . - '..' . DIRECTORY_SEPARATOR . - 'datasets' . DIRECTORY_SEPARATOR . - 'ini' . DIRECTORY_SEPARATOR . - 'assert.ini.php'; - $this->assertFile = vfsStream::newFile('assert.ini.php') - ->at($this->root->getChild('test')) - ->setContent($this->replaceEnvironmentSettings($assertFile, false)); - $this->assertFileDb = vfsStream::newFile('assert_db.ini.php') - ->at($this->root->getChild('test')) - ->setContent($this->replaceEnvironmentSettings($assertFile, true)); + $this->mockL10nT(); + + $this->configCache = new ConfigCache(); + $this->configCache->set('system', 'basepath', $this->root->url()); + $this->configCache->set('config', 'php_path', trim(shell_exec('which php'))); + $this->configCache->set('system', 'theme', 'smarty3'); + + $this->mockApp($this->root, true); + + $this->configMock->shouldReceive('set')->andReturnUsing(function ($cat, $key, $value) { + if ($key !== 'basepath') { + return $this->configCache->set($cat, $key, $value); + } else { + return true; + } + }); + + $this->configMock->shouldReceive('has')->andReturn(true); + $this->configMock->shouldReceive('get')->andReturnUsing(function ($cat, $key) { + return $this->configCache->get($cat, $key); + }); + $this->configMock->shouldReceive('load')->andReturnUsing(function ($config, $overwrite = false) { + return $this->configCache->load($config, $overwrite); + }); + + $this->mode->shouldReceive('isInstall')->andReturn(true); + Logger::init(new VoidLogger()); } /** - * Replacing environment specific variables in the assertion file + * Returns the dataset for each automatic installation test * - * @param string $file The file to compare in later tests - * @param bool $withDb If true, db settings are replaced too - * @return string The file content + * @return array the dataset */ - private function replaceEnvironmentSettings($file, $withDb) + public function dataInstaller() { - $fileContent = file_get_contents($file); - $fileContent = str_replace("/usr/bin/php", trim(shell_exec('which php')), $fileContent); - if ($withDb) { - $fileContent = str_replace("hostname = \"\"", "hostname = \"" . $this->db_host . (!empty($this->db_port) ? ":" . $this->db_port : "") . "\"", $fileContent); - $fileContent = str_replace("username = \"\"", "username = \"" . $this->db_user . "\"", $fileContent); - $fileContent = str_replace("password = \"\"", "password = \"" . $this->db_pass . "\"", $fileContent); - $fileContent = str_replace("database = \"\"", "database = \"" . $this->db_data . "\"", $fileContent); - } - return $fileContent; + return [ + 'empty' => [ + 'data' => [ + 'database' => [ + 'hostname' => '', + 'username' => '', + 'password' => '', + 'database' => '', + 'port' => '', + ], + 'config' => [ + 'php_path' => '', + 'hostname' => 'friendica.local', + 'admin_email' => '', + ], + 'system' => [ + 'basepath' => '', + 'urlpath' => '', + 'url' => 'http://friendica.local', + 'ssl_policy' => 0, + 'default_timezone' => '', + 'language' => '', + ], + ], + ], + 'normal' => [ + 'data' => [ + 'database' => [ + 'hostname' => 'testhost', + 'port' => 3306, + 'username' => 'friendica', + 'password' => 'a password', + 'database' => 'database', + ], + 'config' => [ + 'php_path' => '', + 'hostname' => 'friendica.local', + 'admin_email' => 'admin@philipp.info', + ], + 'system' => [ + 'urlpath' => 'test/it', + 'url' => 'http://friendica.local/test/it', + 'basepath' => '', + 'ssl_policy' => '2', + 'default_timezone' => 'en', + 'language' => 'Europe/Berlin', + ], + ], + ], + 'special' => [ + 'data' => [ + 'database' => [ + 'hostname' => 'testhost.new.domain', + 'port' => 3341, + 'username' => 'fr"§%ica', + 'password' => '$%\"gse', + 'database' => 'db', + ], + 'config' => [ + 'php_path' => '', + 'hostname' => 'friendica.local', + 'admin_email' => 'admin@philipp.info', + ], + 'system' => [ + 'urlpath' => 'test/it', + 'url' => 'https://friendica.local/test/it', + 'basepath' => '', + 'ssl_policy' => '1', + 'default_timezone' => 'en', + 'language' => 'Europe/Berlin', + ], + ], + ], + ]; } private function assertFinished($txt, $withconfig = false, $copyfile = false) @@ -168,7 +246,7 @@ Creating config file... Checking database... [Error] -------- -: +Could not connect to database.: FIN; @@ -176,173 +254,330 @@ FIN; $this->assertEquals($finished, $txt); } + private function assertStuckURL($txt) + { + $finished = <<assertEquals($finished, $txt); + } + + /** + * Asserts one config entry + * + * @param string $cat The category to test + * @param string $key The key to test + * @param null|array $assertion The asserted value (null = empty, or array/string) + * @param string $default_value The default value + */ + public function assertConfigEntry($cat, $key, $assertion = null, $default_value = null) + { + if (!empty($assertion[$cat][$key])) { + $this->assertEquals($assertion[$cat][$key], $this->configCache->get($cat, $key)); + } elseif (!empty($assertion) && !is_array($assertion)) { + $this->assertEquals($assertion, $this->configCache->get($cat, $key)); + } elseif (!empty($default_value)) { + $this->assertEquals($default_value, $this->configCache->get($cat, $key)); + } else { + $this->assertEmpty($this->configCache->get($cat, $key), $this->configCache->get($cat, $key)); + } + } + /** - * @medium + * Asserts all config entries + * + * @param null|array $assertion The optional assertion array + * @param boolean $saveDb True, if the db credentials should get saved to the file + * @param boolean $default True, if we use the default values + * @param boolean $defaultDb True, if we use the default value for the DB + * @param boolean $realBasepath True, if we use the real basepath of the installation, not the mocked one */ - public function testWithConfig() + public function assertConfig($assertion = null, $saveDb = false, $default = true, $defaultDb = true, $realBasepath = false) + { + if (!empty($assertion['database']['hostname'])) { + $assertion['database']['hostname'] .= (!empty($assertion['database']['port']) ? ':' . $assertion['database']['port'] : ''); + } + + $this->assertConfigEntry('database', 'hostname', ($saveDb) ? $assertion : null, (!$saveDb || $defaultDb) ? Installer::DEFAULT_HOST : null); + $this->assertConfigEntry('database', 'username', ($saveDb) ? $assertion : null); + $this->assertConfigEntry('database', 'password', ($saveDb) ? $assertion : null); + $this->assertConfigEntry('database', 'database', ($saveDb) ? $assertion : null); + + $this->assertConfigEntry('config', 'admin_email', $assertion); + $this->assertConfigEntry('config', 'php_path', trim(shell_exec('which php'))); + $this->assertConfigEntry('config', 'hostname', $assertion); + + $this->assertConfigEntry('system', 'default_timezone', $assertion, ($default) ? Installer::DEFAULT_TZ : null); + $this->assertConfigEntry('system', 'language', $assertion, ($default) ? Installer::DEFAULT_LANG : null); + $this->assertConfigEntry('system', 'url', $assertion); + $this->assertConfigEntry('system', 'urlpath', $assertion); + $this->assertConfigEntry('system', 'ssl_policy', $assertion, ($default) ? BaseURL::DEFAULT_SSL_SCHEME : null); + $this->assertConfigEntry('system', 'basepath', ($realBasepath) ? $this->root->url() : $assertion); + } + + /** + * Test the automatic installation without any parameter/setting + * Should stuck because of missing hostname + */ + public function testEmpty() + { + $console = new AutomaticInstallation($this->consoleArgv); + + $txt = $this->dumpExecute($console); + + $this->assertStuckURL($txt); + } + + /** + * Test the automatic installation without any parameter/setting + * except URL + */ + public function testEmptyWithURL() { $this->mockConnect(true, 1); $this->mockConnected(true, 1); $this->mockExistsTable('user', false, 1); - $this->mockUpdate([false, true, true], null, 1); - - $config = <<mockUpdate([$this->root->url(), false, true, true], null, 1); -[database] -hostname = -username = -password = -database = -charset = utf8mb4 + $this->mockGetMarkupTemplate('local.config.tpl', 'testTemplate', 1); + $this->mockReplaceMacros('testTemplate', \Mockery::any(), false, '', 1); + $console = new AutomaticInstallation($this->consoleArgv); + $console->setOption('url', 'http://friendica.local'); -; **************************************************************** -; The configuration below will be overruled by the admin panel. -; Changes made below will only have an effect if the database does -; not contain any configuration for the friendica system. -; **************************************************************** + $txt = $this->dumpExecute($console); -[config] -admin_email = + $this->assertFinished($txt, true, false); + $this->assertTrue($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.config.php')); -sitename = Friendica Social Network + $this->assertConfig(['config' => ['hostname' => 'friendica.local'], 'system' => ['url' => 'http://friendica.local', 'ssl_policy' => 0, 'urlPath' => '']], false, true, true, true); + } -register_policy = REGISTER_OPEN -register_text = + /** + * Test the automatic installation with a prepared config file + * @dataProvider dataInstaller + */ + public function testWithConfig(array $data) + { + $this->mockConnect(true, 1); + $this->mockConnected(true, 1); + $this->mockExistsTable('user', false, 1); + $this->mockUpdate([$this->root->url(), false, true, true], null, 1); -[system] -default_timezone = UTC + $conf = function ($cat, $key) use ($data) { + if ($cat == 'database' && $key == 'hostname' && !empty($data['database']['port'])) { + return $data[$cat][$key] . ':' . $data['database']['port']; + } + return $data[$cat][$key]; + }; -language = en -INI; -// Keep this line + $config = << [ + 'hostname' => '{$conf('database', 'hostname')}', + 'username' => '{$conf('database', 'username')}', + 'password' => '{$conf('database', 'password')}', + 'database' => '{$conf('database', 'database')}', + 'charset' => 'utf8mb4', + ], + + // **************************************************************** + // The configuration below will be overruled by the admin panel. + // Changes made below will only have an effect if the database does + // not contain any configuration for the friendica system. + // **************************************************************** + + 'config' => [ + 'admin_email' => '{$conf('config', 'admin_email')}', + 'hostname' => '{$conf('config', 'hostname')}', + 'sitename' => 'Friendica Social Network', + 'register_policy' => \Friendica\Module\Register::OPEN, + 'register_text' => '', + ], + 'system' => [ + 'basepath' => '{$conf('system', 'basepath')}', + 'urlpath' => '{$conf('system', 'urlpath')}', + 'url' => '{$conf('system', 'url')}', + 'ssl_policy' => '{$conf('system', 'ssl_policy')}', + 'default_timezone' => '{$conf('system', 'default_timezone')}', + 'language' => '{$conf('system', 'language')}', + ], +]; CONF; - vfsStream::newFile('prepared.ini.php') + vfsStream::newFile('prepared.config.php') ->at($this->root) ->setContent($config); - $console = new AutomaticInstallation(); - $console->setOption('f', 'prepared.ini.php'); + $console = new AutomaticInstallation($this->consoleArgv); + $console->setOption('f', 'prepared.config.php'); $txt = $this->dumpExecute($console); $this->assertFinished($txt, false, true); - $this->assertTrue($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.ini.php')); + $this->assertTrue($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.config.php')); + $this->assertEquals($config, file_get_contents($this->root->getChild('config' . DIRECTORY_SEPARATOR . 'local.config.php')->url())); + + $this->assertConfig($data, true, false, false); } /** - * @medium + * Test the automatic installation with environment variables + * Includes saving the DB credentials to the file + * @dataProvider dataInstaller */ - public function testWithEnvironmentAndSave() + public function testWithEnvironmentAndSave(array $data) { $this->mockConnect(true, 1); $this->mockConnected(true, 1); $this->mockExistsTable('user', false, 1); - $this->mockUpdate([false, true, true], null, 1); - - $this->assertTrue(putenv('FRIENDICA_ADMIN_MAIL=admin@friendica.local')); - $this->assertTrue(putenv('FRIENDICA_TZ=Europe/Berlin')); - $this->assertTrue(putenv('FRIENDICA_LANG=de')); - $this->assertTrue(putenv('FRIENDICA_URL_PATH=/friendica')); - - $console = new AutomaticInstallation(); + $this->mockUpdate([$this->root->url(), false, true, true], null, 1); + + $this->mockGetMarkupTemplate('local.config.tpl', 'testTemplate', 1); + $this->mockReplaceMacros('testTemplate', \Mockery::any(), false, '', 1); + + $this->assertTrue(putenv('MYSQL_HOST=' . $data['database']['hostname'])); + $this->assertTrue(putenv('MYSQL_PORT=' . $data['database']['port'])); + $this->assertTrue(putenv('MYSQL_DATABASE=' . $data['database']['database'])); + $this->assertTrue(putenv('MYSQL_USERNAME=' . $data['database']['username'])); + $this->assertTrue(putenv('MYSQL_PASSWORD=' . $data['database']['password'])); + + $this->assertTrue(putenv('FRIENDICA_HOSTNAME=' . $data['config']['hostname'])); + $this->assertTrue(putenv('FRIENDICA_BASE_PATH=' . $data['system']['basepath'])); + $this->assertTrue(putenv('FRIENDICA_URL=' . $data['system']['url'])); + $this->assertTrue(putenv('FRIENDICA_PHP_PATH=' . $data['config']['php_path'])); + $this->assertTrue(putenv('FRIENDICA_ADMIN_MAIL=' . $data['config']['admin_email'])); + $this->assertTrue(putenv('FRIENDICA_TZ=' . $data['system']['default_timezone'])); + $this->assertTrue(putenv('FRIENDICA_LANG=' . $data['system']['language'])); + + $console = new AutomaticInstallation($this->consoleArgv); $console->setOption('savedb', true); $txt = $this->dumpExecute($console); $this->assertFinished($txt, true); - - $this->assertTrue($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.ini.php')); - - $this->assertFileEquals( - $this->assertFileDb->url(), - $this->root->getChild('config' . DIRECTORY_SEPARATOR . 'local.ini.php')->url()); + $this->assertConfig($data, true, true, false, true); } /** - * @medium + * Test the automatic installation with environment variables + * Don't save the db credentials to the file + * @dataProvider dataInstaller */ - public function testWithEnvironmentWithoutSave() + public function testWithEnvironmentWithoutSave(array $data) { $this->mockConnect(true, 1); $this->mockConnected(true, 1); $this->mockExistsTable('user', false, 1); - $this->mockUpdate([false, true, true], null, 1); + $this->mockUpdate([$this->root->url(), false, true, true], null, 1); - $this->assertTrue(putenv('FRIENDICA_ADMIN_MAIL=admin@friendica.local')); - $this->assertTrue(putenv('FRIENDICA_TZ=Europe/Berlin')); - $this->assertTrue(putenv('FRIENDICA_LANG=de')); - $this->assertTrue(putenv('FRIENDICA_URL_PATH=/friendica')); + $this->mockGetMarkupTemplate('local.config.tpl', 'testTemplate', 1); + $this->mockReplaceMacros('testTemplate', \Mockery::any(), false, '', 1); - $console = new AutomaticInstallation(); + $this->assertTrue(putenv('MYSQL_HOST=' . $data['database']['hostname'])); + $this->assertTrue(putenv('MYSQL_PORT=' . $data['database']['port'])); + $this->assertTrue(putenv('MYSQL_DATABASE=' . $data['database']['database'])); + $this->assertTrue(putenv('MYSQL_USERNAME=' . $data['database']['username'])); + $this->assertTrue(putenv('MYSQL_PASSWORD=' . $data['database']['password'])); - $txt = $this->dumpExecute($console); + $this->assertTrue(putenv('FRIENDICA_HOSTNAME=' . $data['config']['hostname'])); + $this->assertTrue(putenv('FRIENDICA_BASE_PATH=' . $data['system']['basepath'])); + $this->assertTrue(putenv('FRIENDICA_URL=' . $data['system']['url'])); + $this->assertTrue(putenv('FRIENDICA_PHP_PATH=' . $data['config']['php_path'])); + $this->assertTrue(putenv('FRIENDICA_ADMIN_MAIL=' . $data['config']['admin_email'])); + $this->assertTrue(putenv('FRIENDICA_TZ=' . $data['system']['default_timezone'])); + $this->assertTrue(putenv('FRIENDICA_LANG=' . $data['system']['language'])); - $this->assertFinished($txt, true); + $console = new AutomaticInstallation($this->consoleArgv); - $this->assertTrue($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.ini.php')); + $txt = $this->dumpExecute($console); - $this->assertFileEquals( - $this->assertFile->url(), - $this->root->getChild('config' . DIRECTORY_SEPARATOR . 'local.ini.php')->url()); + $this->assertFinished($txt, true); + $this->assertConfig($data, false, true, false, true); } /** - * @medium + * Test the automatic installation with arguments + * @dataProvider dataInstaller */ - public function testWithArguments() + public function testWithArguments(array $data) { $this->mockConnect(true, 1); $this->mockConnected(true, 1); $this->mockExistsTable('user', false, 1); - $this->mockUpdate([false, true, true], null, 1); - - $console = new AutomaticInstallation(); - - $console->setOption('dbhost', $this->db_host); - $console->setOption('dbuser', $this->db_user); - if (!empty($this->db_pass)) { - $console->setOption('dbpass', $this->db_pass); - } - if (!empty($this->db_port)) { - $console->setOption('dbport', $this->db_port); - } - $console->setOption('dbdata', $this->db_data); - - $console->setOption('admin', 'admin@friendica.local'); - $console->setOption('tz', 'Europe/Berlin'); - $console->setOption('lang', 'de'); - - $console->setOption('urlpath', '/friendica'); + $this->mockUpdate([$this->root->url(), false, true, true], null, 1); + + $this->mockGetMarkupTemplate('local.config.tpl', 'testTemplate', 1); + $this->mockReplaceMacros('testTemplate', \Mockery::any(), false, '', 1); + + $console = new AutomaticInstallation($this->consoleArgv); + + $option = function($var, $cat, $key) use ($data, $console) { + if (!empty($data[$cat][$key])) { + $console->setOption($var, $data[$cat][$key]); + } + }; + $option('dbhost' , 'database', 'hostname'); + $option('dbport' , 'database', 'port'); + $option('dbuser' , 'database', 'username'); + $option('dbpass' , 'database', 'password'); + $option('dbdata' , 'database', 'database'); + $option('url' , 'system' , 'url'); + $option('phppath' , 'config' , 'php_path'); + $option('admin' , 'config' , 'admin_email'); + $option('tz' , 'system' , 'default_timezone'); + $option('lang' , 'system' , 'language'); + $option('basepath' , 'system' , 'basepath'); $txt = $this->dumpExecute($console); $this->assertFinished($txt, true); - - $this->assertTrue($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.ini.php')); - - $this->assertFileEquals( - $this->assertFileDb->url(), - $this->root->getChild('config' . DIRECTORY_SEPARATOR . 'local.ini.php')->url()); + $this->assertConfig($data, true, true, true, true); } /** - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled + * Test the automatic installation with a wrong database connection */ public function testNoDatabaseConnection() { $this->mockConnect(false, 1); - $console = new AutomaticInstallation(); + $this->mockGetMarkupTemplate('local.config.tpl', 'testTemplate', 1); + $this->mockReplaceMacros('testTemplate', \Mockery::any(), false, '', 1); + + $console = new AutomaticInstallation($this->consoleArgv); + $console->setOption('url', 'http://friendica.local'); $txt = $this->dumpExecute($console); $this->assertStuckDB($txt); + $this->assertTrue($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.config.php')); + + $this->assertConfig(['config' => ['hostname' => 'friendica.local'], 'system' => ['url' => 'http://friendica.local', 'ssl_policy' => 0, 'urlpath' => '']], false, true, false, true); } public function testGetHelp() @@ -354,7 +589,7 @@ Synopsis bin/console autoinstall [-h|--help|-?] [-v] [-a] [-f] Description - Installs Friendica with data based on the local.ini.php file or environment variables + Installs Friendica with data based on the local.config.php file or environment variables Notes Not checking .htaccess/URL-Rewrite during CLI installation. @@ -363,18 +598,18 @@ Options -h|--help|-? Show help information -v Show more debug information. -a All setup checks are required (except .htaccess) - -f|--file prepared config file (e.g. "config/local.ini.php" itself) which will override every other config option - except the environment variables) - -s|--savedb Save the DB credentials to the file (if environment variables is used) - -H|--dbhost The host of the mysql/mariadb database (env MYSQL_HOST) - -p|--dbport The port of the mysql/mariadb database (env MYSQL_PORT) - -d|--dbdata The name of the mysql/mariadb database (env MYSQL_DATABASE) - -U|--dbuser The username of the mysql/mariadb database login (env MYSQL_USER or MYSQL_USERNAME) - -P|--dbpass The password of the mysql/mariadb database login (env MYSQL_PASSWORD) - -u|--urlpath The URL path of Friendica - f.e. '/friendica' (env FRIENDICA_URL_PATH) - -b|--phppath The path of the PHP binary (env FRIENDICA_PHP_PATH) - -A|--admin The admin email address of Friendica (env FRIENDICA_ADMIN_MAIL) - -T|--tz The timezone of Friendica (env FRIENDICA_TZ) - -L|--lang The language of Friendica (env FRIENDICA_LANG) + -f|--file prepared config file (e.g. "config/local.config.php" itself) which will override every other config option - except the environment variables) + -s|--savedb Save the DB credentials to the file (if environment variables is used) + -H|--dbhost The host of the mysql/mariadb database (env MYSQL_HOST) + -p|--dbport The port of the mysql/mariadb database (env MYSQL_PORT) + -d|--dbdata The name of the mysql/mariadb database (env MYSQL_DATABASE) + -U|--dbuser The username of the mysql/mariadb database login (env MYSQL_USER or MYSQL_USERNAME) + -P|--dbpass The password of the mysql/mariadb database login (env MYSQL_PASSWORD) + -U|--url The full base URL of Friendica - f.e. 'https://friendica.local/sub' (env FRIENDICA_URL) + -B|--phppath The path of the PHP binary (env FRIENDICA_PHP_PATH) + -b|--basepath The basepath of Friendica (env FRIENDICA_BASE_PATH) + -t|--tz The timezone of Friendica (env FRIENDICA_TZ) + -L|--lang The language of Friendica (env FRIENDICA_LANG) Environment variables MYSQL_HOST The host of the mysql/mariadb database (mandatory if mysql and environment is used) @@ -382,29 +617,30 @@ Environment variables MYSQL_USERNAME|MYSQL_USER The username of the mysql/mariadb database login (MYSQL_USERNAME is for mysql, MYSQL_USER for mariadb) MYSQL_PASSWORD The password of the mysql/mariadb database login MYSQL_DATABASE The name of the mysql/mariadb database - FRIENDICA_URL_PATH The URL path of Friendica (f.e. '/friendica') - FRIENDICA_PHP_PATH The path of the PHP binary + FRIENDICA_URL The full base URL of Friendica - f.e. 'https://friendica.local/sub' + FRIENDICA_PHP_PATH The path of the PHP binary - leave empty for auto detection + FRIENDICA_BASE_PATH The basepath of Friendica - leave empty for auto detection FRIENDICA_ADMIN_MAIL The admin email address of Friendica (this email will be used for admin access) FRIENDICA_TZ The timezone of Friendica FRIENDICA_LANG The langauge of Friendica Examples - bin/console autoinstall -f 'input.ini.php - Installs Friendica with the prepared 'input.ini.php' file + bin/console autoinstall -f 'input.config.php + Installs Friendica with the prepared 'input.config.php' file bin/console autoinstall --savedb - Installs Friendica with environment variables and saves them to the 'config/local.ini.php' file + Installs Friendica with environment variables and saves them to the 'config/local.config.php' file bin/console autoinstall -h localhost -p 3365 -U user -P passwort1234 -d friendica Installs Friendica with a local mysql database with credentials HELP; - $console = new AutomaticInstallation(); + $console = new AutomaticInstallation($this->consoleArgv); $console->setOption('help', true); $txt = $this->dumpExecute($console); - $this->assertEquals($txt, $theHelp); + $this->assertEquals($theHelp, $txt); } }