Changeset 28711 for trunk/tests/phpunit/tests/db.php
- Timestamp:
- 06/10/2014 12:29:35 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/db.php
r28635 r28711 110 110 111 111 /** 112 * @ticket 10041 113 */ 114 function test_esc_like() { 115 global $wpdb; 116 117 $inputs = array( 118 'howdy%', //Single Percent 119 'howdy_', //Single Underscore 120 'howdy\\', //Single slash 121 'howdy\\howdy%howdy_', //The works 122 'howdy\'"[[]*#[^howdy]!+)(*&$#@!~|}{=--`/.,<>?', //Plain text 123 ); 124 $expected = array( 125 'howdy\\%', 126 'howdy\\_', 127 'howdy\\\\', 128 'howdy\\\\howdy\\%howdy\\_', 129 'howdy\'"[[]*#[^howdy]!+)(*&$#@!~|}{=--`/.,<>?', 130 ); 131 132 foreach ($inputs as $key => $input) { 133 $this->assertEquals($expected[$key], $wpdb->esc_like($input)); 134 } 135 } 136 137 /** 138 * Test LIKE Queries 139 * 140 * Make sure $wpdb is fully compatible with esc_like() by testing the identity of various strings. 141 * When escaped properly, a string literal is always LIKE itself (1) 142 * and never LIKE any other string literal (0) no matter how crazy the SQL looks. 143 * 144 * @ticket 10041 145 * @dataProvider data_like_query 146 * @param $data string The haystack, raw. 147 * @param $like string The like phrase, raw. 148 * @param $result string The expected comparison result; '1' = true, '0' = false 149 */ 150 function test_like_query( $data, $like, $result ) { 151 global $wpdb; 152 return $this->assertEquals( $result, $wpdb->get_var( $wpdb->prepare( "SELECT %s LIKE %s", $data, $wpdb->esc_like( $like ) ) ) ); 153 } 154 155 function data_like_query() { 156 return array( 157 array( 158 'aaa', 159 'aaa', 160 '1', 161 ), 162 array( 163 'a\\aa', // SELECT 'a\\aa' # This represents a\aa in both languages. 164 'a\\aa', // LIKE 'a\\\\aa' 165 '1', 166 ), 167 array( 168 'a%aa', 169 'a%aa', 170 '1', 171 ), 172 array( 173 'aaaa', 174 'a%aa', 175 '0', 176 ), 177 array( 178 'a\\%aa', // SELECT 'a\\%aa' 179 'a\\%aa', // LIKE 'a\\\\\\%aa' # The PHP literal would be "LIKE 'a\\\\\\\\\\\\%aa'". This is why we need reliable escape functions! 180 '1', 181 ), 182 array( 183 'a%aa', 184 'a\\%aa', 185 '0', 186 ), 187 array( 188 'a\\%aa', 189 'a%aa', 190 '0', 191 ), 192 array( 193 'a_aa', 194 'a_aa', 195 '1', 196 ), 197 array( 198 'aaaa', 199 'a_aa', 200 '0', 201 ), 202 array( 203 'howdy\'"[[]*#[^howdy]!+)(*&$#@!~|}{=--`/.,<>?', 204 'howdy\'"[[]*#[^howdy]!+)(*&$#@!~|}{=--`/.,<>?', 205 '1', 206 ), 207 ); 208 } 209 210 /** 112 211 * @ticket 18510 113 212 */
Note: See TracChangeset
for help on using the changeset viewer.