Make WordPress Core


Ignore:
Timestamp:
05/22/2017 04:15:25 PM (8 years ago)
Author:
jnylen0
Message:

REST API: Fix changing parameters with set_param() for some requests.

Prior to this commit, WP_Rest_Request::get_param() traversed through the parameter order but WP_Rest_Request::set_param() did not. For JSON requests (and likely other situations as well), this meant that changing a parameter with set_param() would have no effect on get_param().

Props TimothyBlynJacobs.
Fixes #40344.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api/rest-request.php

    r40577 r40815  
    581581        $this->assertFalse( $request );
    582582    }
     583
     584    public function test_set_param() {
     585        $request = new WP_REST_Request();
     586        $request->set_param( 'param', 'value' );
     587        $this->assertEquals( 'value', $request->get_param( 'param' ) );
     588    }
     589
     590    public function test_set_param_follows_parameter_order() {
     591        $request = new WP_REST_Request();
     592        $request->add_header( 'content-type', 'application/json' );
     593        $request->set_method( 'POST' );
     594        $request->set_body( wp_json_encode( array(
     595            'param' => 'value'
     596        ) ) );
     597        $this->assertEquals( 'value', $request->get_param( 'param' ) );
     598        $this->assertEquals(
     599            array( 'param' => 'value' ),
     600            $request->get_json_params()
     601        );
     602
     603        $request->set_param( 'param', 'new_value' );
     604        $this->assertEquals( 'new_value', $request->get_param( 'param' ) );
     605        $this->assertEquals(
     606            array( 'param' => 'new_value' ),
     607            $request->get_json_params()
     608        );
     609    }
    583610}
Note: See TracChangeset for help on using the changeset viewer.