diff --git a/classes/UpgradeTools/CoreUpgrader/CoreUpgrader.php b/classes/UpgradeTools/CoreUpgrader/CoreUpgrader.php index 932174952..467af9032 100644 --- a/classes/UpgradeTools/CoreUpgrader/CoreUpgrader.php +++ b/classes/UpgradeTools/CoreUpgrader/CoreUpgrader.php @@ -419,7 +419,7 @@ protected function runSqlQuery($upgrade_file, $query) } } - protected function writeNewSettings() + public function writeNewSettings() { // Do nothing } diff --git a/classes/UpgradeTools/CoreUpgrader/CoreUpgrader16.php b/classes/UpgradeTools/CoreUpgrader/CoreUpgrader16.php index 74559b34e..c7626b7f1 100644 --- a/classes/UpgradeTools/CoreUpgrader/CoreUpgrader16.php +++ b/classes/UpgradeTools/CoreUpgrader/CoreUpgrader16.php @@ -33,6 +33,9 @@ class CoreUpgrader16 extends CoreUpgrader { + /** + * Generate a new settings file. + */ public function writeNewSettings() { if (!defined('_PS_CACHE_ENABLED_')) { diff --git a/classes/UpgradeTools/SettingsFileWriter.php b/classes/UpgradeTools/SettingsFileWriter.php index 0640dcea8..82a3be656 100644 --- a/classes/UpgradeTools/SettingsFileWriter.php +++ b/classes/UpgradeTools/SettingsFileWriter.php @@ -65,12 +65,12 @@ public function writeSettingsFile($filePath, $data) $filesystem->copy($filePath, $filePath.'.bck'); $fd = fopen($filePath, 'w'); + fwrite($fd, ' $value) { - if (false === fwrite($fd, 'define(\''.$name.'\', \''.$this->checkString($value).'\');'."\n")) { + if (false === fwrite($fd, 'define(\''.$name.'\', \''.$this->checkString($value).'\');'.PHP_EOL)) { throw new UpgradeException($this->translator->trans('Error when generating new settings.inc.php file.')); } } - fwrite($fd, '?>'."\n"); fclose($fd); } diff --git a/tests/SettingsFileWriterTest.php b/tests/SettingsFileWriterTest.php new file mode 100644 index 000000000..06ede7212 --- /dev/null +++ b/tests/SettingsFileWriterTest.php @@ -0,0 +1,83 @@ + + * @copyright 2007-2018 PrestaShop SA + * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +use PHPUnit\Framework\TestCase; + +use PrestaShop\Module\AutoUpgrade\UpgradeTools\SettingsFileWriter; +use PrestaShop\Module\AutoUpgrade\UpgradeContainer; + +class SettingsFileWriterTest extends TestCase +{ + private $container; + private $settingsWriter; + + protected function setUp() + { + parent::setUp(); + $this->container = new UpgradeContainer('/html', '/html/admin'); + $this->settingsWriter = new SettingsFileWriter($this->container->getTranslator()); + } + + public function testSettingsIsProperlyGenerated() + { + $fileExpected = " '127.0.0.1:3307', + '_DB_NAME_' => 'prestashop16', + '_DB_USER_' => 'root', + '_DB_PREFIX_' => 'ps_', + '_MYSQL_ENGINE_' => 'InnoDB', + '_PS_CACHING_SYSTEM_' => 'CacheMemcache', + '_PS_CACHE_ENABLED_' => '0', + '_COOKIE_KEY_' => 'dedeedededede', + '_COOKIE_IV_' => 'wololo', + '_PS_CREATION_DATE_' => '2018-05-16', + '_PS_VERSION_' => '1.6.1.18', + '_RIJNDAEL_KEY_' => 'zrL1GDp2oqDoXFss', + '_RIJNDAEL_IV_' => 'QSt/I95YtA==', + ); + + $file = tempnam(sys_get_temp_dir(), 'PSS'); + $this->settingsWriter->writeSettingsFile($file, $datas); + + $this->assertSame($fileExpected, file_get_contents($file)); + } +}