'testval123', 'Server/only_db' => 'test213' ); $GLOBALS['cfg']['AvailableCharsets'] = array(); $GLOBALS['forms'] = array( 'form1' => array( array('Servers/1/hide_db', 'bar'), array('test' => 'val') ) ); PMA_userprefsPageInit(new ConfigFile()); $this->assertEquals( array( 'Servers' => array( 1 => array( 'hide_db' => 'testval123' ) ) ), $_SESSION['ConfigFile' . $GLOBALS['server']] ); } /** * Test for PMA_loadUserprefs * * @return void */ public function testLoadUserprefs() { $_SESSION['relation'][$GLOBALS['server']]['userconfigwork'] = null; unset($_SESSION['userconfig']); $result = PMA_loadUserprefs(); $this->assertCount( 3, $result ); $this->assertEquals( array(), $result['config_data'] ); $this->assertEquals( time(), $result['mtime'], '', 2 ); $this->assertEquals( 'session', $result['type'] ); // case 2 $_SESSION['relation'][$GLOBALS['server']]['userconfigwork'] = 1; $_SESSION['relation'][$GLOBALS['server']]['db'] = "pma'db"; $_SESSION['relation'][$GLOBALS['server']]['userconfig'] = "testconf"; $_SESSION['relation'][$GLOBALS['server']]['user'] = "user"; $GLOBALS['controllink'] = null; $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $query = 'SELECT `config_data`, UNIX_TIMESTAMP(`timevalue`) ts ' . 'FROM `pma\'db`.`testconf` WHERE `username` = \'user\''; $dbi->expects($this->once()) ->method('fetchSingleRow') ->with($query, 'ASSOC', null) ->will( $this->returnValue( array( 'ts' => '123', 'config_data' => json_encode(array(1, 2)) ) ) ); $GLOBALS['dbi'] = $dbi; $result = PMA_loadUserprefs(); $this->assertEquals( array( 'config_data' => array(1, 2), 'mtime' => 123, 'type' => 'db' ), $result ); } /** * Test for PMA_saveUserprefs * * @return void */ public function testSaveUserprefs() { $GLOBALS['server'] = 2; $_SESSION['relation'][2]['userconfigwork'] = null; unset($_SESSION['userconfig']); $result = PMA_saveUserprefs(array(1)); $this->assertTrue( $result ); $this->assertCount( 2, $_SESSION['userconfig'] ); $this->assertEquals( array(1), $_SESSION['userconfig']['db'] ); /* TODO: This breaks sometimes as there might be time difference! */ $this->assertEquals( time(), $_SESSION['userconfig']['ts'], '', 2 ); $assert = true; if (isset($_SESSION['cache']['server_2']['userprefs'])) { $assert = false; } $this->assertTrue( $assert ); // case 2 $_SESSION['relation'][$GLOBALS['server']]['userconfigwork'] = 1; $_SESSION['relation'][$GLOBALS['server']]['db'] = "pmadb"; $_SESSION['relation'][$GLOBALS['server']]['userconfig'] = "testconf"; $_SESSION['relation'][$GLOBALS['server']]['user'] = "user"; $GLOBALS['controllink'] = null; $query1 = 'SELECT `username` FROM `pmadb`.`testconf` ' . 'WHERE `username` = \'user\''; $query2 = 'UPDATE `pmadb`.`testconf` SET `timevalue` = NOW(), `config_data` = \'' . json_encode(array(1)) . '\' WHERE `username` = \'user\''; $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $dbi->expects($this->once()) ->method('fetchValue') ->with($query1, 0, 0, null) ->will($this->returnValue(true)); $dbi->expects($this->once()) ->method('tryQuery') ->with($query2, null) ->will($this->returnValue(true)); $GLOBALS['dbi'] = $dbi; $this->assertTrue( PMA_saveUserprefs(array(1)) ); // case 3 $query1 = 'SELECT `username` FROM `pmadb`.`testconf` ' . 'WHERE `username` = \'user\''; $query2 = 'INSERT INTO `pmadb`.`testconf` (`username`, `timevalue`,`config_data`) ' . 'VALUES (\'user\', NOW(), \'' . json_encode(array(1)) . '\')'; $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $dbi->expects($this->once()) ->method('fetchValue') ->with($query1, 0, 0, null) ->will($this->returnValue(false)); $dbi->expects($this->once()) ->method('tryQuery') ->with($query2, null) ->will($this->returnValue(false)); $dbi->expects($this->once()) ->method('getError') ->with(null) ->will($this->returnValue("err1")); $GLOBALS['dbi'] = $dbi; $result = PMA_saveUserprefs(array(1)); $this->assertEquals( 'Could not save configuration

err1', $result->getMessage() ); } /** * Test for PMA_applyUserprefs * * @return void */ public function testApplyUserprefs() { $GLOBALS['cfg']['UserprefsDisallow'] = array( 'test' => 'val', 'foo' => 'bar' ); $GLOBALS['cfg']['UserprefsDeveloperTab'] = null; $result = PMA_applyUserprefs( array( 'DBG/sql' => true, 'Error_Handler/display' => true, 'Error_Handler/gather' => false, 'Servers/foobar' => '123', 'Server/hide_db' => true ) ); $this->assertEquals( array( 'Server' => array( 'hide_db' => 1 ) ), $result ); } /** * Test for PMA_readUserprefsFieldNames * * @return void */ public function testReadUserprefsFieldNames() { $this->assertGreaterThan( 0, count(PMA_readUserprefsFieldNames()) ); $forms = array( 'form1' => array( array('Servers/1/hide_db', 'bar'), array('test' => 'val') ) ); $this->assertEquals( array('Servers/1/hide_db', 'bar', 'test'), PMA_readUserprefsFieldNames($forms) ); } /** * Test for PMA_persistOption * * @return void */ public function testPersistOption() { $_SESSION['relation'][$GLOBALS['server']]['userconfigwork'] = null; $_SESSION['userconfig'] = array(); $_SESSION['userconfig']['ts'] = "123"; $_SESSION['userconfig']['db'] = array( 'Server/hide_db' => true, 'Server/only_db' => true, ); $GLOBALS['server'] = 2; $_SESSION['relation'][2]['userconfigwork'] = null; $this->assertNull( PMA_persistOption('Server/hide_db', 'val', 'val') ); $this->assertNull( PMA_persistOption('Server/hide_db', 'val2', 'val') ); $this->assertNull( PMA_persistOption('Server/hide_db2', 'val', 'val') ); } /** * Test for PMA_userprefsRedirect * * @return void */ public function testUserprefsRedirect() { if (!defined('PMA_TEST_HEADERS')) { $this->markTestSkipped( 'Cannot redefine constant/function - missing runkit extension' ); } $GLOBALS['cfg']['PmaAbsoluteUri'] = 'http://www.phpmyadmin.net'; $GLOBALS['cfg']['ServerDefault'] = 1; $GLOBALS['lang'] = ''; $redefine = null; if (!defined('PMA_IS_IIS')) { define('PMA_IS_IIS', false); } else { $redefine = PMA_IS_IIS; runkit_constant_redefine('PMA_IS_IIS', false); } PMA_userprefsRedirect( 'file.html', array('a' => 'b'), 'h ash' ); $this->assertContains( 'Location: http://www.phpmyadmin.netfile.html?a=b&saved=1&server=0&' . 'token=token#h+ash', $GLOBALS['header'][0] ); if ($redefine !== null) { runkit_constant_redefine('PMA_IS_IIS', $redefine); } else { runkit_constant_remove('PMA_IS_IIS'); } } /** * Test for PMA_userprefsAutoloadGetHeader * * @return void */ public function testUserprefsAutoloadGetHeader() { $_SESSION['userprefs_autoload'] = false; $_REQUEST['prefs_autoload'] = 'hide'; $this->assertEquals( '', PMA_userprefsAutoloadGetHeader() ); $this->assertTrue( $_SESSION['userprefs_autoload'] ); $_REQUEST['prefs_autoload'] = 'nohide'; $GLOBALS['cfg']['ServerDefault'] = 1; $GLOBALS['PMA_PHP_SELF'] = 'phpunit'; $result = PMA_userprefsAutoloadGetHeader(); $this->assertContains( '
', $result ); $this->assertContains( 'assertContains( '', $result ); $this->assertContains( '', $result ); $this->assertContains( '', $result ); } } ?>