- Timestamp:
- 07/07/2020 03:20:34 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/rest-api/rest-schema-validation.php
r48306 r48357 508 508 509 509 /** 510 * @ticket 48818510 * @ticket 48818 511 511 * 512 512 * @dataProvider data_required_property … … 536 536 537 537 /** 538 * @ticket 48818538 * @ticket 48818 539 539 * 540 540 * @dataProvider data_required_property … … 578 578 579 579 /** 580 * @ticket 48818580 * @ticket 48818 581 581 * 582 582 * @dataProvider data_required_nested_property … … 611 611 612 612 /** 613 * @ticket 48818613 * @ticket 48818 614 614 * 615 615 * @dataProvider data_required_nested_property … … 670 670 671 671 /** 672 * @ticket 48818672 * @ticket 48818 673 673 * 674 674 * @dataProvider data_required_deeply_nested_property … … 710 710 711 711 /** 712 * @ticket 48818712 * @ticket 48818 713 713 * 714 714 * @dataProvider data_required_deeply_nested_property … … 750 750 751 751 /** 752 * @ticket 48818752 * @ticket 48818 753 753 * 754 754 * @dataProvider data_required_deeply_nested_property … … 906 906 $this->assertWPError( rest_validate_value_from_schema( 'foobar', $schema ) ); 907 907 } 908 909 /** 910 * @ticket 48821 911 * 912 * @dataProvider data_unique_items 913 */ 914 public function test_unique_items( $test, $suite ) { 915 $test_description = $suite['description'] . ': ' . $test['description']; 916 $message = $test_description . ': ' . var_export( $test['data'], true ); 917 918 $valid = rest_validate_value_from_schema( $test['data'], $suite['schema'] ); 919 920 if ( $test['valid'] ) { 921 $this->assertTrue( $valid, $message ); 922 } else { 923 $this->assertWPError( $valid, $message ); 924 } 925 } 926 927 public function data_unique_items() { 928 $all_types = array( 'object', 'array', 'null', 'number', 'integer', 'boolean', 'string' ); 929 930 // the following test suites is not supported at the moment 931 $skip = array( 932 'uniqueItems with an array of items', 933 'uniqueItems with an array of items and additionalItems=false', 934 'uniqueItems=false with an array of items', 935 'uniqueItems=false with an array of items and additionalItems=false', 936 ); 937 $suites = json_decode( file_get_contents( __DIR__ . '/json_schema_test_suite/uniqueitems.json' ), true ); 938 939 $tests = array(); 940 941 foreach ( $suites as $suite ) { 942 if ( in_array( $suite['description'], $skip, true ) ) { 943 continue; 944 } 945 // type is required for our implementation 946 if ( ! isset( $suite['schema']['type'] ) ) { 947 $suite['schema']['type'] = 'array'; 948 } 949 // items is required for our implementation 950 if ( ! isset( $suite['schema']['items'] ) ) { 951 $suite['schema']['items'] = array( 952 'type' => $all_types, 953 'items' => array( 954 'type' => $all_types, 955 ), 956 ); 957 } 958 foreach ( $suite['tests'] as $test ) { 959 $tests[] = array( $test, $suite ); 960 } 961 } 962 963 return $tests; 964 } 965 966 /** 967 * @ticket 48821 968 */ 969 public function test_unique_items_deep_objects() { 970 $schema = array( 971 'type' => 'array', 972 'uniqueItems' => true, 973 'items' => array( 974 'type' => 'object', 975 'properties' => array( 976 'release' => array( 977 'type' => 'object', 978 'properties' => array( 979 'name' => array( 980 'type' => 'string', 981 ), 982 'version' => array( 983 'type' => 'string', 984 ), 985 ), 986 ), 987 ), 988 ), 989 ); 990 991 $data = array( 992 array( 993 'release' => array( 994 'name' => 'Kirk', 995 'version' => '5.3', 996 ), 997 ), 998 array( 999 'release' => array( 1000 'version' => '5.3', 1001 'name' => 'Kirk', 1002 ), 1003 ), 1004 ); 1005 1006 $this->assertWPError( rest_validate_value_from_schema( $data, $schema ) ); 1007 1008 $data[0]['release']['version'] = '5.3.0'; 1009 $this->assertTrue( rest_validate_value_from_schema( $data, $schema ) ); 1010 } 1011 1012 /** 1013 * @ticket 48821 1014 */ 1015 public function test_unique_items_deep_arrays() { 1016 $schema = array( 1017 'type' => 'array', 1018 'uniqueItems' => true, 1019 'items' => array( 1020 'type' => 'array', 1021 'items' => array( 1022 'type' => 'string', 1023 ), 1024 ), 1025 ); 1026 1027 $data = array( 1028 array( 1029 'Kirk', 1030 'Jaco', 1031 ), 1032 array( 1033 'Kirk', 1034 'Jaco', 1035 ), 1036 ); 1037 1038 $this->assertWPError( rest_validate_value_from_schema( $data, $schema ) ); 1039 1040 $data[1] = array_reverse( $data[1] ); 1041 $this->assertTrue( rest_validate_value_from_schema( $data, $schema ) ); 1042 } 908 1043 }
Note: See TracChangeset
for help on using the changeset viewer.