Changeset 54977
- Timestamp:
- 12/15/2022 04:23:56 AM (2 years ago)
- Location:
- branches/5.8
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/5.8
-
branches/5.8/tests/phpunit/tests/http/base.php
r50463 r54977 439 439 440 440 /** 441 * Test HTTP Redirects with multiple Location headers specified.442 *443 * @ticket 16890444 *445 * @covers ::wp_remote_head446 * @covers ::wp_remote_retrieve_header447 * @covers ::wp_remote_get448 * @covers ::wp_remote_retrieve_body449 */450 function test_multiple_location_headers() {451 $url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?multiple-location-headers=1';452 $res = wp_remote_head( $url, array( 'timeout' => 30 ) );453 454 $this->skipTestOnTimeout( $res );455 $this->assertInternalType( 'array', wp_remote_retrieve_header( $res, 'location' ) );456 $this->assertCount( 2, wp_remote_retrieve_header( $res, 'location' ) );457 458 $res = wp_remote_get( $url, array( 'timeout' => 30 ) );459 460 $this->skipTestOnTimeout( $res );461 $this->assertSame( 'PASS', wp_remote_retrieve_body( $res ) );462 463 }464 465 /**466 441 * Test HTTP Cookie handling. 467 442 * -
branches/5.8/tests/phpunit/tests/http/http.php
r50537 r54977 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.