Make WordPress Core


Ignore:
Timestamp:
01/15/2016 07:55:19 AM (9 years ago)
Author:
swissspidy
Message:

Embeds: Allow embedding static front pages and pages having a child page with an embed slug.

This makes embed a special slug that can't be used for new pages/posts. When https://example.com/foo/embed/ is an existing page, embeds fall back to https://example.com/foo/?embed=true.
Adds unit tests.

Fixes #34971.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/oembed/controller.php

    r35654 r36307  
    170170    }
    171171
    172     function test_request_xml() {
    173         $user = self::factory()->user->create_and_get( array(
    174             'display_name' => 'John Doe',
    175         ) );
     172    /**
     173     * @ticket 34971
     174     */
     175    function test_request_static_front_page() {
    176176        $post = self::factory()->post->create_and_get( array(
    177             'post_author' => $user->ID,
    178             'post_title'  => 'Hello World',
    179         ) );
    180 
    181         $request = new WP_REST_Request( 'GET', '/oembed/1.0/embed' );
    182         $request->set_param( 'url', get_permalink( $post->ID ) );
    183         $request->set_param( 'format', 'xml' );
     177            'post_title' => 'Front page',
     178            'post_type'  => 'page',
     179        ) );
     180
     181        update_option( 'show_on_front', 'page' );
     182        update_option( 'page_on_front', $post->ID );
     183
     184        $request = new WP_REST_Request( 'GET', '/oembed/1.0/embed' );
     185        $request->set_param( 'url', home_url() );
    184186        $request->set_param( 'maxwidth', 400 );
    185187
     
    202204        $this->assertEquals( get_bloginfo( 'name' ), $data['provider_name'] );
    203205        $this->assertEquals( get_home_url(), $data['provider_url'] );
     206        $this->assertEquals( get_bloginfo( 'name' ), $data['author_name'] );
     207        $this->assertEquals( get_home_url(), $data['author_url'] );
     208        $this->assertEquals( $post->post_title, $data['title'] );
     209        $this->assertEquals( 'rich', $data['type'] );
     210        $this->assertTrue( $data['width'] <= $request['maxwidth'] );
     211
     212        update_option( 'show_on_front', 'posts' );
     213    }
     214
     215    function test_request_xml() {
     216        $user = self::factory()->user->create_and_get( array(
     217            'display_name' => 'John Doe',
     218        ) );
     219        $post = self::factory()->post->create_and_get( array(
     220            'post_author' => $user->ID,
     221            'post_title'  => 'Hello World',
     222        ) );
     223
     224        $request = new WP_REST_Request( 'GET', '/oembed/1.0/embed' );
     225        $request->set_param( 'url', get_permalink( $post->ID ) );
     226        $request->set_param( 'format', 'xml' );
     227        $request->set_param( 'maxwidth', 400 );
     228
     229        $response = $this->server->dispatch( $request );
     230        $data     = $response->get_data();
     231
     232        $this->assertInternalType( 'array', $data );
     233        $this->assertNotEmpty( $data );
     234
     235        $this->assertArrayHasKey( 'version', $data );
     236        $this->assertArrayHasKey( 'provider_name', $data );
     237        $this->assertArrayHasKey( 'provider_url', $data );
     238        $this->assertArrayHasKey( 'author_name', $data );
     239        $this->assertArrayHasKey( 'author_url', $data );
     240        $this->assertArrayHasKey( 'title', $data );
     241        $this->assertArrayHasKey( 'type', $data );
     242        $this->assertArrayHasKey( 'width', $data );
     243
     244        $this->assertEquals( '1.0', $data['version'] );
     245        $this->assertEquals( get_bloginfo( 'name' ), $data['provider_name'] );
     246        $this->assertEquals( get_home_url(), $data['provider_url'] );
    204247        $this->assertEquals( $user->display_name, $data['author_name'] );
    205248        $this->assertEquals( get_author_posts_url( $user->ID, $user->user_nicename ), $data['author_url'] );
Note: See TracChangeset for help on using the changeset viewer.