1
0
Fork 0
MySQLDumper/tests/unit/library/Msd/ConfigurationTest.php

237 Zeilen
8.2 KiB
PHP

<?php
/**
* @group configuration
*/
class Msd_ConfigurationTest extends ControllerTestCase
{
public static function setUpBeforeClass()
{
Testhelper::copyFile('mysqldumper.ini', CONFIG_PATH . DS .'mysqldumper.ini');
Testhelper::copyFile('mysqldumper2.ini', CONFIG_PATH . DS .'mysqldumper2.ini');
}
public static function tearDownAfterClass()
{
Testhelper::removeFile(CONFIG_PATH . DS . 'mysqldumper2.ini');
}
public function setUp()
{
$this->loginUser();
}
public function testThrowsExceptionOnCloning()
{
$config = Msd_Configuration::getInstance();
try {
clone($config);
} catch (Exception $e) {
$this->assertInstanceof('Msd_Exception', $e);
return;
}
$this->fail('An expected exception has not been raised.');
}
public function testCanSetValues()
{
$config = Msd_Configuration::getInstance();
$config->set('config.testval', 999);
$this->assertEquals(999, $config->get('config.testval'));
$config->set('config.interface.testval2', 999);
$this->assertEquals(999, $config->get('config.interface.testval2'));
}
/**
* @expectedException Msd_Exception
*/
public function testCanThrowExceptionOnSettingIllegalValue()
{
$config = Msd_Configuration::getInstance();
$config->set('config.t.r.t.v', 999);
}
public function testCanReloadConfig()
{
$config = Msd_Configuration::getInstance();
$config->set('config.general.dbDelete', 'y'); //defaults to 'n'
$this->assertEquals('y', $config->get('config.general.dbDelete'));
$config->reloadConfig();
$this->assertEquals('n', $config->get('config.general.dbDelete'));
}
public function testCanGetValuesFromConfiguration()
{
$config = Msd_Configuration::getInstance();
// get complete config-array
$values = $config->get('config');
$this->assertArrayHasKey('interface', $values);
$this->assertArrayHasKey('dbuser', $values);
$this->assertArrayHasKey('cronscript', $values);
$this->assertArrayHasKey('cronscript', $values);
$this->assertArrayHasKey('ftp', $values);
$this->assertArrayHasKey('email', $values);
$this->assertArrayHasKey('autodelete', $values);
$this->assertArrayHasKey('general', $values);
//check some nested keys in different levels
$values = $config->get('config.general');
$this->assertArrayHasKey('mode', $values);
$this->assertArrayHasKey('title', $values);
$this->assertArrayHasKey('optimize', $values);
$value = $config->get('config.general.dbDelete');
$this->assertEquals('n', $value);
$values = $config->get('config.ftp.0');
$this->assertArrayHasKey('use', $values);
$this->assertArrayHasKey('server', $values);
$this->assertArrayHasKey('user', $values);
$value = $config->get('config.ftp.0.timeout');
$this->assertEquals(10, $value);
}
public function testCanReturnNullOnNonExistantConfigKey()
{
$config = Msd_Configuration::getInstance();
$value = $config->get('config.IDont.Exist');
$this->assertEquals(null, $value);
}
public function testCanThrowExceptionOnSettingIncorrectValue()
{
$config = Msd_Configuration::getInstance();
try {
$config->set('testval', 999);
} catch (Exception $e) {
$this->assertInstanceof('Msd_Exception', $e);
return;
}
$this->fail('An expected exception has not been raised.');
}
public function testCanThrowExceptionOnGettingIncorrectValue()
{
$config = Msd_Configuration::getInstance();
try {
$config->get('testval', 999);
} catch (Exception $e) {
$this->assertInstanceof('Msd_Exception', $e);
return;
}
$this->fail('An expected exception has not been raised.');
}
public function testCanLoadConfigFromSessionOnSameRequest()
{
$config = Msd_Configuration::getInstance();
$config->set('config.testval', 888);
$config->saveConfigToSession();
unset($config);
$config = Msd_Configuration::getInstance();
$config->loadConfigFromSession();
$this->assertEquals(888, $config->get('config.testval'));
// test constructor; should get filename and data from session
Msd_Configuration::getInstance();
}
public function testCanLoadConfiguration()
{
$config = Msd_Configuration::getInstance('mysqldumper', true);
$this->assertEquals('mysqldumper', $config->get('dynamic.configFile'));
// load another configuration and set values to actual session
$config->loadConfiguration('mysqldumper2', true);
$this->assertEquals('mysqldumper2', $config->get('dynamic.configFile'));
}
public function testCanLoadConfigWithoutApplying()
{
$config = Msd_Configuration::getInstance('mysqldumper', true);
$this->assertEquals('mysqldumper', $config->get('dynamic.configFile'));
// load data from another config file but without using it
$configData = $config->loadConfiguration('mysqldumper2', false);
$this->assertInstanceOf('Zend_Config_Ini', $configData);
$this->assertEquals(
'MySQLDumper2',
$configData->general->title
);
$this->assertEquals(
'pl',
$configData->cronscript->perlExtension
);
// make sure the actual config didn't change
$this->assertEquals('mysqldumper', $config->get('dynamic.configFile'));
}
public function testThrowsExceptionOnLoadNonExistantConfigfile()
{
$config = Msd_Configuration::getInstance();
try {
$config->loadConfiguration('IDontExist');
} catch (Exception $e) {
$this->assertInstanceof('Msd_Exception', $e);
return;
}
$this->fail('An expected exception has not been raised.');
}
public function testCanGetConfigTitle()
{
$config = Msd_Configuration::getInstance();
$config->loadConfiguration('mysqldumper');
$title = $config->getTitle();
$this->assertEquals('MySQLDumper', $title);
$config->loadConfiguration('mysqldumper2');
$title = $config->getTitle();
$this->assertEquals('MySQLDumper2', $title);
}
/**
* @depends testCanLoadConfiguration
*/
public function testCanSaveConfiguration()
{
$config = Msd_Configuration::getInstance();
$config->loadConfiguration('mysqldumper2');
// change a value
$config->set('config.cronscript.Path', 'IAmAPath');
$config->save('mysqldumper2');
// reload it and check changed val
$config->loadConfiguration('mysqldumper2');
$this->assertEquals('IAmAPath', $config->get('config.cronscript.Path'));
// change val again
$config->set('config.cronscript.Path', 'IDiffer');
// now save without giving the filename; should be taken from session
$config->save();
// reload it and again check changed val
$config->loadConfiguration('mysqldumper2');
$this->assertEquals('IDiffer', $config->get('config.cronscript.Path'));
// reset val for further tests
$config->set('config.cronscript.Path', '');
$config->save();
}
/**
* @depends testCanSaveConfiguration
*/
public function testCanSaveConfigFromArray()
{
$config = Msd_Configuration::getInstance();
$config->loadConfiguration('mysqldumper2');
// change title and save as new file
$config->set('config.general.title', 'MySQLDumper3');
$configData =$config->get('config');
$this->assertTrue(is_array($configData));
$config->save('mysqldumper3', $configData);
$configFile = $config->get('paths.config').'/mysqldumper3.ini';
$this->assertFileExists($configFile);
$config->loadConfiguration('mysqldumper3');
$title = $config->get('config.general.title');
$this->assertEquals('MySQLDumper3', $title);
Testhelper::removeFile(CONFIG_PATH . DS . 'mysqldumper3.ini');
}
}