Make WordPress Core


Ignore:
Timestamp:
01/15/2025 06:34:35 PM (19 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.