WordPress.org

Make WordPress Core

Ticket #42069: 42069.4.diff

File 42069.4.diff, 3.5 KB (added by boonebgorges, 3 years ago)
  • src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php

    diff --git src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php
    index 059f78c6e8..2df517d32c 100644
    abstract class WP_REST_Meta_Fields { 
    324324                $old_value = get_metadata( $meta_type, $object_id, $meta_key );
    325325
    326326                if ( 1 === count( $old_value ) ) {
    327                         if ( $old_value[0] === $meta_value ) {
     327                        if ( (string) sanitize_meta( $meta_key, wp_unslash( $meta_value ), $meta_type ) === $old_value[0] ) {
    328328                                return true;
    329329                        }
    330330                }
  • tests/phpunit/tests/rest-api/rest-post-meta-fields.php

    diff --git tests/phpunit/tests/rest-api/rest-post-meta-fields.php tests/phpunit/tests/rest-api/rest-post-meta-fields.php
    index 2b09d994d1..77dba47b91 100644
    class WP_Test_REST_Post_Meta_Fields extends WP_Test_REST_TestCase { 
    12551255                return $data;
    12561256        }
    12571257
     1258        /**
     1259         * @ticket 42069
     1260         * @dataProvider data_update_value_return_success_with_same_value
     1261         */
     1262        public function test_update_value_return_success_with_same_value( $meta_key, $meta_value ) {
     1263                register_meta(
     1264                        'post',
     1265                        $meta_key,
     1266                        array(
     1267                                'show_in_rest' => true,
     1268                                'single'       => true,
     1269                                'type'         => 'string',
     1270                        )
     1271                );
     1272
     1273                add_post_meta( self::$post_id, $meta_key, $meta_value );
     1274
     1275                $this->grant_write_permission();
     1276
     1277                $data = array(
     1278                        'meta' => array(
     1279                                $meta_key => $meta_value,
     1280                        ),
     1281                );
     1282
     1283                $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
     1284                $request->set_body_params( $data );
     1285
     1286                $response = rest_get_server()->dispatch( $request );
     1287
     1288                $this->assertEquals( 200, $response->get_status() );
     1289        }
     1290
     1291        public function data_update_value_return_success_with_same_value() {
     1292                return array(
     1293                        array( 'test_boolean_update', 0 ),
     1294                        array( 'test_boolean_update', 1 ),
     1295                        array( 'test_boolean_update', false ),
     1296                        array( 'test_boolean_update', true ),
     1297                        array( 'test_boolean_update', '' ),
     1298                        array( 'test_boolean_update', '0' ),
     1299                        array( 'test_boolean_update', '1' ),
     1300                        array( 'test_textured_text_update', 'She said, "What about the > 10,000 penguins in the kitchen?"' ),
     1301                        array( 'test_textured_text_update', "He's about to do something rash..." ),
     1302                        array( 'test_json_encoded', json_encode( array( 'foo' => 'bar' ) ) ),
     1303                );
     1304        }
     1305
     1306        /**
     1307         * @ticket 42069
     1308         * @dataProvider data_update_value_return_success_with_similar_value
     1309         */
     1310        public function test_update_value_return_success_with_similar_value( $meta_key, $meta_value, $update_meta_value ) {
     1311                add_post_meta( self::$post_id, $meta_key, $meta_value );
     1312
     1313                $this->grant_write_permission();
     1314
     1315                $data = array(
     1316                        'meta' => array(
     1317                                $meta_key => $update_meta_value,
     1318                        ),
     1319                );
     1320
     1321                $request = new WP_REST_Request( 'POST', sprintf( '/wp/v2/posts/%d', self::$post_id ) );
     1322                $request->set_body_params( $data );
     1323
     1324                $response = rest_get_server()->dispatch( $request );
     1325
     1326                $this->assertEquals( 200, $response->get_status() );
     1327        }
     1328
     1329        public function data_update_value_return_success_with_similar_value() {
     1330                return array(
     1331                        array( 'test_boolean_update', 0, '' ),
     1332                        array( 'test_boolean_update', 1, '1' ),
     1333                        array( 'test_boolean_update', false, 0 ),
     1334                        array( 'test_boolean_update', true, 1 ),
     1335                        array( 'test_boolean_update', '', false ),
     1336                        array( 'test_boolean_update', '1', true ),
     1337                );
     1338        }
     1339
    12581340        /**
    12591341         * Internal function used to disable an insert query which
    12601342         * will trigger a wpdb error for testing purposes.