Changeset 54993 for branches/4.2
- Timestamp:
- 12/15/2022 04:52:40 AM (2 years ago)
- Location:
- branches/4.2
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/4.2
-
branches/4.2/tests/phpunit/tests/http/base.php
r50102 r54993 332 332 333 333 /** 334 * Test HTTP Redirects with multiple Location headers specified335 *336 * @ticket 16890337 */338 function test_multiple_location_headers() {339 $url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?multiple-location-headers=1';340 $res = wp_remote_head( $url, array( 'timeout' => 30 ) );341 342 $this->skipTestOnTimeout( $res );343 $this->assertInternalType( 'array', wp_remote_retrieve_header( $res, 'location' ) );344 $this->assertCount( 2, wp_remote_retrieve_header( $res, 'location' ) );345 346 $res = wp_remote_get( $url, array( 'timeout' => 30 ) );347 348 $this->skipTestOnTimeout( $res );349 $this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );350 351 }352 353 /**354 334 * Test HTTP Cookie handling 355 335 * -
branches/4.2/tests/phpunit/tests/http/http.php
r29864 r54993 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.