Files
Phraseanet/tests/Alchemy/Tests/Phrasea/Setup/InstallerTest.php
2020-04-08 17:29:28 +03:00

97 lines
3.3 KiB
PHP

<?php
namespace Alchemy\Tests\Phrasea\Setup;
use Alchemy\Phrasea\Core\Configuration\PropertyAccess;
use Alchemy\Phrasea\Setup\Installer;
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Core\Configuration\Configuration;
use Symfony\Component\Yaml\Parser;
use Symfony\Component\Yaml\Yaml;
use Alchemy\Phrasea\Core\Configuration\Compiler;
/**
* @group functional
* @group legacy
*/
class InstallerTest extends \PhraseanetTestCase
{
public function tearDown()
{
$app = new Application(Application::ENV_TEST);
\phrasea::reset_sbasDatas($app['phraseanet.appbox']);
\phrasea::reset_baseDatas($app['phraseanet.appbox']);
parent::tearDown();
}
public function testInstall()
{
$app = new Application(Application::ENV_TEST);
\phrasea::reset_sbasDatas($app['phraseanet.appbox']);
\phrasea::reset_baseDatas($app['phraseanet.appbox']);
$app->bindRoutes();
$parser = new Parser();
$config = $parser->parse(file_get_contents(__DIR__ . '/../../../../../config/configuration.yml'));
$credentials = $config['main']['database'];
$configFile = __DIR__ . '/configuration.yml';
$compiledFile = __DIR__ . '/configuration.yml.php';
@unlink($configFile);
@unlink($compiledFile);
$app['configuration.store'] = $app->share(function() use ($configFile, $compiledFile) {
return new Configuration(new Yaml(), new Compiler(), $configFile, $compiledFile, true);
});
$app['conf'] = $app->share(function() use($app) {
return new PropertyAccess($app['configuration.store']);
});
$app['phraseanet.appbox'] = $app->share(function() use($app) {
return new \appbox($app);
});
$abInfo = [
'host' => $credentials['host'],
'port' => $credentials['port'],
'user' => $credentials['user'],
'password' => $credentials['password'],
'dbname' => 'ab_setup_test',
];
$abConn = $app['dbal.provider']($abInfo);
$dbConn = $app['dbal.provider']([
'host' => $credentials['host'],
'port' => $credentials['port'],
'user' => $credentials['user'],
'password' => $credentials['password'],
'dbname' => 'db_setup_test',
]);
$key = $app['orm.add']($abInfo);
$app['orm.ems.default'] = $key;
$dataPath = __DIR__ . '/../../../../../datas/';
$installer = new Installer($app);
$installer->install(uniqid('admin') . '@example.com', 'sdfsdsd', $abConn, 'http://local.phrasea.test.installer/', ['subdefs' => $dataPath], $dbConn, 'en-simple');
$this->assertTrue($app['configuration.store']->isSetup());
$this->assertTrue($app['phraseanet.configuration-tester']->isUpToDate());
$databox = current($app->getDataboxes());
$this->assertContains('<path>'.realpath($dataPath).'/db_setup_test/subdefs</path>', $databox->get_structure());
$conf = $app['configuration.store']->getConfig();
$this->assertArrayHasKey('main', $conf);
$this->assertArrayHasKey('key', $conf['main']);
$this->assertGreaterThan(10, strlen($conf['main']['key']));
@unlink($configFile);
@unlink($compiledFile);
$app['connection.pool.manager']->closeAll();
}
}