268 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			8,7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			268 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			8,7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * @group Index
 | |
|  */
 | |
| class Msd_Application_Controller_IndexControllerTest
 | |
|     extends ControllerTestCase
 | |
| {
 | |
|     public static function setUpBeforeClass()
 | |
|     {
 | |
|         Testhelper::copyFile('mysqldumper2.ini', CONFIG_PATH . DS .'mysqldumper2.ini');
 | |
|     }
 | |
| 
 | |
|     public static function tearDownAfterClass()
 | |
|     {
 | |
|         Testhelper::removeFile(CONFIG_PATH . DS . 'mysqldumper2.ini');
 | |
|     }
 | |
| 
 | |
|     public function testRedirectsToLoginFormIfUserNotLoggedIn()
 | |
|     {
 | |
|         $this->dispatch('/index/phpinfo');
 | |
|         //we should be redirected to the log in page
 | |
|         $this->assertResponseCode('302');
 | |
|         $this->assertRedirectTo('/index/login');
 | |
|     }
 | |
| 
 | |
|     public function testCanLoginUser()
 | |
|     {
 | |
|         $this->loginUser();
 | |
|         $this->dispatch('/');
 | |
|         //make sure we are not redirected to the log in page
 | |
|         $this->assertNotRedirect();
 | |
| 
 | |
|         // make sure we are on the home page now
 | |
|         $this->assertQueryContentContains('h2', 'Home');
 | |
|         // we should have one div with id username
 | |
|         $this->assertQueryCount('#username', 1);
 | |
|         // which contains the username
 | |
|         $this->assertQueryContentContains('#username > p', 'tester');
 | |
| 
 | |
|         // now lets check if we can access a page without being redirected
 | |
|         // to the log in page
 | |
|         $this->clearRequest();
 | |
|         $this->dispatch('/index/phpinfo');
 | |
|         $this->assertNotRedirect();
 | |
|         $this->assertQueryCount('#phpinfo', 1);
 | |
|     }
 | |
| 
 | |
|     public function testWontLoginUserWithWrongCredentials()
 | |
|     {
 | |
|         $this->getRequest()
 | |
|               ->setMethod('POST')
 | |
|               ->setParams(
 | |
|                   array(
 | |
|                         'user' => 'tester',
 | |
|                         'pass' => 'wrongPassword',
 | |
|                         'autologin' => 0
 | |
|                   )
 | |
|               );
 | |
|         $this->dispatch('/index/login');
 | |
|         $this->assertNotRedirect();
 | |
|         // make sure we see the login error message
 | |
|         $this->assertQueryCount("//div[@id='login-message']", 1);
 | |
|         $msg = "Diese Kombination von Benutzername und Passwort ist unbekannt.";
 | |
|         $this->assertQueryContentContains('#login-message', $msg);
 | |
|     }
 | |
| 
 | |
|     public function testCanRedirectToInstallIfUserFileIsBroken()
 | |
|     {
 | |
|         $path= APPLICATION_PATH . '/configs/';
 | |
|         rename($path.'users.ini', $path.'users.bak');
 | |
|         $this->getRequest()
 | |
|               ->setMethod('POST')
 | |
|               ->setParams(
 | |
|                   array(
 | |
|                         'user' => 'tester',
 | |
|                         'pass' => 'test',
 | |
|                         'autologin' => 0
 | |
|                   )
 | |
|               );
 | |
|         $this->dispatch('/index/login');
 | |
|         $this->assertResponseCode('302');
 | |
|         rename($path.'users.bak', $path.'users.ini');
 | |
|         $this->assertRedirect();
 | |
|         $this->assertRedirectTo('/install');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @depends testCanLoginUser
 | |
|      */
 | |
|     public function testCanLogoutUser()
 | |
|     {
 | |
|         $_COOKIE['msd_autologin'] =
 | |
|             'ZC5UZ1xNHTfnaQN2FqIOCuA--:1ef26361573f7032cebe97cec16f0bd0';
 | |
|         $this->dispatch('/index/logout');
 | |
|         // now we should be redirected to login page
 | |
|         $this->assertRedirectTo('/index/login');
 | |
|         $this->assertResponseCode('302');
 | |
|         $this->assertRedirect();
 | |
|     }
 | |
| 
 | |
|     public function testCanAutoLoginUserByCookie()
 | |
|     {
 | |
|         $_COOKIE['msd_autologin'] =
 | |
|             'ZC5UZ1xNHTfnaQN2FqIOCuA--:1ef26361573f7032cebe97cec16f0bd0';
 | |
|         $this->dispatch('/index/phpinfo');
 | |
|         $this->assertNotRedirect();
 | |
|         // dom id #phpinfo is only shown on phpinfo page, so let's look for it
 | |
|         $this->assertQueryCount('#phpinfo', 1);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @outputBuffering enabled
 | |
|      */
 | |
|     public function testCanLoginWithAutoLogin()
 | |
|     {
 | |
|         $this->dispatch('/index/logout');
 | |
|         $this->clearRequest();
 | |
| 
 | |
|         $this->getRequest()
 | |
|               ->setMethod('POST')
 | |
|               ->setParams(
 | |
|                   array(
 | |
|                         'user' => 'tester',
 | |
|                         'pass' => 'test',
 | |
|                         'autologin' => 1
 | |
|                   )
 | |
|               );
 | |
|         $this->dispatch('/index/login');
 | |
|         // after successful login we should be redirected to the index page
 | |
|         $this->assertResponseCode('302');
 | |
|         $this->assertRedirectTo('/');
 | |
|         $this->clearRequest();
 | |
|     }
 | |
| 
 | |
|     public function testCanShowIndex()
 | |
|     {
 | |
|         $this->loginUser();
 | |
|         $this->dispatch('/');
 | |
|         $this->assertNotRedirect();
 | |
|         // we are there if button PHP-Info is shown
 | |
|         $this->assertQueryContentContains('#content', 'PHP-Info');
 | |
|     }
 | |
| 
 | |
|     public function testCanShowPhpinfo()
 | |
|     {
 | |
|         $this->loginUser();
 | |
|         $this->dispatch('/index/phpinfo');
 | |
|         $this->assertNotRedirect();
 | |
|         // dom id #phpinfo is only shown on phpinfo page, so let's look for it
 | |
|         $this->assertQueryCount('#phpinfo', 1);
 | |
|     }
 | |
| 
 | |
|     public function testCanRefreshDbListAndRedirectsToOldAction()
 | |
|     {
 | |
|         $this->loginUser();
 | |
|         $this->getRequest()
 | |
|               ->setMethod('POST')
 | |
|               ->setParams(
 | |
|                   array(
 | |
|                         'lastAction' => 'phpinfo',
 | |
|                         'lastController' => 'index'
 | |
|                     )
 | |
|               );
 | |
|         $this->dispatch('/index/dbrefresh');
 | |
|         $this->assertRedirectTo('/index/phpinfo');
 | |
|     }
 | |
| 
 | |
|     public function testCanRefreshDbListWithInvalidActiveDb()
 | |
|     {
 | |
|         $this->loginUser();
 | |
|         $this->getRequest()
 | |
|               ->setMethod('POST')
 | |
|               ->setParams(
 | |
|                   array(
 | |
|                         'lastAction' => 'phpinfo',
 | |
|                         'lastController' => 'index'
 | |
|                     )
 | |
|               );
 | |
|         $config = Msd_Configuration::getInstance();
 | |
|         $config->set('dynamic.dbActual', -1);
 | |
|         $this->dispatch('/index/dbrefresh');
 | |
|         $this->assertRedirectTo('/index/phpinfo');
 | |
|     }
 | |
| 
 | |
|     public function testCanSelectDb()
 | |
|     {
 | |
|         $this->loginUser();
 | |
|         $config = Msd_Configuration::getInstance();
 | |
|         // set invalid active db
 | |
|         $config->set('dynamic.dbActual', -1);
 | |
|         $this->getRequest()
 | |
|               ->setMethod('POST')
 | |
|               ->setParams(
 | |
|                   array(
 | |
|                         'lastAction' => 'phpinfo',
 | |
|                         'lastController' => 'index',
 | |
|                         'selectedDb' => base64_encode('information_schema')
 | |
|                     )
 | |
|               );
 | |
|         $this->dispatch('/index/selectdb');
 | |
|         $this->assertRedirectTo('/index/phpinfo');
 | |
|         // check if actual db was switched
 | |
|         $this->assertEquals(
 | |
|             'information_schema',
 | |
|             $config->get('dynamic.dbActual')
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     public function testCanToggleMenuStatus()
 | |
|     {
 | |
|         $this->dispatch('index/ajax.Toggle.Menu');
 | |
|         $menu = new Zend_Session_Namespace('menu');
 | |
|         $this->assertEquals(1, $menu->showMenu);
 | |
|         $this->dispatch('index/ajax.Toggle.Menu');
 | |
|         $this->assertEquals(0, $menu->showMenu);
 | |
|     }
 | |
| 
 | |
|     public function testCanSwitchConfiguration()
 | |
|     {
 | |
|         $this->loginUser();
 | |
|         $this->getRequest()
 | |
|               ->setMethod('POST')
 | |
|               ->setParams(
 | |
|                   array(
 | |
|                         'lastAction' => 'phpinfo',
 | |
|                         'lastController' => 'index',
 | |
|                         'selectedConfig' => base64_encode('mysqldumper')
 | |
|                     )
 | |
|               );
 | |
|         $this->dispatch('/index/switchconfig');
 | |
|         $config = Msd_Configuration::getInstance();
 | |
|         $this->assertEquals('mysqldumper', $config->get('dynamic.configFile'));
 | |
|         // are we still on the phpinfo page?
 | |
|         $this->assertQueryCount('#phpinfo', 1);
 | |
| 
 | |
|         // now lets switch to another configuration
 | |
|         $this->clearRequest();
 | |
|         $this->getRequest()
 | |
|               ->setMethod('POST')
 | |
|               ->setParams(
 | |
|                   array(
 | |
|                         'lastAction' => 'phpinfo',
 | |
|                         'lastController' => 'index',
 | |
|                         'selectedConfig' => base64_encode('mysqldumper2')
 | |
|                     )
 | |
|               );
 | |
|         $this->dispatch('/index/switchconfig');
 | |
|         $config = Msd_Configuration::getInstance();
 | |
|         $this->assertEquals('mysqldumper2', $config->get('dynamic.configFile'));
 | |
|         // are we still on the phpinfo page?
 | |
|         $this->assertQueryCount('#phpinfo', 1);
 | |
|     }
 | |
| 
 | |
|     public function testCanLoadConfigFromSession()
 | |
|     {
 | |
|         $_SESSION = unserialize($this->loadFixtureFile('sessions/sessionTester.txt'));
 | |
|         $reflection = new ReflectionClass('Msd_Configuration');
 | |
|         $property = $reflection->getProperty('_instance');
 | |
|         $property->setAccessible(true);
 | |
|         $oldInstance = $property->getValue(null);
 | |
|         $property->setValue(null, null);
 | |
|         Msd_Configuration::getInstance();
 | |
|         $property->setValue(null, $oldInstance);
 | |
|         $this->loginUser();
 | |
|         $this->assertTrue(true);
 | |
|     }
 | |
| 
 | |
| } |