Make WordPress Core

Ticket #20564: 20564c.diff

File 20564c.diff, 4.7 KB (added by adamsilverstein, 18 months ago)
  • src/wp-includes/rest-api/endpoints/class-wp-rest-autosaves-controller.php

    diff --git src/wp-includes/rest-api/endpoints/class-wp-rest-autosaves-controller.php src/wp-includes/rest-api/endpoints/class-wp-rest-autosaves-controller.php
    index cbc3dc4c90..d14119133a 100644
    class WP_REST_Autosaves_Controller extends WP_REST_Revisions_Controller { 
    421421                if ( ! empty( $meta ) ) {
    422422                        foreach ( $revisioned_meta_keys as $meta_key ) {
    423423                                if ( isset( $meta[ $meta_key ] ) ) {
    424                                         update_metadata( 'post', $revision_id, $meta_key, $meta[ $meta_key ] );
     424                                        update_metadata( 'post', $revision_id, $meta_key, wp_slash( $meta[ $meta_key ] ) );
    425425                                }
    426426                        }
    427427                }
  • tests/phpunit/tests/rest-api/rest-autosaves-controller.php

    diff --git tests/phpunit/tests/rest-api/rest-autosaves-controller.php tests/phpunit/tests/rest-api/rest-autosaves-controller.php
    index 4108d05efc..c268b74518 100644
    class WP_Test_REST_Autosaves_Controller extends WP_Test_REST_Post_Type_Controlle 
    341341                $this->check_create_autosave_response( $response );
    342342        }
    343343
     344        public function test_update_item_with_meta() {
     345                wp_set_current_user( self::$editor_id );
     346                $request = new WP_REST_Request( 'POST', '/wp/v2/posts/' . self::$post_id . '/autosaves' );
     347                $request->add_header( 'Content-Type', 'application/x-www-form-urlencoded' );
     348                register_post_meta(
     349                        'post',
     350                        'foo',
     351                        array(
     352                                'show_in_rest'      => true,
     353                                'revisions_enabled' => true,
     354                                'single'            => true,
     355                        )
     356                );
     357                $params = $this->set_post_data(
     358                        array(
     359                                'id'     => self::$post_id,
     360                                'author' => self::$contributor_id,
     361                                'meta'   => array(
     362                                        'foo' => 'bar',
     363                                ),
     364                        )
     365                );
     366
     367                $request->set_body_params( $params );
     368                $response = rest_get_server()->dispatch( $request );
     369
     370                $this->check_create_autosave_response( $response );
     371
     372                $data = $response->get_data();
     373                $this->assertArrayHasKey( 'meta', $data );
     374                $this->assertArrayHasKey( 'foo', $data['meta'] );
     375                $this->assertSame( 'bar', $data['meta']['foo'] );
     376        }
     377
     378        public function test_update_item_with_json_meta() {
     379                $meta = '[{\"content\":\"foot 1\",\"id\":\"fa97a10d-7401-42b9-ac54-df8f4510749a\"},{\"content\":\"fdddddoot 2\\\"\",\"id\":\"2216d0aa-34b8-42b4-b441-84dedc0406e0\"}]';
     380                wp_set_current_user( self::$editor_id );
     381                $request = new WP_REST_Request( 'POST', '/wp/v2/posts/' . self::$post_id . '/autosaves' );
     382                $request->add_header( 'Content-Type', 'application/x-www-form-urlencoded' );
     383                register_post_meta(
     384                        'post',
     385                        'foo',
     386                        array(
     387                                'show_in_rest'      => true,
     388                                'revisions_enabled' => true,
     389                                'single'            => true,
     390                        )
     391                );
     392                $params = $this->set_post_data(
     393                        array(
     394                                'id'     => self::$post_id,
     395                                'author' => self::$contributor_id,
     396                                'meta'   => array(
     397                                        'foo' => $meta,
     398                                ),
     399                        )
     400                );
     401
     402                $request->set_body_params( $params );
     403                $response = rest_get_server()->dispatch( $request );
     404
     405                $this->check_create_autosave_response( $response );
     406
     407                $data = $response->get_data();
     408                $this->assertArrayHasKey( 'meta', $data );
     409                $this->assertArrayHasKey( 'foo', $data['meta'] );
     410                $values = json_decode( wp_unslash( $data['meta']['foo'] ), true );
     411                $this->assertNotNull( $values );
     412        }
     413
    344414        public function test_update_item_nopriv() {
    345415                wp_set_current_user( self::$contributor_id );
    346416
  • 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 c164c406b0..dcf39f59c9 100644
    class WP_Test_REST_Post_Meta_Fields extends WP_Test_REST_TestCase { 
    33643364         * Test post meta revisions with a custom post type and the page post type.
    33653365         *
    33663366         * @group revision
    3367          * @dataProvider test_revisioned_single_post_meta_with_posts_endpoint_page_and_cpt_data_provider
     3367         * @dataProvider data_revisioned_single_post_meta_with_posts_endpoint_page_and_cpt_data_provider
    33683368         */
    33693369        public function test_revisioned_single_post_meta_with_posts_endpoint_page_and_cpt( $passed, $expected, $post_type ) {
    33703370
    class WP_Test_REST_Post_Meta_Fields extends WP_Test_REST_TestCase { 
    34513451        /**
    34523452         * Provide data for the meta revision checks.
    34533453         */
    3454         public function test_revisioned_single_post_meta_with_posts_endpoint_page_and_cpt_data_provider() {
     3454        public function data_revisioned_single_post_meta_with_posts_endpoint_page_and_cpt_data_provider() {
    34553455                return array(
    34563456                        array(
    34573457                                'Test string',
    class WP_Test_REST_Post_Meta_Fields extends WP_Test_REST_TestCase { 
    34683468                                false,
    34693469                                'cpt',
    34703470                        ),
    3471 
    34723471                );
    34733472        }
    34743473}