|
|
|
@ -3,24 +3,48 @@
|
|
|
|
|
// this is in the same namespace as Install for mocking 'function_exists'
|
|
|
|
|
namespace Friendica\Core;
|
|
|
|
|
|
|
|
|
|
use Friendica\Test\MockedTest;
|
|
|
|
|
use Friendica\Test\Util\L10nMockTrait;
|
|
|
|
|
use Friendica\Test\Util\VFSTrait;
|
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @runTestsInSeparateProcesses
|
|
|
|
|
* @preserveGlobalState disabled
|
|
|
|
|
*/
|
|
|
|
|
class InstallerTest extends TestCase
|
|
|
|
|
class InstallerTest extends MockedTest
|
|
|
|
|
{
|
|
|
|
|
use VFSTrait;
|
|
|
|
|
use L10nMockTrait;
|
|
|
|
|
|
|
|
|
|
public function setUp()
|
|
|
|
|
{
|
|
|
|
|
parent::setUp(); // TODO: Change the autogenerated stub
|
|
|
|
|
parent::setUp();
|
|
|
|
|
|
|
|
|
|
$this->setUpVfsDir();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Mocking the L10n::t() calls for the function checks
|
|
|
|
|
*/
|
|
|
|
|
private function mockFunctionL10TCalls()
|
|
|
|
|
{
|
|
|
|
|
$this->mockL10nT('Apache mod_rewrite module', 1);
|
|
|
|
|
$this->mockL10nT('PDO or MySQLi PHP module', 1);
|
|
|
|
|
$this->mockL10nT('libCurl PHP module', 1);
|
|
|
|
|
$this->mockL10nT('Error: libCURL PHP module required but not installed.', 1);
|
|
|
|
|
$this->mockL10nT('XML PHP module', 1);
|
|
|
|
|
$this->mockL10nT('GD graphics PHP module', 1);
|
|
|
|
|
$this->mockL10nT('Error: GD graphics PHP module with JPEG support required but not installed.', 1);
|
|
|
|
|
$this->mockL10nT('OpenSSL PHP module', 1);
|
|
|
|
|
$this->mockL10nT('Error: openssl PHP module required but not installed.', 1);
|
|
|
|
|
$this->mockL10nT('mb_string PHP module', 1);
|
|
|
|
|
$this->mockL10nT('Error: mb_string PHP module required but not installed.', 1);
|
|
|
|
|
$this->mockL10nT('iconv PHP module', 1);
|
|
|
|
|
$this->mockL10nT('Error: iconv PHP module required but not installed.', 1);
|
|
|
|
|
$this->mockL10nT('POSIX PHP module', 1);
|
|
|
|
|
$this->mockL10nT('Error: POSIX PHP module required but not installed.', 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function assertCheckExist($position, $title, $help, $status, $required, $assertionArray)
|
|
|
|
|
{
|
|
|
|
|
$this->assertArraySubset([$position => [
|
|
|
|
@ -87,66 +111,73 @@ class InstallerTest extends TestCase
|
|
|
|
|
*/
|
|
|
|
|
public function testCheckFunctions()
|
|
|
|
|
{
|
|
|
|
|
$this->setFunctions(['curl_init' => false]);
|
|
|
|
|
$this->mockFunctionL10TCalls();
|
|
|
|
|
$this->setFunctions(['curl_init' => false, 'imagecreatefromjpeg' => true]);
|
|
|
|
|
$install = new Installer();
|
|
|
|
|
$this->assertFalse($install->checkFunctions());
|
|
|
|
|
$this->assertCheckExist(3,
|
|
|
|
|
L10n::t('libCurl PHP module'),
|
|
|
|
|
L10n::t('Error: libCURL PHP module required but not installed.'),
|
|
|
|
|
'libCurl PHP module',
|
|
|
|
|
'Error: libCURL PHP module required but not installed.',
|
|
|
|
|
false,
|
|
|
|
|
true,
|
|
|
|
|
$install->getChecks());
|
|
|
|
|
|
|
|
|
|
$this->mockFunctionL10TCalls();
|
|
|
|
|
$this->setFunctions(['imagecreatefromjpeg' => false]);
|
|
|
|
|
$install = new Installer();
|
|
|
|
|
$this->assertFalse($install->checkFunctions());
|
|
|
|
|
$this->assertCheckExist(4,
|
|
|
|
|
L10n::t('GD graphics PHP module'),
|
|
|
|
|
L10n::t('Error: GD graphics PHP module with JPEG support required but not installed.'),
|
|
|
|
|
'GD graphics PHP module',
|
|
|
|
|
'Error: GD graphics PHP module with JPEG support required but not installed.',
|
|
|
|
|
false,
|
|
|
|
|
true,
|
|
|
|
|
$install->getChecks());
|
|
|
|
|
|
|
|
|
|
$this->mockFunctionL10TCalls();
|
|
|
|
|
$this->setFunctions(['openssl_public_encrypt' => false]);
|
|
|
|
|
$install = new Installer();
|
|
|
|
|
$this->assertFalse($install->checkFunctions());
|
|
|
|
|
$this->assertCheckExist(5,
|
|
|
|
|
L10n::t('OpenSSL PHP module'),
|
|
|
|
|
L10n::t('Error: openssl PHP module required but not installed.'),
|
|
|
|
|
'OpenSSL PHP module',
|
|
|
|
|
'Error: openssl PHP module required but not installed.',
|
|
|
|
|
false,
|
|
|
|
|
true,
|
|
|
|
|
$install->getChecks());
|
|
|
|
|
|
|
|
|
|
$this->mockFunctionL10TCalls();
|
|
|
|
|
$this->setFunctions(['mb_strlen' => false]);
|
|
|
|
|
$install = new Installer();
|
|
|
|
|
$this->assertFalse($install->checkFunctions());
|
|
|
|
|
$this->assertCheckExist(6,
|
|
|
|
|
L10n::t('mb_string PHP module'),
|
|
|
|
|
L10n::t('Error: mb_string PHP module required but not installed.'),
|
|
|
|
|
'mb_string PHP module',
|
|
|
|
|
'Error: mb_string PHP module required but not installed.',
|
|
|
|
|
false,
|
|
|
|
|
true,
|
|
|
|
|
$install->getChecks());
|
|
|
|
|
|
|
|
|
|
$this->mockFunctionL10TCalls();
|
|
|
|
|
$this->setFunctions(['iconv_strlen' => false]);
|
|
|
|
|
$install = new Installer();
|
|
|
|
|
$this->assertFalse($install->checkFunctions());
|
|
|
|
|
$this->assertCheckExist(7,
|
|
|
|
|
L10n::t('iconv PHP module'),
|
|
|
|
|
L10n::t('Error: iconv PHP module required but not installed.'),
|
|
|
|
|
'iconv PHP module',
|
|
|
|
|
'Error: iconv PHP module required but not installed.',
|
|
|
|
|
false,
|
|
|
|
|
true,
|
|
|
|
|
$install->getChecks());
|
|
|
|
|
|
|
|
|
|
$this->mockFunctionL10TCalls();
|
|
|
|
|
$this->setFunctions(['posix_kill' => false]);
|
|
|
|
|
$install = new Installer();
|
|
|
|
|
$this->assertFalse($install->checkFunctions());
|
|
|
|
|
$this->assertCheckExist(8,
|
|
|
|
|
L10n::t('POSIX PHP module'),
|
|
|
|
|
L10n::t('Error: POSIX PHP module required but not installed.'),
|
|
|
|
|
'POSIX PHP module',
|
|
|
|
|
'Error: POSIX PHP module required but not installed.',
|
|
|
|
|
false,
|
|
|
|
|
true,
|
|
|
|
|
$install->getChecks());
|
|
|
|
|
|
|
|
|
|
$this->mockFunctionL10TCalls();
|
|
|
|
|
$this->setFunctions([
|
|
|
|
|
'curl_init' => true,
|
|
|
|
|
'imagecreatefromjpeg' => true,
|
|
|
|
@ -308,13 +339,14 @@ class InstallerTest extends TestCase
|
|
|
|
|
public function testImagickNotInstalled()
|
|
|
|
|
{
|
|
|
|
|
$this->setClasses(['Imagick' => false]);
|
|
|
|
|
$this->mockL10nT('ImageMagick PHP extension is not installed');
|
|
|
|
|
|
|
|
|
|
$install = new Installer();
|
|
|
|
|
|
|
|
|
|
// even there is no supported type, Imagick should return true (because it is not required)
|
|
|
|
|
$this->assertTrue($install->checkImagick());
|
|
|
|
|
$this->assertCheckExist(0,
|
|
|
|
|
L10n::t('ImageMagick PHP extension is not installed'),
|
|
|
|
|
'ImageMagick PHP extension is not installed',
|
|
|
|
|
'',
|
|
|
|
|
false,
|
|
|
|
|
false,
|
|
|
|
|