'bar ', '1' => ' test'); $_REQUEST['clause_is_unique'] = false; $_REQUEST['sql_query'] = 'SELECT a'; $GLOBALS['goto'] = 'index.php'; $result = PMA_getFormParametersForInsertForm( 'dbname', 'tablename', array(), $where_clause, 'localhost' ); $this->assertEquals( array( 'db' => 'dbname', 'table' => 'tablename', 'goto' => 'index.php', 'err_url' => 'localhost', 'sql_query' => 'SELECT a', 'where_clause[foo]' => 'bar', 'where_clause[1]' => 'test', 'clause_is_unique' => false ), $result ); } /** * Test for PMA_getWhereClauseArray * * @return void */ public function testGetWhereClauseArray() { $this->assertEquals( array(), PMA_getWhereClauseArray(null) ); $this->assertEquals( array(1, 2, 3), PMA_getWhereClauseArray(array(1, 2, 3)) ); $this->assertEquals( array('clause'), PMA_getWhereClauseArray('clause') ); } /** * Test for PMA_analyzeWhereClauses * * @return void */ public function testAnalyzeWhereClause() { $clauses = array('a=1', 'b="fo\o"'); $dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $dbi->expects($this->exactly(2)) ->method('query') ->willReturnOnConsecutiveCalls( 'result1', 'result2' ); $dbi->expects($this->exactly(2)) ->method('fetchAssoc') ->willReturnOnConsecutiveCalls( array('assoc1'), array('assoc2') ); $GLOBALS['dbi'] = $dbi; $result = PMA_analyzeWhereClauses($clauses, 'table', 'db'); $this->assertEquals( array( array('a=1', 'b="fo\\\\o"'), array('result1', 'result2'), array( array('assoc1'), array('assoc2') ), '' ), $result ); } /** * Test for PMA_showEmptyResultMessageOrSetUniqueCondition * * @return void */ public function testShowEmptyResultMessageOrSetUniqueCondition() { $temp = new stdClass; $temp->orgname = 'orgname'; $temp->table = 'table'; $temp->type = 'real'; $temp->primary_key = 1; $meta_arr = array($temp); $dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $dbi->expects($this->at(0)) ->method('getFieldsMeta') ->with('result1') ->will($this->returnValue($meta_arr)); $GLOBALS['dbi'] = $dbi; $result = PMA_showEmptyResultMessageOrSetUniqueCondition( array('1' => array('1' => 1)), 1, array(), 'SELECT', array('1' => 'result1') ); $this->assertTrue($result); // case 2 $GLOBALS['cfg']['ShowSQL'] = false; $responseMock = $this->getMockBuilder('PMA\libraries\Response') ->disableOriginalConstructor() ->setMethods(array('addHtml')) ->getMock(); $restoreInstance = PMA\libraries\Response::getInstance(); $response = new ReflectionProperty('PMA\libraries\Response', '_instance'); $response->setAccessible(true); $response->setValue($responseMock); $result = PMA_showEmptyResultMessageOrSetUniqueCondition( array(false), 0, array('1'), 'SELECT', array('1' => 'result1') ); $response->setValue($restoreInstance); $this->assertFalse($result); } /** * Test for PMA_loadFirstRow * * @return void */ public function testLoadFirstRow() { $GLOBALS['cfg']['InsertRows'] = 2; $dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $dbi->expects($this->at(0)) ->method('query') ->with( 'SELECT * FROM `db`.`table` LIMIT 1;', null, PMA\libraries\DatabaseInterface::QUERY_STORE ) ->will($this->returnValue('result1')); $GLOBALS['dbi'] = $dbi; $result = PMA_loadFirstRow('table', 'db'); $this->assertEquals( array('result1', array(false, false)), $result ); } /** * Test for PMA_urlParamsInEditMode * * @return void */ public function testUrlParamsInEditMode() { $where_clause_array = array('foo=1', 'bar=2'); $_REQUEST['sql_query'] = 'SELECT 1'; $result = PMA_urlParamsInEditMode(array(1), $where_clause_array, ''); $this->assertEquals( array( '0' => 1, 'where_clause' => 'bar=2', 'sql_query' => 'SELECT 1' ), $result ); } /** * Test for PMA_showTypeOrFunction * * @return void */ public function testShowTypeOrFunction() { $GLOBALS['cfg']['ShowFieldTypesInDataEditView'] = true; $GLOBALS['cfg']['ServerDefault'] = 1; $url_params = array('ShowFunctionFields' => 2); $result = PMA_showTypeOrFunction('function', $url_params, false); $this->assertEquals( ' : ' . 'Function', $result ); // case 2 $result = PMA_showTypeOrFunction('function', $url_params, true); $this->assertEquals( 'Function', $result ); // case 3 $result = PMA_showTypeOrFunction('type', $url_params, false); $this->assertEquals( ' : ' . 'Type', $result ); // case 4 $result = PMA_showTypeOrFunction('type', $url_params, true); $this->assertEquals( 'Type', $result ); } /** * Test for PMA_analyzeTableColumnsArray * * @return void */ public function testAnalyzeTableColumnsArray() { $column = array( 'Field' => '1<2', 'Field_md5' => 'pswd', 'Type' => 'float(10, 1)' ); $result = PMA_analyzeTableColumnsArray( $column, array(), false ); $this->assertEquals( $result['Field_html'], '1<2' ); $this->assertEquals( $result['Field_md5'], '4342210df36bf2ff2c4e2a997a6d4089' ); $this->assertEquals( $result['True_Type'], 'float' ); $this->assertEquals( $result['len'], 100 ); $this->assertEquals( $result['Field_title'], '1<2' ); $this->assertEquals( $result['is_binary'], false ); $this->assertEquals( $result['is_blob'], false ); $this->assertEquals( $result['is_char'], false ); $this->assertEquals( $result['pma_type'], 'float(10, 1)' ); $this->assertEquals( $result['wrap'], ' nowrap' ); $this->assertEquals( $result['Field'], '1<2' ); } /** * Test for PMA_getColumnTitle * * @return void */ public function testGetColumnTitle() { $column = array(); $column['Field'] = 'f1<'; $column['Field_html'] = 'f1<'; $this->assertEquals( PMA_getColumnTitle($column, array()), 'f1<' ); $comments = array(); $comments['f1<'] = 'comment>'; $result = PMA_getColumnTitle($column, $comments); $this->assertContains( 'title="comment>"', $result ); $this->assertContains( 'f1<', $result ); } /** * Test for PMA_isColumn * * @return void */ public function testIsColumn() { $column = array(); $types = array('binary', 'varbinary'); $column['Type'] = 'binaryfoo'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'Binaryfoo'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'varbinaryfoo'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'barbinaryfoo'; $this->assertFalse(PMA_isColumn($column, $types)); $types = array('char', 'varchar'); $column['Type'] = 'char(10)'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'VarChar(20)'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'foochar'; $this->assertFalse(PMA_isColumn($column, $types)); $types = array('blob', 'tinyblob', 'mediumblob', 'longblob'); $column['Type'] = 'blob'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'bloB'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'mediumBloB'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'tinyblobabc'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'longblob'; $this->assertTrue(PMA_isColumn($column, $types)); $column['Type'] = 'foolongblobbar'; $this->assertFalse(PMA_isColumn($column, $types)); } /** * Test for PMA_getEnumSetAndTimestampColumns * * @return void */ public function testGetEnumAndTimestampColumns() { $column = array(); $column['True_Type'] = 'set'; $this->assertEquals( array('set', '', false), PMA_getEnumSetAndTimestampColumns($column, false) ); $column['True_Type'] = 'enum'; $this->assertEquals( array('enum', '', false), PMA_getEnumSetAndTimestampColumns($column, false) ); $column['True_Type'] = 'timestamp'; $column['Type'] = 'date'; $this->assertEquals( array('date', ' nowrap', true), PMA_getEnumSetAndTimestampColumns($column, false) ); $column['True_Type'] = 'timestamp'; $column['Type'] = 'date'; $this->assertEquals( array('date', ' nowrap', false), PMA_getEnumSetAndTimestampColumns($column, true) ); $column['True_Type'] = 'SET'; $column['Type'] = 'num'; $this->assertEquals( array('num', ' nowrap', false), PMA_getEnumSetAndTimestampColumns($column, false) ); $column['True_Type'] = ''; $column['Type'] = 'num'; $this->assertEquals( array('num', ' nowrap', false), PMA_getEnumSetAndTimestampColumns($column, false) ); } /** * Test for PMA_getFunctionColumn * * @return void */ public function testGetFunctionColumn() { $GLOBALS['cfg']['ProtectBinary'] = 'blob'; $column = array(); $column['is_blob'] = true; $this->assertContains( 'Binary', PMA_getFunctionColumn( $column, false, '', '', array(), 0, 0, 0, false, false, array() ) ); $GLOBALS['cfg']['ProtectBinary'] = 'all'; $column['is_binary'] = true; $this->assertContains( 'Binary', PMA_getFunctionColumn( $column, true, '', '', array(), 0, 0, 0, false, false, array() ) ); $GLOBALS['cfg']['ProtectBinary'] = 'noblob'; $column['is_blob'] = false; $this->assertContains( 'Binary', PMA_getFunctionColumn( $column, true, '', '', array(), 0, 0, 0, false, false, array() ) ); $GLOBALS['cfg']['ProtectBinary'] = false; $column['True_Type'] = 'enum'; $this->assertContains( '--', PMA_getFunctionColumn( $column, true, '', '', array(), 0, 0, 0, false, false, array() ) ); $column['True_Type'] = 'set'; $this->assertContains( '--', PMA_getFunctionColumn( $column, true, '', '', array(), 0, 0, 0, false, false, array() ) ); $column['True_Type'] = ''; $column['pma_type'] = 'int'; $this->assertContains( '--', PMA_getFunctionColumn( $column, true, '', '', array('int'), 0, 0, 0, false, false, array() ) ); $GLOBALS['PMA_Types'] = new Types; $column['Field'] = 'num'; $this->assertContains( '