REST API: Accept string path in rest_ensure_request.

Update `rest_ensure_request()` to accept a string path, permitting a string path to be passed to `rest_do_request()` as is indicated (previously inaccurately) in that method's PHPDoc.

Props TimothyBlynJacobs, kadamwhite.
Fixes #40614.


git-svn-id: https://develop.svn.wordpress.org/trunk@46099 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
K. Adam White 2019-09-12 21:46:41 +00:00
parent ee69f54b8a
commit b979a99355
2 changed files with 16 additions and 1 deletions

View File

@ -482,8 +482,9 @@ function rest_get_server() {
* Ensures request arguments are a request object (for consistency).
*
* @since 4.4.0
* @since 5.3.0 Accept string argument for the request path.
*
* @param array|WP_REST_Request $request Request to check.
* @param array|string|WP_REST_Request $request Request to check.
* @return WP_REST_Request REST request instance.
*/
function rest_ensure_request( $request ) {
@ -491,6 +492,10 @@ function rest_ensure_request( $request ) {
return $request;
}
if ( is_string( $request ) ) {
return new WP_REST_Request( 'GET', $request );
}
return new WP_REST_Request( 'GET', '', $request );
}

View File

@ -744,4 +744,14 @@ class Tests_REST_API extends WP_UnitTestCase {
$GLOBALS['wp_rest_server'] = $rest_server;
}
/**
* @ticket 40614
*/
function test_rest_ensure_response_accepts_path_string() {
$request = rest_ensure_request( '/wp/v2/posts' );
$this->assertInstanceOf( 'WP_REST_Request', $request );
$this->assertEquals( '/wp/v2/posts', $request->get_route() );
$this->assertEquals( 'GET', $request->get_method() );
}
}