Changeset 54994
- Timestamp:
- 12/15/2022 04:54:04 AM (2 years ago)
- Location:
- branches/4.1
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/4.1
-
branches/4.1/tests/phpunit/tests/http/base.php
r50103 r54994 315 315 316 316 /** 317 * Test HTTP Redirects with multiple Location headers specified318 *319 * @ticket 16890320 */321 function test_multiple_location_headers() {322 $url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?multiple-location-headers=1';323 $res = wp_remote_head( $url, array( 'timeout' => 30 ) );324 325 $this->skipTestOnTimeout( $res );326 $this->assertInternalType( 'array', wp_remote_retrieve_header( $res, 'location' ) );327 $this->assertCount( 2, wp_remote_retrieve_header( $res, 'location' ) );328 329 $res = wp_remote_get( $url, array( 'timeout' => 30 ) );330 331 $this->skipTestOnTimeout( $res );332 $this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );333 334 }335 336 /**337 317 * Test HTTP Cookie handling 338 318 * -
branches/4.1/tests/phpunit/tests/http/http.php
r29864 r54994 103 103 */ 104 104 } 105 106 /** 107 * Test HTTP Redirects with multiple Location headers specified. 108 * 109 * Ensure the WP_HTTP::handle_redirects() method handles multiple Location headers 110 * and the HTTP request it makes uses the last Location header. 111 * 112 * @ticket 16890 113 * @ticket 57306 114 * 115 * @covers WP_HTTP::handle_redirects 116 */ 117 public function test_multiple_location_headers() { 118 $pre_http_request_filter_has_run = false; 119 // Filter the response made by WP_HTTP::handle_redirects(). 120 add_filter( 121 'pre_http_request', 122 array( $this, 'filter_for_multiple_location_headers' ), 123 10, 124 3 125 ); 126 127 $headers = array( 128 'server' => 'nginx', 129 'date' => 'Sun, 11 Dec 2022 23:11:22 GMT', 130 'content-type' => 'text/html; charset=utf-8', 131 'location' => array( 132 'http://example.com/?multiple-location-headers=1&redirected=one', 133 'http://example.com/?multiple-location-headers=1&redirected=two', 134 ), 135 ); 136 137 // Test the tests: ensure multiple locations are passed to WP_HTTP::handle_redirects(). 138 $this->assertTrue( is_array( $headers['location'] ), 'Location header is expected to be an array.' ); 139 $this->assertCount( 2, $headers['location'], 'Location header is expected to contain two values.' ); 140 141 $args = array( 142 'timeout' => 30, 143 '_redirection' => 3, 144 'redirection' => 2, 145 'method' => 'GET', 146 ); 147 148 $redirect_response = _wp_http_get_object()->handle_redirects( 149 'http://example.com/?multiple-location-headers=1', 150 $args, 151 array( 152 'headers' => $headers, 153 'body' => '', 154 'cookies' => array(), 155 'filename' => null, 156 'response' => array( 157 'code' => 302, 158 'message' => 'Found', 159 ), 160 ) 161 ); 162 $this->assertSame( 'PASS', wp_remote_retrieve_body( $redirect_response ), 'Redirect response body is expected to be PASS.' ); 163 } 164 165 public function filter_for_multiple_location_headers( $response, $args, $url ) { 166 if ( 'http://example.com/?multiple-location-headers=1&redirected=two' === $url ) { 167 $body = 'PASS'; 168 } else { 169 $body = 'FAIL'; 170 } 171 172 return array( 173 'headers' => array(), 174 'body' => $body, 175 'response' => array( 176 'code' => 200, 177 'message' => 'OK', 178 ), 179 'cookies' => array(), 180 'filename' => null, 181 ); 182 } 105 183 } 106 184
Note: See TracChangeset
for help on using the changeset viewer.