* */ namespace Combodo\iTop\Test\UnitTest\Core; use Combodo\iTop\Test\UnitTest\ItopTestCase; use Config; /** * @runTestsInSeparateProcesses * @preserveGlobalState disabled * @backupGlobals disabled */ class ConfigTest extends ItopTestCase { protected function setUp(): void { parent::setUp(); require_once(APPROOT.'core/config.class.inc.php'); } /** * * @dataProvider ProviderPreserveVarOnWriteToFile * * @throws \ConfigException * @throws \CoreException * */ public function testPreserveVarOnWriteToFile($sConfigFile, $sExpectedContains, $aChanges) { $sTmpFile = tempnam(sys_get_temp_dir(), "target"); $oConfig = new Config($sConfigFile); foreach ($aChanges as $key => $val) { $oConfig->Set($key, $val); } $oConfig->WriteToFile($sTmpFile); $this->assertFileExists($sTmpFile); $sFileContent = file_get_contents($sTmpFile); $this->assertContains($sExpectedContains, $sFileContent, "File content doesn't contain : ".$sExpectedContains); } public function ProviderPreserveVarOnWriteToFile() { return array( 'preserve var' => array( 'sConfigFile' => __DIR__.'/ConfigTest/config-itop-var.php', 'sExpectedContains' => "'app_root_url' => 'http://' . (isset(\$_SERVER['SERVER_NAME']) ? \$_SERVER['SERVER_NAME'] : 'localhost') . '/itop/iTop/'", 'aChanges' => array(), ), 'preserve joker' => array( 'sConfigFile' => __DIR__.'/ConfigTest/config-itop-joker.php', 'sExpectedContains' => "'app_root_url' => 'http://%server(SERVER_NAME)?:localhost%/itop/iTop/'", 'aChanges' => array(), ), 'preserve set same value' => array( 'sConfigFile' => __DIR__.'/ConfigTest/config-itop-var.php', 'sExpectedContains' => "'app_root_url' => 'http://' . (isset(\$_SERVER['SERVER_NAME']) ? \$_SERVER['SERVER_NAME'] : 'localhost') . '/itop/iTop/'", 'aChanges' => array('app_root_url' => 'http://localhost/itop/iTop/'), ), 'overwrite var' => array( 'sConfigFile' => __DIR__.'/ConfigTest/config-itop-var.php', 'sExpectedContains' => "'app_root_url' => 'foo", 'aChanges' => array('app_root_url' => 'foo'), ), 'overwrite joker' => array( 'sConfigFile' => __DIR__.'/ConfigTest/config-itop-joker.php', 'sExpectedContains' => "'app_root_url' => 'foo", 'aChanges' => array('app_root_url' => 'foo'), ), ); } }