| 567 | | ?> |
| | 567 | /** |
| | 568 | * Unit tests for the wpdb class |
| | 569 | */ |
| | 570 | class TestWPDB extends WPTestCase { |
| | 571 | |
| | 572 | /** |
| | 573 | * Backup storage for $wpdb->real_escape |
| | 574 | * @var bool |
| | 575 | */ |
| | 576 | private $_real_escape = true; |
| | 577 | |
| | 578 | /** |
| | 579 | * Backup $wpdb->real_escape |
| | 580 | * @global mixed $wpdb |
| | 581 | */ |
| | 582 | public function setUp() { |
| | 583 | global $wpdb; |
| | 584 | $this->_real_escape = $wpdb->real_escape; |
| | 585 | } |
| | 586 | |
| | 587 | /** |
| | 588 | * Restore $wpdb->real_escape |
| | 589 | * @global mixed $wpdb |
| | 590 | */ |
| | 591 | public function tearDown() { |
| | 592 | global $wpdb; |
| | 593 | $wpdb->real_escape = $this->_real_escape; |
| | 594 | } |
| | 595 | |
| | 596 | /** |
| | 597 | * Check the fallback logic for $wpdb->_real_escape when a connection to mysql isn't present. |
| | 598 | * @see http://us.php.net/mysql_real_escape_string |
| | 599 | * @global mixed $wpdb |
| | 600 | */ |
| | 601 | public function test_real_escape() { |
| | 602 | $this->knownWPBug( 20223 ); |
| | 603 | global $wpdb; |
| | 604 | $strings = array( |
| | 605 | 'wordpress', |
| | 606 | 'word\press', |
| | 607 | 'word\\press', |
| | 608 | 'word\\\press', |
| | 609 | 'word\\\\press', |
| | 610 | 'word\'press', |
| | 611 | 'word\\\'press', |
| | 612 | 'word\\\\press', |
| | 613 | 'word"press', |
| | 614 | 'word\"press', |
| | 615 | 'word' . "\n" . 'press', |
| | 616 | 'word' . "\r" . 'press', |
| | 617 | 'word\x00press', |
| | 618 | 'word\x1apress', |
| | 619 | 'word\x00\x1a\x13\x10\\\'\"press', |
| | 620 | ); |
| | 621 | foreach ( $strings as $string ) { |
| | 622 | $wpdb->real_escape = true; |
| | 623 | $mysql_escape_query = $wpdb->prepare( "SELECT id FROM {$wpdb->users} WHERE user_login = '%s'", $wpdb->_real_escape( $string ) ); |
| | 624 | $wpdb->real_escape = false; |
| | 625 | $fake_escape_query = $wpdb->prepare( "SELECT id FROM {$wpdb->users} WHERE user_login = '%s'", $wpdb->_real_escape( $string ) ); |
| | 626 | $this->assertEquals( $mysql_escape_query, $fake_escape_query ); |
| | 627 | } |
| | 628 | } |
| | 629 | } |
| | 630 | |