WordPress.org

Make WordPress Core

Ticket #40734: 40734.diff

File 40734.diff, 13.4 KB (added by jnylen0, 5 years ago)
  • tests/phpunit/tests/rest-api/rest-schema-setup.php

    diff --git a/tests/phpunit/tests/rest-api/rest-schema-setup.php b/tests/phpunit/tests/rest-api/rest-schema-setup.php
    index 0c86255..b1fd17c 100644
    a b  
    1313 * @group restapi-jsclient
    1414 */
    1515class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase {
     16        const YOUTUBE_VIDEO_ID = 'i_cVJgIz_Cs';
    1617
    1718        public function setUp() {
    1819                parent::setUp();
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    2122                global $wp_rest_server;
    2223                $this->server = $wp_rest_server = new Spy_REST_Server;
    2324                do_action( 'rest_api_init' );
     25
     26                add_filter( 'pre_http_request', array( $this, 'mock_embed_request' ), 10, 3 );
    2427        }
    2528
    2629        public function tearDown() {
    2730                parent::tearDown();
    28                 remove_filter( 'rest_url', array( $this, 'test_rest_url_for_leading_slash' ), 10, 2 );
     31
    2932                /** @var WP_REST_Server $wp_rest_server */
    3033                global $wp_rest_server;
    3134                $wp_rest_server = null;
     35
     36                remove_filter( 'pre_http_request', array( $this, 'mock_embed_request' ), 10, 3 );
     37        }
     38
     39        public function mock_embed_request( $preempt, $r, $url ) {
     40                unset( $preempt, $r );
     41
     42                // Mock request to YouTube Embed.
     43                if ( false !== strpos( $url, self::YOUTUBE_VIDEO_ID ) ) {
     44                        return array(
     45                                'response' => array(
     46                                        'code' => 200,
     47                                ),
     48                                'body' => wp_json_encode(
     49                                        array(
     50                                                'version'          => '1.0',
     51                                                'type'             => 'video',
     52                                                'provider_name'    => 'YouTube',
     53                                                'provider_url'     => 'https://www.youtube.com',
     54                                                'thumbnail_width'  => 480,
     55                                                'width'            => 500,
     56                                                'thumbnail_height' => 360,
     57                                                'html'             => '<iframe width="500" height="375" src="https://www.youtube.com/embed/' . self::YOUTUBE_VIDEO_ID . '?feature=oembed" frameborder="0" allowfullscreen></iframe>',
     58                                                'author_name'      => 'Jorge Rubira Santos',
     59                                                'thumbnail_url'    => 'https://i.ytimg.com/vi/' . self::YOUTUBE_VIDEO_ID . '/hqdefault.jpg',
     60                                                'title'            => 'No te olvides de poner el Where en el Delete From. (Una cancion para programadores)',
     61                                                'height'           => 375,
     62                                        )
     63                                ),
     64                        );
     65                } else {
     66                        return array(
     67                                'response' => array(
     68                                        'code' => 404,
     69                                ),
     70                        );
     71                }
    3272        }
    3373
    3474        public function test_expected_routes_in_schema() {
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    109149                        'ID'           => $post_id,
    110150                        'post_content' => 'Updated post content.',
    111151                ) );
     152                $post_revisions = array_values( wp_get_post_revisions( $post_id ) );
     153                $post_revision_id = $post_revisions[ count( $post_revisions ) - 1 ]->ID;
    112154
    113155                $page_id = $this->factory->post->create( array(
    114156                        'post_type'      => 'page',
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    124166                        'ID'           => $page_id,
    125167                        'post_content' => 'Updated page content.',
    126168                ) );
     169                $page_revisions = array_values( wp_get_post_revisions( $page_id ) );
     170                $page_revision_id = $page_revisions[ count( $page_revisions ) - 1 ]->ID;
    127171
    128172                $tag_id = $this->factory->tag->create( array(
    129173                        'name'        => 'REST API Client Fixture: Tag',
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    165209                        array(
    166210                                'route' => '/oembed/1.0/embed',
    167211                                'name'  => 'oembeds',
     212                                'args'  => array(
     213                                        'url' => '?p=' . $post_id,
     214                                ),
    168215                        ),
    169216                        array(
    170217                                'route' => '/oembed/1.0/proxy',
    171218                                'name'  => 'oembedProxy',
     219                                'args'  => array(
     220                                        'url' => 'https://www.youtube.com/watch?v=i_cVJgIz_Cs',
     221                                ),
    172222                        ),
    173223                        array(
    174224                                'route' => '/wp/v2/posts',
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    183233                                'name'  => 'postRevisions',
    184234                        ),
    185235                        array(
    186                                 'route' => '/wp/v2/posts/' . $post_id . '/revisions/1',
     236                                'route' => '/wp/v2/posts/' . $post_id . '/revisions/' . $post_revision_id,
    187237                                'name'  => 'revision',
    188238                        ),
    189239                        array(
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    199249                                'name'  => 'pageRevisions',
    200250                        ),
    201251                        array(
    202                                 'route' => '/wp/v2/pages/'. $page_id . '/revisions/1',
     252                                'route' => '/wp/v2/pages/'. $page_id . '/revisions/' . $page_revision_id,
    203253                                'name'  => 'pageRevision',
    204254                        ),
    205255                        array(
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    215265                                'name'  => 'TypesCollection',
    216266                        ),
    217267                        array(
    218                                 'route' => '/wp/v2/types/',
     268                                'route' => '/wp/v2/types/post',
    219269                                'name'  => 'TypeModel',
    220270                        ),
    221271                        array(
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    267317                                'name'  => 'CommentsCollection',
    268318                        ),
    269319                        array(
    270                                 'route' => '/wp/v2/comments/1',
     320                                'route' => '/wp/v2/comments/' . $comment_id,
    271321                                'name'  => 'CommentModel',
    272322                        ),
    273323                        array(
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    285335
    286336                foreach ( $routes_to_generate_data as $route ) {
    287337                        $request = new WP_REST_Request( 'GET', $route['route'] );
     338                        if ( isset( $route['args'] ) ) {
     339                                $request->set_query_params( $route['args'] );
     340                        }
    288341                        $response = $this->server->dispatch( $request );
     342                        $status = $response->get_status();
    289343                        $data = $response->get_data();
    290344
     345                        $this->assertEquals(
     346                                200,
     347                                $response->get_status(),
     348                                "HTTP $status from $route[route]: " . json_encode( $data )
     349                        );
    291350                        $this->assertTrue( ! empty( $data ), $route['name'] . ' route should return data.' );
    292351
    293352                        if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    319378         * how they were generated, see #39264.
    320379         */
    321380        private static $fixture_replacements = array(
     381                'oembeds.html' => '<blockquote class="wp-embedded-content">...</blockquote>',
    322382                'PostsCollection.0.id' => 3,
    323383                'PostsCollection.0.guid.rendered' => 'http://example.org/?p=3',
    324384                'PostsCollection.0.link' => 'http://example.org/?p=3',
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    331391                'PostModel.id' => 3,
    332392                'PostModel.guid.rendered' => 'http://example.org/?p=3',
    333393                'PostModel.link' => 'http://example.org/?p=3',
    334                 'postRevisions.0.author' => '2',
     394                'postRevisions.0.author' => 2,
    335395                'postRevisions.0.id' => 4,
    336396                'postRevisions.0.parent' => 3,
    337397                'postRevisions.0.slug' => '3-revision-v1',
    338398                'postRevisions.0.guid.rendered' => 'http://example.org/?p=4',
    339399                'postRevisions.0._links.parent.0.href' => 'http://example.org/?rest_route=/wp/v2/posts/3',
     400                'revision.author' => 2,
     401                'revision.id' => 4,
     402                'revision.parent' => 3,
     403                'revision.slug' => '3-revision-v1',
     404                'revision.guid.rendered' => 'http://example.org/?p=4',
    340405                'PagesCollection.0.id' => 5,
    341406                'PagesCollection.0.guid.rendered' => 'http://example.org/?page_id=5',
    342407                'PagesCollection.0.link' => 'http://example.org/?page_id=5',
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    347412                'PageModel.id' => 5,
    348413                'PageModel.guid.rendered' => 'http://example.org/?page_id=5',
    349414                'PageModel.link' => 'http://example.org/?page_id=5',
    350                 'pageRevisions.0.author' => '2',
     415                'pageRevisions.0.author' => 2,
    351416                'pageRevisions.0.id' => 6,
    352417                'pageRevisions.0.parent' => 5,
    353418                'pageRevisions.0.slug' => '5-revision-v1',
    354419                'pageRevisions.0.guid.rendered' => 'http://example.org/?p=6',
    355420                'pageRevisions.0._links.parent.0.href' => 'http://example.org/?rest_route=/wp/v2/pages/5',
     421                'pageRevision.author' => 2,
     422                'pageRevision.id' => 6,
     423                'pageRevision.parent' => 5,
     424                'pageRevision.slug' => '5-revision-v1',
     425                'pageRevision.guid.rendered' => 'http://example.org/?p=6',
    356426                'MediaCollection.0.id' => 7,
    357427                'MediaCollection.0.guid.rendered' => 'http://example.org/?attachment_id=7',
    358428                'MediaCollection.0.link' => 'http://example.org/?attachment_id=7',
    class WP_Test_REST_Schema_Initialization extends WP_Test_REST_TestCase { 
    377447                'CommentsCollection.0.link' => 'http://example.org/?p=3#comment-2',
    378448                'CommentsCollection.0._links.self.0.href' => 'http://example.org/?rest_route=/wp/v2/comments/2',
    379449                'CommentsCollection.0._links.up.0.href' => 'http://example.org/?rest_route=/wp/v2/posts/3',
     450                'CommentModel.id' => 2,
     451                'CommentModel.post' => 3,
     452                'CommentModel.link' => 'http://example.org/?p=3#comment-2',
    380453        );
    381454
    382455        private function normalize_fixture( $data, $path ) {
  • tests/qunit/fixtures/wp-api-generated.js

    diff --git a/tests/qunit/fixtures/wp-api-generated.js b/tests/qunit/fixtures/wp-api-generated.js
    index f6a5bfe..278f25f 100644
    a b mockedApiResponse.oembed = { 
    34923492};
    34933493
    34943494mockedApiResponse.oembeds = {
    3495     "code": "rest_missing_callback_param",
    3496     "message": "Missing parameter(s): url",
    3497     "data": {
    3498         "status": 400,
    3499         "params": [
    3500             "url"
    3501         ]
    3502     }
     3495    "version": "1.0",
     3496    "provider_name": "Test Blog",
     3497    "provider_url": "http://example.org",
     3498    "author_name": "Test Blog",
     3499    "author_url": "http://example.org",
     3500    "title": "REST API Client Fixture: Post",
     3501    "type": "rich",
     3502    "width": 600,
     3503    "height": 338,
     3504    "html": "<blockquote class=\"wp-embedded-content\">...</blockquote>"
    35033505};
    35043506
    35053507mockedApiResponse.oembedProxy = {
    3506     "code": "rest_missing_callback_param",
    3507     "message": "Missing parameter(s): url",
    3508     "data": {
    3509         "status": 400,
    3510         "params": [
    3511             "url"
    3512         ]
    3513     }
     3508    "version": "1.0",
     3509    "type": "video",
     3510    "provider_name": "YouTube",
     3511    "provider_url": "https://www.youtube.com",
     3512    "thumbnail_width": 480,
     3513    "width": 500,
     3514    "thumbnail_height": 360,
     3515    "html": "<iframe width=\"500\" height=\"375\" src=\"https://www.youtube.com/embed/i_cVJgIz_Cs?feature=oembed\" frameborder=\"0\" allowfullscreen></iframe>",
     3516    "author_name": "Jorge Rubira Santos",
     3517    "thumbnail_url": "https://i.ytimg.com/vi/i_cVJgIz_Cs/hqdefault.jpg",
     3518    "title": "No te olvides de poner el Where en el Delete From. (Una cancion para programadores)",
     3519    "height": 375
    35143520};
    35153521
    35163522mockedApiResponse.PostsCollection = [
    mockedApiResponse.PostModel = { 
    36453651
    36463652mockedApiResponse.postRevisions = [
    36473653    {
    3648         "author": "2",
     3654        "author": 2,
    36493655        "date": "2017-02-14T00:00:00",
    36503656        "date_gmt": "2017-02-14T00:00:00",
    36513657        "id": 4,
    mockedApiResponse.postRevisions = [ 
    36763682];
    36773683
    36783684mockedApiResponse.revision = {
    3679     "code": "rest_post_invalid_id",
    3680     "message": "Invalid revision ID.",
    3681     "data": {
    3682         "status": 404
     3685    "author": 2,
     3686    "date": "2017-02-14T00:00:00",
     3687    "date_gmt": "2017-02-14T00:00:00",
     3688    "id": 4,
     3689    "modified": "2017-02-14T00:00:00",
     3690    "modified_gmt": "2017-02-14T00:00:00",
     3691    "parent": 3,
     3692    "slug": "3-revision-v1",
     3693    "guid": {
     3694        "rendered": "http://example.org/?p=4"
     3695    },
     3696    "title": {
     3697        "rendered": "REST API Client Fixture: Post"
     3698    },
     3699    "content": {
     3700        "rendered": "<p>Updated post content.</p>\n"
     3701    },
     3702    "excerpt": {
     3703        "rendered": "<p>REST API Client Fixture: Post</p>\n"
    36833704    }
    36843705};
    36853706
    mockedApiResponse.PageModel = { 
    37953816
    37963817mockedApiResponse.pageRevisions = [
    37973818    {
    3798         "author": "2",
     3819        "author": 2,
    37993820        "date": "2017-02-14T00:00:00",
    38003821        "date_gmt": "2017-02-14T00:00:00",
    38013822        "id": 6,
    mockedApiResponse.pageRevisions = [ 
    38263847];
    38273848
    38283849mockedApiResponse.pageRevision = {
    3829     "code": "rest_post_invalid_id",
    3830     "message": "Invalid revision ID.",
    3831     "data": {
    3832         "status": 404
     3850    "author": 2,
     3851    "date": "2017-02-14T00:00:00",
     3852    "date_gmt": "2017-02-14T00:00:00",
     3853    "id": 6,
     3854    "modified": "2017-02-14T00:00:00",
     3855    "modified_gmt": "2017-02-14T00:00:00",
     3856    "parent": 5,
     3857    "slug": "5-revision-v1",
     3858    "guid": {
     3859        "rendered": "http://example.org/?p=6"
     3860    },
     3861    "title": {
     3862        "rendered": "REST API Client Fixture: Page"
     3863    },
     3864    "content": {
     3865        "rendered": "<p>Updated page content.</p>\n"
     3866    },
     3867    "excerpt": {
     3868        "rendered": "<p>REST API Client Fixture: Page</p>\n"
    38333869    }
    38343870};
    38353871
    mockedApiResponse.TypesCollection = { 
    40164052};
    40174053
    40184054mockedApiResponse.TypeModel = {
    4019     "code": "rest_no_route",
    4020     "message": "No route was found matching the URL and request method",
    4021     "data": {
    4022         "status": 404
    4023     }
     4055    "description": "",
     4056    "hierarchical": false,
     4057    "name": "Posts",
     4058    "slug": "post",
     4059    "taxonomies": [
     4060        "category",
     4061        "post_tag"
     4062    ],
     4063    "rest_base": "posts"
    40244064};
    40254065
    40264066mockedApiResponse.StatusesCollection = {
    mockedApiResponse.CommentsCollection = [ 
    44214461];
    44224462
    44234463mockedApiResponse.CommentModel = {
    4424     "code": "rest_comment_invalid_id",
    4425     "message": "Invalid comment ID.",
    4426     "data": {
    4427         "status": 404
    4428     }
     4464    "id": 2,
     4465    "post": 3,
     4466    "parent": 0,
     4467    "author": 0,
     4468    "author_name": "Internet of something or other",
     4469    "author_url": "http://lights.example.org/",
     4470    "date": "2017-02-14T00:00:00",
     4471    "date_gmt": "2017-02-14T00:00:00",
     4472    "content": {
     4473        "rendered": "<p>This is a comment</p>\n"
     4474    },
     4475    "link": "http://example.org/?p=3#comment-2",
     4476    "status": "approved",
     4477    "type": "comment",
     4478    "author_avatar_urls": {
     4479        "24": "http://2.gravatar.com/avatar/bd7c2b505bcf39cc71cfee564c614956?s=24&d=mm&r=g",
     4480        "48": "http://2.gravatar.com/avatar/bd7c2b505bcf39cc71cfee564c614956?s=48&d=mm&r=g",
     4481        "96": "http://2.gravatar.com/avatar/bd7c2b505bcf39cc71cfee564c614956?s=96&d=mm&r=g"
     4482    },
     4483    "meta": []
    44294484};
    44304485
    44314486mockedApiResponse.settings = {