source:
trunk/tests/phpunit/includes/spy-rest-server.php
@
55027
Last change on this file since 55027 was 55027, checked in by , 3 years ago | |
---|---|
|
|
File size: 2.8 KB |
Line | |
---|---|
1 | <?php |
2 | |
3 | class 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 | return call_user_func_array( array( $this, $method ), $args ); |
29 | } |
30 | |
31 | /** |
32 | * Adds a header to the list of sent headers. |
33 | * |
34 | * @param string $header Header name. |
35 | * @param string $value Header value. |
36 | */ |
37 | public function send_header( $header, $value ) { |
38 | $this->sent_headers[ $header ] = $value; |
39 | } |
40 | |
41 | /** |
42 | * Removes a header from the list of sent headers. |
43 | * |
44 | * @param string $header Header name. |
45 | */ |
46 | public function remove_header( $header ) { |
47 | unset( $this->sent_headers[ $header ] ); |
48 | } |
49 | |
50 | /** |
51 | * Stores last set status. |
52 | * |
53 | * @param int $code HTTP status. |
54 | */ |
55 | public function set_status( $status ) { |
56 | $this->status = $status; |
57 | } |
58 | |
59 | /** |
60 | * Overrides the dispatch method so we can get a handle on the request object. |
61 | * |
62 | * @param WP_REST_Request $request Request to attempt dispatching. |
63 | * @return WP_REST_Response Response returned by the callback. |
64 | */ |
65 | public function dispatch( $request ) { |
66 | $this->last_request = $request; |
67 | return parent::dispatch( $request ); |
68 | } |
69 | |
70 | /** |
71 | * Overrides the register_route method so we can re-register routes internally if needed. |
72 | * |
73 | * @param string $route_namespace Namespace. |
74 | * @param string $route The REST route. |
75 | * @param array $route_args Route arguments. |
76 | * @param bool $override Optional. Whether the route should be overridden if it already exists. |
77 | * Default false. Also set `$GLOBALS['wp_rest_server']->override_by_default = true` |
78 | * to set overrides when you don't have access to the caller context. |
79 | */ |
80 | public function register_route( $route_namespace, $route, $route_args, $override = false ) { |
81 | parent::register_route( $route_namespace, $route, $route_args, $override || $this->override_by_default ); |
82 | } |
83 | |
84 | /** |
85 | * Serves the request and returns the result. |
86 | * |
87 | * @param string $path Optional. The request route. If not set, `$_SERVER['PATH_INFO']` will be used. |
88 | * Default null. |
89 | * @return null|false Null if not served and a HEAD request, false otherwise. |
90 | */ |
91 | public function serve_request( $path = null ) { |
92 | |
93 | ob_start(); |
94 | $result = parent::serve_request( $path ); |
95 | $this->sent_body = ob_get_clean(); |
96 | return $result; |
97 | } |
98 | } |
Note: See TracBrowser
for help on using the repository browser.