Make WordPress Core

source: trunk/tests/phpunit/includes/spy-rest-server.php

Last change on this file was 60185, checked in by SergeyBiryukov, 3 months ago

Docs: Correct parameter name in Spy_REST_Server::set_status().

Follow-up to [51960].

Props nareshbheda.
Fixes #63343.

  • Property svn:eol-style set to native
File size: 2.9 KB
Line 
1<?php
2
3class Spy_REST_Server extends WP_REST_Server {
4
5        public $sent_headers        = array();
6        public $sent_body           = '';
7        public $last_request        = null;
8        public $override_by_default = false;
9        public $status              = null;
10
11        /**
12         * Gets the raw $endpoints data from the server.
13         *
14         * @return array
15         */
16        public function get_raw_endpoint_data() {
17                return $this->endpoints;
18        }
19
20        /**
21         * Allow calling protected methods from tests.
22         *
23         * @param string $method Method to call.
24         * @param array  $args   Arguments to pass to the method.
25         * @return mixed
26         */
27        public function __call( $method, $args ) {
28                if ( ! method_exists( $this, $method ) ) {
29                        throw new Error( sprintf( 'Call to undefined method %s::%s()', get_class( $this ), $method ) );
30                }
31
32                return call_user_func_array( array( $this, $method ), $args );
33        }
34
35        /**
36         * Adds a header to the list of sent headers.
37         *
38         * @param string $header Header name.
39         * @param string $value  Header value.
40         */
41        public function send_header( $header, $value ) {
42                $this->sent_headers[ $header ] = $value;
43        }
44
45        /**
46         * Removes a header from the list of sent headers.
47         *
48         * @param string $header Header name.
49         */
50        public function remove_header( $header ) {
51                unset( $this->sent_headers[ $header ] );
52        }
53
54        /**
55         * Stores last set status.
56         *
57         * @param int $status HTTP status.
58         */
59        public function set_status( $status ) {
60                $this->status = $status;
61        }
62
63        /**
64         * Overrides the dispatch method so we can get a handle on the request object.
65         *
66         * @param  WP_REST_Request $request Request to attempt dispatching.
67         * @return WP_REST_Response Response returned by the callback.
68         */
69        public function dispatch( $request ) {
70                $this->last_request = $request;
71                return parent::dispatch( $request );
72        }
73
74        /**
75         * Overrides the register_route method so we can re-register routes internally if needed.
76         *
77         * @param string $route_namespace Namespace.
78         * @param string $route           The REST route.
79         * @param array  $route_args      Route arguments.
80         * @param bool   $override        Optional. Whether the route should be overridden if it already exists.
81         *                                Default false. Also set `$GLOBALS['wp_rest_server']->override_by_default = true`
82         *                                to set overrides when you don't have access to the caller context.
83         */
84        public function register_route( $route_namespace, $route, $route_args, $override = false ) {
85                parent::register_route( $route_namespace, $route, $route_args, $override || $this->override_by_default );
86        }
87
88        /**
89         * Serves the request and returns the result.
90         *
91         * @param string $path Optional. The request route. If not set, `$_SERVER['PATH_INFO']` will be used.
92         *                     Default null.
93         * @return null|false Null if not served and a HEAD request, false otherwise.
94         */
95        public function serve_request( $path = null ) {
96
97                ob_start();
98                $result          = parent::serve_request( $path );
99                $this->sent_body = ob_get_clean();
100                return $result;
101        }
102}
Note: See TracBrowser for help on using the repository browser.