Changeset 54968
- Timestamp:
- 12/14/2022 01:26:39 AM (2 years ago)
- Location:
- trunk/tests/phpunit/tests/http
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/http/base.php
r54955 r54968 437 437 438 438 /** 439 * Test HTTP Redirects with multiple Location headers specified.440 *441 * This test has been disabled due to api.wordpress.org failing to442 * send two Location headers. See #57306.443 *444 * @ticket 16890445 *446 * @covers ::wp_remote_head447 * @covers ::wp_remote_retrieve_header448 * @covers ::wp_remote_get449 * @covers ::wp_remote_retrieve_body450 */451 public function disabled_test_multiple_location_headers() {452 $url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?multiple-location-headers=1';453 $res = wp_remote_head( $url, array( 'timeout' => 30 ) );454 455 $this->skipTestOnTimeout( $res );456 $this->assertIsArray( wp_remote_retrieve_header( $res, 'location' ) );457 $this->assertCount( 2, wp_remote_retrieve_header( $res, 'location' ) );458 459 $res = wp_remote_get( $url, array( 'timeout' => 30 ) );460 461 $this->skipTestOnTimeout( $res );462 $this->assertSame( 'PASS', wp_remote_retrieve_body( $res ) );463 464 }465 466 /**467 439 * Test HTTP Cookie handling. 468 440 * -
trunk/tests/phpunit/tests/http/http.php
r52328 r54968 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.