mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-06-28 22:30:04 +00:00
REST API: Expose current $request object to cors_header filters in WP_REST_SERVER->serve_request().
Allows headers to be more easily set on a per-response basis when more or less security is needed on a specific route. Props bor0, rachelbaker, spacedmonkey, chaion07, oglekler, SergeyBiryukov. Fixes #57752. git-svn-id: https://develop.svn.wordpress.org/trunk@56096 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -2200,6 +2200,36 @@ class Tests_REST_Server extends WP_Test_REST_TestCase {
|
||||
$this->assertSame( 500, rest_get_server()->status );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 57752
|
||||
*/
|
||||
public function test_rest_exposed_cors_headers_filter_receives_request_object() {
|
||||
$mock_hook = new MockAction();
|
||||
add_filter( 'rest_exposed_cors_headers', array( $mock_hook, 'filter' ), 10, 2 );
|
||||
|
||||
rest_get_server()->serve_request( '/test-exposed-cors-headers' );
|
||||
|
||||
$this->assertCount( 1, $mock_hook->get_events() );
|
||||
$this->assertCount( 2, $mock_hook->get_events()[0]['args'] );
|
||||
$this->assertInstanceOf( 'WP_REST_Request', $mock_hook->get_events()[0]['args'][1] );
|
||||
$this->assertSame( '/test-exposed-cors-headers', $mock_hook->get_events()[0]['args'][1]->get_route() );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 57752
|
||||
*/
|
||||
public function test_rest_allowed_cors_headers_filter_receives_request_object() {
|
||||
$mock_hook = new MockAction();
|
||||
add_filter( 'rest_allowed_cors_headers', array( $mock_hook, 'filter' ), 10, 2 );
|
||||
|
||||
rest_get_server()->serve_request( '/test-allowed-cors-headers' );
|
||||
|
||||
$this->assertCount( 1, $mock_hook->get_events() );
|
||||
$this->assertCount( 2, $mock_hook->get_events()[0]['args'] );
|
||||
$this->assertInstanceOf( 'WP_REST_Request', $mock_hook->get_events()[0]['args'][1] );
|
||||
$this->assertSame( '/test-allowed-cors-headers', $mock_hook->get_events()[0]['args'][1]->get_route() );
|
||||
}
|
||||
|
||||
public function _validate_as_integer_123( $value, $request, $key ) {
|
||||
if ( ! is_int( $value ) ) {
|
||||
return new WP_Error( 'some-error', 'This is not valid!' );
|
||||
|
||||
Reference in New Issue
Block a user