tmpCfg = $cfg; } /** * recovering globals and session */ public function tearDown() { global $cfg; $cfg = $this->tmpCfg; } function testFormatSQLNotArray() { global $cfg; $cfg['SQP']['fmtType'] = 'html'; $sql = "SELECT * FROM tTable;"; $this->assertEquals( "
\n$sql\n
", PMA_CommonFunctions::getInstance()->formatSql($sql) ); } function testFormatSQLfmTypeHtml_1() { global $cfg; $cfg['SQP']['fmtType'] = 'html'; $cfg['MySQLManualType'] = 'none'; $sql = array ( 'raw' => 'SELECT 1;', 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'digit_integer', 'data' => '1', 'pos' => 8, ), 2 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 3, ); $unparsed = "SELECT 1;"; $expected = 'SELECT 1 ;

'; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); } function testFormatSQLfmTypeHtml_2() { global $cfg; $cfg['SQP']['fmtType'] = 'html'; $cfg['MySQLManualType'] = 'none'; $unparsed = "SELECT * from `tTable`;"; $sql = array ( 'raw' => $unparsed, 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'punct', 'data' => '*', 'pos' => 0, ), 2 => array ( 'type' => 'alpha_reservedWord', 'data' => 'from', 'pos' => 13, 'forbidden' => true, ), 3 => array ( 'type' => 'quote_backtick', 'data' => '`tTable`', 'pos' => 0, ), 4 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 5, ); $expected = 'SELECT *
FROM `tTable` ;

'; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); } function testFormatSQLfmTypeHtml_3() { global $cfg; $cfg['SQP']['fmtType'] = 'html'; $cfg['MySQLManualType'] = 'none'; $unparsed = 'SELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;'; $sql = array ( 'raw' => $unparsed, 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'punct', 'data' => '*', 'pos' => 0, ), 2 => array ( 'type' => 'alpha_reservedWord', 'data' => 'FROM', 'pos' => 13, 'forbidden' => true, ), 3 => array ( 'type' => 'quote_backtick', 'data' => '`tTable_A`', 'pos' => 0, ), 4 => array ( 'type' => 'alpha_identifier', 'data' => 'A', 'pos' => 26, 'forbidden' => false, ), 5 => array ( 'type' => 'alpha_reservedWord', 'data' => 'INNER', 'pos' => 32, 'forbidden' => true, ), 6 => array ( 'type' => 'alpha_reservedWord', 'data' => 'JOIN', 'pos' => 37, 'forbidden' => true, ), 7 => array ( 'type' => 'quote_backtick', 'data' => '`tTable_B`', 'pos' => 0, ), 8 => array ( 'type' => 'alpha_identifier', 'data' => 'B', 'pos' => 50, 'forbidden' => false, ), 9 => array ( 'type' => 'alpha_reservedWord', 'data' => 'ON', 'pos' => 53, 'forbidden' => true, ), 10 => array ( 'type' => 'alpha_identifier', 'data' => 'B', 'pos' => 55, 'forbidden' => false, ), 11 => array ( 'type' => 'punct_qualifier', 'data' => '.', 'pos' => 0, ), 12 => array ( 'type' => 'alpha_identifier', 'data' => 'ID', 'pos' => 58, 'forbidden' => false, ), 13 => array ( 'type' => 'punct', 'data' => '=', 'pos' => 0, ), 14 => array ( 'type' => 'alpha_identifier', 'data' => 'A', 'pos' => 62, 'forbidden' => false, ), 15 => array ( 'type' => 'punct_qualifier', 'data' => '.', 'pos' => 0, ), 16 => array ( 'type' => 'alpha_identifier', 'data' => 'ID', 'pos' => 65, 'forbidden' => false, ), 17 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 18, ); $expected = 'SELECT *
FROM `tTable_A` A
INNER JOIN `tTable_B` B ON B.ID = A.ID;

'; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); } function testFormatSQLfmTypeText_1() { global $cfg; $cfg['SQP']['fmtType'] = 'text'; $cfg['MySQLManualType'] = 'none'; $sql = array ( 'raw' => 'SELECT 1;', 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'digit_integer', 'data' => '1', 'pos' => 8, ), 2 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 3, ); $unparsed = "SELECT 1;"; $expected = 'SELECT 1 ;

'; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); } function testFormatSQLfmTypeText_2() { global $cfg; $cfg['SQP']['fmtType'] = 'text'; $cfg['MySQLManualType'] = 'none'; $unparsed = "SELECT * from `tTable`;"; $sql = array ( 'raw' => $unparsed, 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'punct', 'data' => '*', 'pos' => 0, ), 2 => array ( 'type' => 'alpha_reservedWord', 'data' => 'from', 'pos' => 13, 'forbidden' => true, ), 3 => array ( 'type' => 'quote_backtick', 'data' => '`tTable`', 'pos' => 0, ), 4 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 5, ); $expected = 'SELECT *
FROM `tTable` ;

'; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); } function testFormatSQLfmTypeText_3() { global $cfg; $cfg['SQP']['fmtType'] = 'text'; $cfg['MySQLManualType'] = 'none'; $unparsed = 'SELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;'; $sql = array ( 'raw' => $unparsed, 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'punct', 'data' => '*', 'pos' => 0, ), 2 => array ( 'type' => 'alpha_reservedWord', 'data' => 'FROM', 'pos' => 13, 'forbidden' => true, ), 3 => array ( 'type' => 'quote_backtick', 'data' => '`tTable_A`', 'pos' => 0, ), 4 => array ( 'type' => 'alpha_identifier', 'data' => 'A', 'pos' => 26, 'forbidden' => false, ), 5 => array ( 'type' => 'alpha_reservedWord', 'data' => 'INNER', 'pos' => 32, 'forbidden' => true, ), 6 => array ( 'type' => 'alpha_reservedWord', 'data' => 'JOIN', 'pos' => 37, 'forbidden' => true, ), 7 => array ( 'type' => 'quote_backtick', 'data' => '`tTable_B`', 'pos' => 0, ), 8 => array ( 'type' => 'alpha_identifier', 'data' => 'B', 'pos' => 50, 'forbidden' => false, ), 9 => array ( 'type' => 'alpha_reservedWord', 'data' => 'ON', 'pos' => 53, 'forbidden' => true, ), 10 => array ( 'type' => 'alpha_identifier', 'data' => 'B', 'pos' => 55, 'forbidden' => false, ), 11 => array ( 'type' => 'punct_qualifier', 'data' => '.', 'pos' => 0, ), 12 => array ( 'type' => 'alpha_identifier', 'data' => 'ID', 'pos' => 58, 'forbidden' => false, ), 13 => array ( 'type' => 'punct', 'data' => '=', 'pos' => 0, ), 14 => array ( 'type' => 'alpha_identifier', 'data' => 'A', 'pos' => 62, 'forbidden' => false, ), 15 => array ( 'type' => 'punct_qualifier', 'data' => '.', 'pos' => 0, ), 16 => array ( 'type' => 'alpha_identifier', 'data' => 'ID', 'pos' => 65, 'forbidden' => false, ), 17 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 18, ); $expected = 'SELECT *
FROM `tTable_A` A
INNER JOIN `tTable_B` B ON B.ID = A.ID;

'; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); } function testFormatSQLfmTypeNone_1() { global $cfg; $cfg['SQP']['fmtType'] = 'none'; $cfg['MySQLManualType'] = 'none'; $sql = array ( 'raw' => 'SELECT 1;', 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'digit_integer', 'data' => '1', 'pos' => 8, ), 2 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 3, ); $unparsed = "SELECT 1;"; $expected = "
\nSELECT 1;\n
"; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); $expected = "SELECT 1;"; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql) ); } function testFormatSQLfmTypeNone_2() { global $cfg; $cfg['SQP']['fmtType'] = 'none'; $cfg['MySQLManualType'] = 'none'; $unparsed = "SELECT * from `tTable`;"; $sql = array ( 'raw' => $unparsed, 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'punct', 'data' => '*', 'pos' => 0, ), 2 => array ( 'type' => 'alpha_reservedWord', 'data' => 'from', 'pos' => 13, 'forbidden' => true, ), 3 => array ( 'type' => 'quote_backtick', 'data' => '`tTable`', 'pos' => 0, ), 4 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 5, ); $expected = "
\nSELECT * from `tTable`;\n
"; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); $expected = "SELECT * from `tTable`;"; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql) ); } function testFormatSQLfmTypeNone_3() { global $cfg; $cfg['SQP']['fmtType'] = 'none'; $cfg['MySQLManualType'] = 'none'; $unparsed = 'SELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;'; $sql = array ( 'raw' => $unparsed, 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'punct', 'data' => '*', 'pos' => 0, ), 2 => array ( 'type' => 'alpha_reservedWord', 'data' => 'FROM', 'pos' => 13, 'forbidden' => true, ), 3 => array ( 'type' => 'quote_backtick', 'data' => '`tTable_A`', 'pos' => 0, ), 4 => array ( 'type' => 'alpha_identifier', 'data' => 'A', 'pos' => 26, 'forbidden' => false, ), 5 => array ( 'type' => 'alpha_reservedWord', 'data' => 'INNER', 'pos' => 32, 'forbidden' => true, ), 6 => array ( 'type' => 'alpha_reservedWord', 'data' => 'JOIN', 'pos' => 37, 'forbidden' => true, ), 7 => array ( 'type' => 'quote_backtick', 'data' => '`tTable_B`', 'pos' => 0, ), 8 => array ( 'type' => 'alpha_identifier', 'data' => 'B', 'pos' => 50, 'forbidden' => false, ), 9 => array ( 'type' => 'alpha_reservedWord', 'data' => 'ON', 'pos' => 53, 'forbidden' => true, ), 10 => array ( 'type' => 'alpha_identifier', 'data' => 'B', 'pos' => 55, 'forbidden' => false, ), 11 => array ( 'type' => 'punct_qualifier', 'data' => '.', 'pos' => 0, ), 12 => array ( 'type' => 'alpha_identifier', 'data' => 'ID', 'pos' => 58, 'forbidden' => false, ), 13 => array ( 'type' => 'punct', 'data' => '=', 'pos' => 0, ), 14 => array ( 'type' => 'alpha_identifier', 'data' => 'A', 'pos' => 62, 'forbidden' => false, ), 15 => array ( 'type' => 'punct_qualifier', 'data' => '.', 'pos' => 0, ), 16 => array ( 'type' => 'alpha_identifier', 'data' => 'ID', 'pos' => 65, 'forbidden' => false, ), 17 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 18, ); $expected = "
\nSELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;\n
"; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed) ); $expected = 'SELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;'; $this->assertEquals( $expected, PMA_CommonFunctions::getInstance()->formatSql($sql) ); } function testFormatSQLWithoutType() { global $cfg; $cfg['SQP']['fmtType'] = ''; $cfg['MySQLManualType'] = 'none'; $sql = array ( 'raw' => 'SELECT 1;', 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array ( 'type' => 'digit_integer', 'data' => '1', 'pos' => 8, ), 2 => array ( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 0, ), 'len' => 3, ); $this->assertEmpty(PMA_CommonFunctions::getInstance()->formatSql($sql)); } function testFormatSQLError() { global $SQP_errorString; $SQP_errorString = true; $sql = array("raw" => "& \" < >"); $this->assertEquals( "& " < >", PMA_CommonFunctions::getInstance()->formatSql($sql) ); $SQP_errorString = false; } }