Make WordPress Core


Ignore:
Timestamp:
01/15/2025 06:34:35 PM (5 months ago)
Author:
flixos90
Message:

REST API: Fix PHP warning about undefined paged argument in various REST API endpoints.

This bug could occur in WP_REST_Posts_Controller, WP_REST_Global_Styles_Revisions_Controller, WP_REST_Revisions_Controller, and any of their child classes. This changeset fixes it throughout.

Props apermo, pbearne, hemant-ahir, flixos90.
Fixes #62292.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api/rest-global-styles-revisions-controller.php

    r58673 r59630  
    827827    }
    828828
     829
     830    /**
     831     * Tests for the pagination.
     832     *
     833     * @ticket 62292
     834     *
     835     * @covers WP_REST_Global_Styles_Controller::get_items
     836     */
     837    public function test_get_global_styles_revisions_pagination() {
     838        wp_set_current_user( self::$admin_id );
     839
     840        // Test offset
     841        $request = new WP_REST_Request( 'GET', '/wp/v2/global-styles/' . self::$global_styles_id . '/revisions' );
     842        $request->set_param( 'offset', 1 );
     843        $request->set_param( 'per_page', 1 );
     844        $response = rest_get_server()->dispatch( $request );
     845        $this->assertEquals( 200, $response->get_status() );
     846        $data = $response->get_data();
     847        $this->assertCount( 1, $data );
     848        $this->assertEquals( 3, $response->get_headers()['X-WP-Total'] );
     849        $this->assertEquals( 3, $response->get_headers()['X-WP-TotalPages'] );
     850
     851        // Test paged
     852        $request = new WP_REST_Request( 'GET', '/wp/v2/global-styles/' . self::$global_styles_id . '/revisions' );
     853        $request->set_param( 'page', 2 );
     854        $request->set_param( 'per_page', 2 );
     855        $response = rest_get_server()->dispatch( $request );
     856        $this->assertEquals( 200, $response->get_status() );
     857        $data = $response->get_data();
     858        $this->assertCount( 1, $data );
     859        $this->assertEquals( 3, $response->get_headers()['X-WP-Total'] );
     860        $this->assertEquals( 2, $response->get_headers()['X-WP-TotalPages'] );
     861
     862        // Test out of bounds
     863        $request = new WP_REST_Request( 'GET', '/wp/v2/global-styles/' . self::$global_styles_id . '/revisions' );
     864        $request->set_param( 'page', 4 );
     865        $request->set_param( 'per_page', 6 );
     866        $response = rest_get_server()->dispatch( $request );
     867        $this->assertErrorResponse( 'rest_revision_invalid_page_number', $response, 400 );
     868    }
     869
    829870    /**
    830871     * @doesNotPerformAssertions
Note: See TracChangeset for help on using the changeset viewer.