237 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			8,2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			237 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			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');
 | |
|     }
 | |
| } |