expectOutputString($error); $parsed_sql = PMA_SQP_parse($sql); $this->assertEquals('', PMA_SQP_getErrorString()); $this->assertEquals($expected, $parsed_sql); } /** * Test for PMA_SQP_isKeyWord * * @return void */ public function testPmaSqpIsKeyWord() { PMA_SQP_resetError(); $this->assertTrue(PMA_SQP_isKeyWord("ACCESSIBLE")); $this->assertTrue(PMA_SQP_isKeyWord("accessible")); $this->assertTrue(PMA_SQP_isKeyWord("ASC")); $this->assertFalse(PMA_SQP_isKeyWord("hello")); } /** * Test PMA_SQP_typeCheck * * @return void */ public function testPmaSqpTypeCheck() { $this->assertTrue( PMA_SQP_typeCheck("VARCHAR", "VARCHAR") ); $this->assertFalse( PMA_SQP_typeCheck("VARCHAR", "VARCHAR_INT") ); $this->assertTrue( PMA_SQP_typeCheck("VARCHAR_INT", "VARCHAR") ); $this->assertFalse( PMA_SQP_typeCheck("TIME_INT", "VARCHAR") ); } /** * Test PMA_SQP_throwError * * @return void */ public function testPmaSqpThrowError() { global $SQP_errorString; $message = "error from testPMA_SQP_throwError"; $sql = "select * from PMA.PMABookmark"; PMA_SQP_throwError($message, $sql); $this->assertContains( "There seems to be an error in your SQL query.", $SQP_errorString ); $this->assertContains( 'ERROR: ' . $message, $SQP_errorString ); $this->assertContains( 'SQL: ' . htmlspecialchars($sql), $SQP_errorString ); } /** * Data provider for parser testing * * @return array with test data */ public function parserData() { return array( array( 'SELECT 1;', 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' => 9, ), 'len' => 3, ) ), array( 'SELECT * from aaa;', array( 'raw' => 'SELECT * from aaa;', 0 => array( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array( 'type' => 'punct', 'data' => '*', 'pos' => 8, ), 2 => array( 'type' => 'alpha_reservedWord', 'data' => 'from', 'pos' => 13, 'forbidden' => true, ), 3 => array( 'type' => 'alpha_identifier', 'data' => 'aaa', 'pos' => 17, 'forbidden' => false, ), 4 => array( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 18, ), 'len' => 5, ) ), array( 'SELECT * from `aaa`;', array( 'raw' => 'SELECT * from `aaa`;', 0 => array( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array( 'type' => 'punct', 'data' => '*', 'pos' => 8, ), 2 => array( 'type' => 'alpha_reservedWord', 'data' => 'from', 'pos' => 13, 'forbidden' => true, ), 3 => array( 'type' => 'quote_backtick', 'data' => '`aaa`', 'pos' => 19, ), 4 => array( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 20, ), 'len' => 5, ) ), array( 'SELECT * from `aaa;', array( 'raw' => 'SELECT * from `aaa`;', 0 => array ( 'type' => 'alpha_reservedWord', 'data' => 'SELECT', 'pos' => 6, 'forbidden' => true, ), 1 => array( 'type' => 'punct', 'data' => '*', 'pos' => 8, ), 2 => array( 'type' => 'alpha_reservedWord', 'data' => 'from', 'pos' => 13, 'forbidden' => true, ), 3 => array( 'type' => 'quote_backtick', 'data' => '`aaa`', 'pos' => 19, ), 4 => array( 'type' => 'punct_queryend', 'data' => ';', 'pos' => 20, ), 'len' => 5, ), '
Automatically appended '
. 'backtick to the end of query!