Changeset 54978
- Timestamp:
- 12/15/2022 04:25:31 AM (2 years ago)
- Location:
- branches/5.7
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/5.7
-
branches/5.7/tests/phpunit/tests/http/base.php
r50344 r54978 446 446 447 447 /** 448 * Test HTTP Redirects with multiple Location headers specified.449 *450 * @ticket 16890451 *452 * @covers ::wp_remote_head453 * @covers ::wp_remote_retrieve_header454 * @covers ::wp_remote_get455 * @covers ::wp_remote_retrieve_body456 */457 function test_multiple_location_headers() {458 $url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?multiple-location-headers=1';459 $res = wp_remote_head( $url, array( 'timeout' => 30 ) );460 461 $this->skipTestOnTimeout( $res );462 $this->assertInternalType( 'array', wp_remote_retrieve_header( $res, 'location' ) );463 $this->assertCount( 2, wp_remote_retrieve_header( $res, 'location' ) );464 465 $res = wp_remote_get( $url, array( 'timeout' => 30 ) );466 467 $this->skipTestOnTimeout( $res );468 $this->assertSame( 'PASS', wp_remote_retrieve_body( $res ) );469 470 }471 472 /**473 448 * Test HTTP Cookie handling. 474 449 * -
branches/5.7/tests/phpunit/tests/http/http.php
r50344 r54978 393 393 } 394 394 395 /** 396 * Test HTTP Redirects with multiple Location headers specified. 397 * 398 * Ensure the WP_HTTP::handle_redirects() method handles multiple Location headers 399 * and the HTTP request it makes uses the last Location header. 400 * 401 * @ticket 16890 402 * @ticket 57306 403 * 404 * @covers WP_HTTP::handle_redirects 405 */ 406 public function test_multiple_location_headers() { 407 $pre_http_request_filter_has_run = false; 408 // Filter the response made by WP_HTTP::handle_redirects(). 409 add_filter( 410 'pre_http_request', 411 function( $response, $args, $url ) use ( &$pre_http_request_filter_has_run ) { 412 $pre_http_request_filter_has_run = true; 413 414 // Assert the redirect URL is correct. 415 $this->assertSame( 416 $url, 417 'http://example.com/?multiple-location-headers=1&redirected=two' 418 ); 419 420 if ( 'http://example.com/?multiple-location-headers=1&redirected=two' === $url ) { 421 $body = 'PASS'; 422 } else { 423 $body = 'FAIL'; 424 } 425 426 return array( 427 'headers' => array(), 428 'body' => $body, 429 'response' => array( 430 'code' => 200, 431 'message' => 'OK', 432 ), 433 'cookies' => array(), 434 'filename' => null, 435 ); 436 }, 437 10, 438 3 439 ); 440 441 $headers = array( 442 'server' => 'nginx', 443 'date' => 'Sun, 11 Dec 2022 23:11:22 GMT', 444 'content-type' => 'text/html; charset=utf-8', 445 'location' => array( 446 'http://example.com/?multiple-location-headers=1&redirected=one', 447 'http://example.com/?multiple-location-headers=1&redirected=two', 448 ), 449 ); 450 451 // Test the tests: ensure multiple locations are passed to WP_HTTP::handle_redirects(). 452 $this->assertIsArray( $headers['location'], 'Location header is expected to be an array.' ); 453 $this->assertCount( 2, $headers['location'], 'Location header is expected to contain two values.' ); 454 455 $args = array( 456 'timeout' => 30, 457 '_redirection' => 3, 458 'redirection' => 2, 459 'method' => 'GET', 460 ); 461 462 $redirect_response = WP_HTTP::handle_redirects( 463 'http://example.com/?multiple-location-headers=1', 464 $args, 465 array( 466 'headers' => $headers, 467 'body' => '', 468 'cookies' => array(), 469 'filename' => null, 470 'response' => array( 471 'code' => 302, 472 'message' => 'Found', 473 ), 474 ) 475 ); 476 $this->assertSame( 'PASS', wp_remote_retrieve_body( $redirect_response ), 'Redirect response body is expected to be PASS.' ); 477 $this->assertTrue( $pre_http_request_filter_has_run, 'The pre_http_request filter is expected to run.' ); 478 } 395 479 }
Note: See TracChangeset
for help on using the changeset viewer.