Changeset 54974
- Timestamp:
- 12/15/2022 04:18:48 AM (22 months ago)
- Location:
- branches/6.1
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/6.1
-
branches/6.1/tests/phpunit/tests/http/base.php
r52010 r54974 437 437 438 438 /** 439 * Test HTTP Redirects with multiple Location headers specified.440 *441 * @ticket 16890442 *443 * @covers ::wp_remote_head444 * @covers ::wp_remote_retrieve_header445 * @covers ::wp_remote_get446 * @covers ::wp_remote_retrieve_body447 */448 public function test_multiple_location_headers() {449 $url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?multiple-location-headers=1';450 $res = wp_remote_head( $url, array( 'timeout' => 30 ) );451 452 $this->skipTestOnTimeout( $res );453 $this->assertIsArray( wp_remote_retrieve_header( $res, 'location' ) );454 $this->assertCount( 2, wp_remote_retrieve_header( $res, 'location' ) );455 456 $res = wp_remote_get( $url, array( 'timeout' => 30 ) );457 458 $this->skipTestOnTimeout( $res );459 $this->assertSame( 'PASS', wp_remote_retrieve_body( $res ) );460 461 }462 463 /**464 439 * Test HTTP Cookie handling. 465 440 * -
branches/6.1/tests/phpunit/tests/http/http.php
r52328 r54974 568 568 return array(); 569 569 } 570 571 /** 572 * Test HTTP Redirects with multiple Location headers specified. 573 * 574 * Ensure the WP_HTTP::handle_redirects() method handles multiple Location headers 575 * and the HTTP request it makes uses the last Location header. 576 * 577 * @ticket 16890 578 * @ticket 57306 579 * 580 * @covers WP_HTTP::handle_redirects 581 */ 582 public function test_multiple_location_headers() { 583 $pre_http_request_filter_has_run = false; 584 // Filter the response made by WP_HTTP::handle_redirects(). 585 add_filter( 586 'pre_http_request', 587 function( $response, $args, $url ) use ( &$pre_http_request_filter_has_run ) { 588 $pre_http_request_filter_has_run = true; 589 590 // Assert the redirect URL is correct. 591 $this->assertSame( 592 $url, 593 'http://example.com/?multiple-location-headers=1&redirected=two' 594 ); 595 596 if ( 'http://example.com/?multiple-location-headers=1&redirected=two' === $url ) { 597 $body = 'PASS'; 598 } else { 599 $body = 'FAIL'; 600 } 601 602 return array( 603 'headers' => array(), 604 'body' => $body, 605 'response' => array( 606 'code' => 200, 607 'message' => 'OK', 608 ), 609 'cookies' => array(), 610 'filename' => null, 611 ); 612 }, 613 10, 614 3 615 ); 616 617 $headers = array( 618 'server' => 'nginx', 619 'date' => 'Sun, 11 Dec 2022 23:11:22 GMT', 620 'content-type' => 'text/html; charset=utf-8', 621 'location' => array( 622 'http://example.com/?multiple-location-headers=1&redirected=one', 623 'http://example.com/?multiple-location-headers=1&redirected=two', 624 ), 625 ); 626 627 // Test the tests: ensure multiple locations are passed to WP_HTTP::handle_redirects(). 628 $this->assertIsArray( $headers['location'], 'Location header is expected to be an array.' ); 629 $this->assertCount( 2, $headers['location'], 'Location header is expected to contain two values.' ); 630 631 $args = array( 632 'timeout' => 30, 633 '_redirection' => 3, 634 'redirection' => 2, 635 'method' => 'GET', 636 ); 637 638 $redirect_response = WP_HTTP::handle_redirects( 639 'http://example.com/?multiple-location-headers=1', 640 $args, 641 array( 642 'headers' => $headers, 643 'body' => '', 644 'cookies' => array(), 645 'filename' => null, 646 'response' => array( 647 'code' => 302, 648 'message' => 'Found', 649 ), 650 ) 651 ); 652 $this->assertSame( 'PASS', wp_remote_retrieve_body( $redirect_response ), 'Redirect response body is expected to be PASS.' ); 653 $this->assertTrue( $pre_http_request_filter_has_run, 'The pre_http_request filter is expected to run.' ); 654 } 570 655 }
Note: See TracChangeset
for help on using the changeset viewer.