Changeset 47627
- Timestamp:
- 04/27/2020 02:27:02 AM (4 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/rest-api.php
r47550 r47627 1338 1338 } 1339 1339 1340 if ( 'string' === $args['type'] && ! is_string( $value ) ) { 1341 /* translators: 1: Parameter, 2: Type name. */ 1342 return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s is not of type %2$s.' ), $param, 'string' ) ); 1340 if ( 'string' === $args['type'] ) { 1341 if ( ! is_string( $value ) ) { 1342 /* translators: 1: Parameter, 2: Type name. */ 1343 return new WP_Error( 'rest_invalid_param', sprintf( __( '%1$s is not of type %2$s.' ), $param, 'string' ) ); 1344 } 1345 1346 if ( isset( $args['minLength'] ) && mb_strlen( $value ) < $args['minLength'] ) { 1347 return new WP_Error( 1348 'rest_invalid_param', 1349 sprintf( 1350 /* translators: 1: Parameter, 2: Number of characters. */ 1351 _n( '%1$s must be at least %2$s character long.', '%1$s must be at least %2$s characters long.', $args['minLength'] ), 1352 $param, 1353 number_format_i18n( $args['minLength'] ) 1354 ) 1355 ); 1356 } 1357 1358 if ( isset( $args['maxLength'] ) && mb_strlen( $value ) > $args['maxLength'] ) { 1359 return new WP_Error( 1360 'rest_invalid_param', 1361 sprintf( 1362 /* translators: 1: Parameter, 2: Number of characters. */ 1363 _n( '%1$s must be at most %2$s character long.', '%1$s must be at most %2$s characters long.', $args['maxLength'] ), 1364 $param, 1365 number_format_i18n( $args['maxLength'] ) 1366 ) 1367 ); 1368 } 1343 1369 } 1344 1370 -
trunk/tests/phpunit/tests/rest-api/rest-schema-validation.php
r47450 r47627 349 349 $this->assertWPError( rest_validate_value_from_schema( array( 'raw' => array( 'a list' ) ), $schema ) ); 350 350 } 351 352 /** 353 * @ticket 48820 354 */ 355 public function test_string_min_length() { 356 $schema = array( 357 'type' => 'string', 358 'minLength' => 2, 359 ); 360 361 // longer 362 $this->assertTrue( rest_validate_value_from_schema( 'foo', $schema ) ); 363 // exact 364 $this->assertTrue( rest_validate_value_from_schema( 'fo', $schema ) ); 365 // non-strings does not validate 366 $this->assertWPError( rest_validate_value_from_schema( 1, $schema ) ); 367 // to short 368 $this->assertWPError( rest_validate_value_from_schema( 'f', $schema ) ); 369 // one supplementary Unicode code point is not long enough 370 $mb_char = mb_convert_encoding( 'က', 'UTF-8', 'HTML-ENTITIES' ); 371 $this->assertWPError( rest_validate_value_from_schema( $mb_char, $schema ) ); 372 // two supplementary Unicode code point is long enough 373 $this->assertTrue( rest_validate_value_from_schema( $mb_char . $mb_char, $schema ) ); 374 } 375 376 /** 377 * @ticket 48820 378 */ 379 public function test_string_max_length() { 380 $schema = array( 381 'type' => 'string', 382 'maxLength' => 2, 383 ); 384 385 // shorter 386 $this->assertTrue( rest_validate_value_from_schema( 'f', $schema ) ); 387 // exact 388 $this->assertTrue( rest_validate_value_from_schema( 'fo', $schema ) ); 389 // to long 390 $this->assertWPError( rest_validate_value_from_schema( 'foo', $schema ) ); 391 // non string 392 $this->assertWPError( rest_validate_value_from_schema( 100, $schema ) ); 393 // two supplementary Unicode code point is long enough 394 $mb_char = mb_convert_encoding( 'က', 'UTF-8', 'HTML-ENTITIES' ); 395 $this->assertTrue( rest_validate_value_from_schema( $mb_char, $schema ) ); 396 // three supplementary Unicode code point is to long 397 $this->assertWPError( rest_validate_value_from_schema( $mb_char . $mb_char . $mb_char, $schema ) ); 398 } 351 399 }
Note: See TracChangeset
for help on using the changeset viewer.