getPath(); $GLOBALS['pmaThemeImage'] = 'theme/'; $GLOBALS['PMA_Config'] = new Config(); $GLOBALS['PMA_Config']->enableBc(); $GLOBALS['server'] = 0; $this->object = new FormDisplay(new ConfigFile()); } /** * tearDown for test cases * * @return void */ protected function tearDown() { unset($this->object); } /** * Test for FormDisplay::__constructor * * @return void * @group medium */ public function testFormDisplayContructor() { $this->assertCount( 5, $this->readAttribute($this->object, '_jsLangStrings') ); } /** * Test for FormDisplay::registerForm * * @return void * @group medium */ public function testRegisterForm() { $reflection = new \ReflectionClass('PMA\libraries\config\FormDisplay'); $attrForms = $reflection->getProperty('_forms'); $attrForms->setAccessible(true); $array = array( "Servers" => array( "1" => array( 'test' => 1, 1 => ':group:end' ) ) ); $this->object->registerForm('pma_testform', $array, 2); $_forms = $attrForms->getValue($this->object); $this->assertInstanceOf( 'PMA\libraries\config\Form', $_forms['pma_testform'] ); $this->assertEquals( array( "Servers/2/test" => "Servers/1/test", "Servers/2/:group:end:0" => "Servers/1/:group:end:0" ), $this->readAttribute($this->object, '_systemPaths') ); $this->assertEquals( array( "Servers/2/test" => "Servers-2-test", "Servers/2/:group:end:0" => "Servers-2-:group:end:0" ), $this->readAttribute($this->object, '_translatedPaths') ); } /** * Test for FormDisplay::process * * @return void * @group medium */ public function testProcess() { $this->assertFalse( $this->object->process(true, true) ); $this->object = $this->getMockBuilder('PMA\libraries\config\FormDisplay') ->disableOriginalConstructor() ->setMethods(array('save')) ->getMock(); $attrForms = new \ReflectionProperty('PMA\libraries\config\FormDisplay', '_forms'); $attrForms->setAccessible(true); $attrForms->setValue($this->object, array(1, 2, 3)); $this->object->expects($this->once()) ->method('save') ->with(array(0, 1, 2), false) ->will($this->returnValue(true)); $this->assertTrue( $this->object->process(false, false) ); $attrForms->setValue($this->object, array()); $this->assertFalse( $this->object->process(false, false) ); } /** * Test for FormDisplay::displayErrors * * @return void */ public function testDisplayErrors() { $reflection = new \ReflectionClass('PMA\libraries\config\FormDisplay'); $attrIsValidated = $reflection->getProperty('_isValidated'); $attrIsValidated->setAccessible(true); $attrIsValidated->setValue($this->object, true); $attrIsValidated = $reflection->getProperty('_errors'); $attrIsValidated->setAccessible(true); $attrIsValidated->setValue($this->object, array()); $this->assertNull( $this->object->displayErrors() ); $arr = array( "Servers/1/test" => array('e1'), "foobar" => array('e2', 'e3') ); $sysArr = array( "Servers/1/test" => "Servers/1/test2" ); $attrSystemPaths = $reflection->getProperty('_systemPaths'); $attrSystemPaths->setAccessible(true); $attrSystemPaths->setValue($this->object, $sysArr); $attrIsValidated->setValue($this->object, $arr); $GLOBALS['strConfigForm_foobar'] = 'foobar123'; $result = $this->object->displayErrors(); $this->assertEquals( '
Servers_test2_name
' . '
e1
foobar123
' . 'e2
e3
', $result ); } /** * Test for FormDisplay::fixErrors * * @return void */ public function testFixErrors() { $reflection = new \ReflectionClass('PMA\libraries\config\FormDisplay'); $attrIsValidated = $reflection->getProperty('_isValidated'); $attrIsValidated->setAccessible(true); $attrIsValidated->setValue($this->object, true); $attrIsValidated = $reflection->getProperty('_errors'); $attrIsValidated->setAccessible(true); $attrIsValidated->setValue($this->object, array()); $this->assertNull( $this->object->fixErrors() ); $arr = array( "Servers/1/test" => array('e1'), "Servers/2/test" => array('e2', 'e3'), "Servers/3/test" => array() ); $sysArr = array( "Servers/1/test" => "Servers/1/connect_type" ); $attrSystemPaths = $reflection->getProperty('_systemPaths'); $attrSystemPaths->setAccessible(true); $attrSystemPaths->setValue($this->object, $sysArr); $attrIsValidated->setValue($this->object, $arr); $this->object->fixErrors(); $this->assertEquals( array( 'Servers' => array( '1' => array( 'test' => 'tcp' ) ) ), $_SESSION['ConfigFile0'] ); } /** * Test for FormDisplay::_validateSelect * * @return void */ public function testValidateSelect() { $attrValidateSelect = new \ReflectionMethod( 'PMA\libraries\config\FormDisplay', '_validateSelect' ); $attrValidateSelect->setAccessible(true); $arr = array('foo' => 'var'); $value = 'foo'; $this->assertTrue( $attrValidateSelect->invokeArgs( $this->object, array(&$value, $arr) ) ); $arr = array('' => 'foobar'); $value = null; $this->assertTrue( $attrValidateSelect->invokeArgs( $this->object, array(&$value, $arr) ) ); $this->assertEquals( "string", gettype($value) ); $arr = array(0 => 'foobar'); $value = 0; $this->assertTrue( $attrValidateSelect->invokeArgs( $this->object, array(&$value, $arr) ) ); $arr = array('1' => 'foobar'); $value = 0; $this->assertFalse( $attrValidateSelect->invokeArgs( $this->object, array(&$value, $arr) ) ); } /** * Test for FormDisplay::hasErrors * * @return void */ public function testHasErrors() { $attrErrors = new \ReflectionProperty('PMA\libraries\config\FormDisplay', '_errors'); $attrErrors->setAccessible(true); $this->assertFalse( $this->object->hasErrors() ); $attrErrors->setValue( $this->object, array(1, 2) ); $this->assertTrue( $this->object->hasErrors() ); } /** * Test for FormDisplay::getDocLink * * @return void */ public function testGetDocLink() { $this->assertEquals( "./url.php?url=https%3A%2F%2Fdocs.phpmyadmin.net%2Fen%2Flatest%2F" . "config.html%23cfg_Servers_3_test_2_", $this->object->getDocLink("Servers/3/test/2/") ); $this->assertEquals( '', $this->object->getDocLink("Import") ); $this->assertEquals( '', $this->object->getDocLink("Export") ); } /** * Test for FormDisplay::_getOptName * * @return void */ public function testGetOptName() { $method = new \ReflectionMethod('PMA\libraries\config\FormDisplay', '_getOptName'); $method->setAccessible(true); $this->assertEquals( "Servers_", $method->invoke($this->object, "Servers/1/") ); $this->assertEquals( "Servers_23_", $method->invoke($this->object, "Servers/1/23/") ); } /** * Test for FormDisplay::_loadUserprefsInfo * * @return void */ public function testLoadUserprefsInfo() { $method = new \ReflectionMethod('PMA\libraries\config\FormDisplay', '_loadUserprefsInfo'); $method->setAccessible(true); $attrUserprefs = new \ReflectionProperty( 'PMA\libraries\config\FormDisplay', '_userprefsDisallow' ); $attrUserprefs->setAccessible(true); $method->invoke($this->object, null); $this->assertEquals( array(), $attrUserprefs->getValue($this->object) ); } /** * Test for FormDisplay::_setComments * * @return void */ public function testSetComments() { if (! PMA_HAS_RUNKIT) { $this->markTestSkipped('Cannot redefine constant'); } $method = new \ReflectionMethod('PMA\libraries\config\FormDisplay', '_setComments'); $method->setAccessible(true); // recoding $opts = array('values' => array()); $opts['values']['iconv'] = 'testIconv'; $opts['values']['recode'] = 'testRecode'; $expect = $opts; $method->invokeArgs( $this->object, array('RecodingEngine', &$opts) ); $expect['comment'] = ''; if (!function_exists('iconv')) { $expect['values']['iconv'] .= " (unavailable)"; $expect['comment'] = '"iconv" requires iconv extension'; } if (!function_exists('recode_string')) { $expect['values']['recode'] .= " (unavailable)"; $expect['comment'] .= ($expect['comment'] ? ", " : '') . '"recode" requires recode extension'; } $expect['comment_warning'] = 1; $this->assertEquals( $expect, $opts ); // ZipDump, GZipDump, BZipDump $method->invokeArgs( $this->object, array('ZipDump', &$opts) ); $comment = ''; if (!function_exists("zip_open")) { $comment = 'Compressed import will not work due to missing function ' . 'zip_open.'; } if (!function_exists("gzcompress")) { $comment .= ($comment ? '; ' : '') . 'Compressed export will not work ' . 'due to missing function gzcompress.'; } $this->assertEquals( $comment, $opts['comment'] ); $this->assertTrue( $opts['comment_warning'] ); $method->invokeArgs( $this->object, array('GZipDump', &$opts) ); $comment = ''; if (!function_exists("gzopen")) { $comment = 'Compressed import will not work due to missing function ' . 'gzopen.'; } if (!function_exists("gzencode")) { $comment .= ($comment ? '; ' : '') . 'Compressed export will not work ' . 'due to missing function gzencode.'; } $this->assertEquals( $comment, $opts['comment'] ); $this->assertTrue( $opts['comment_warning'] ); $method->invokeArgs( $this->object, array('BZipDump', &$opts) ); $comment = ''; if (!function_exists("bzopen")) { $comment = 'Compressed import will not work due to missing function ' . 'bzopen.'; } if (!function_exists("bzcompress")) { $comment .= ($comment ? '; ' : '') . 'Compressed export will not work ' . 'due to missing function bzcompress.'; } $this->assertEquals( $comment, $opts['comment'] ); $this->assertTrue( $opts['comment_warning'] ); if (defined('PMA_SETUP')) { runkit_constant_remove('PMA_SETUP'); } $GLOBALS['cfg']['MaxDbList'] = 10; $GLOBALS['cfg']['MaxTableList'] = 10; $GLOBALS['cfg']['QueryHistoryMax'] = 10; $method->invokeArgs( $this->object, array('MaxDbList', &$opts) ); $this->assertEquals( "maximum 10", $opts['comment'] ); $method->invokeArgs( $this->object, array('MaxTableList', &$opts) ); $this->assertEquals( "maximum 10", $opts['comment'] ); $method->invokeArgs( $this->object, array('QueryHistoryMax', &$opts) ); $this->assertEquals( "maximum 10", $opts['comment'] ); } }