Tests: Use WP_HTTP_UnitTestCase::skipTestOnTimeout() in more HTTP tests.

Adjust it to handle more types of timeouts, e.g. "Resolving timed out", "Connection timed out".

Merges [43511] to the 4.9 branch.
See #44613.

git-svn-id: https://develop.svn.wordpress.org/branches/4.9@43625 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2018-09-03 21:52:48 +00:00
parent aadaa64d03
commit 9e8090fcee

View File

@ -28,7 +28,7 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
$this->markTestSkipped( 'HTTP timeout' );
}
if ( 0 === strpos( $response->get_error_message(), 'Operation timed out after' ) ){
if ( false !== strpos( $response->get_error_message(), 'timed out after' ) ) {
$this->markTestSkipped( 'HTTP timeout' );
}
@ -73,6 +73,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_redirect_on_301() {
// 5 : 5 & 301
$res = wp_remote_request($this->redirection_script . '?code=301&rt=' . 5, array('redirection' => 5) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals(200, (int)$res['response']['code'] );
}
@ -80,6 +82,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_redirect_on_302() {
// 5 : 5 & 302
$res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 5) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals(200, (int)$res['response']['code'] );
}
@ -90,6 +94,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_redirect_on_301_no_redirect() {
// 5 > 0 & 301
$res = wp_remote_request($this->redirection_script . '?code=301&rt=' . 5, array('redirection' => 0) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals(301, (int)$res['response']['code'] );
}
@ -100,6 +106,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_redirect_on_302_no_redirect() {
// 5 > 0 & 302
$res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 0) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals(302, (int)$res['response']['code'] );
}
@ -107,6 +115,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_redirections_equal() {
// 5 - 5
$res = wp_remote_request($this->redirection_script . '?rt=' . 5, array('redirection' => 5) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals(200, (int)$res['response']['code'] );
}
@ -114,6 +124,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_no_head_redirections() {
// No redirections on HEAD request:
$res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 1, array('method' => 'HEAD') );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals( 302, (int)$res['response']['code'] );
}
@ -124,6 +136,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_redirect_on_head() {
// Redirections on HEAD request when Requested
$res = wp_remote_request($this->redirection_script . '?rt=' . 5, array('redirection' => 5, 'method' => 'HEAD') );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals( 200, (int)$res['response']['code'] );
}
@ -131,18 +145,24 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_redirections_greater() {
// 10 > 5
$res = wp_remote_request($this->redirection_script . '?rt=' . 10, array('redirection' => 5) );
$this->skipTestOnTimeout( $res );
$this->assertWPError( $res );
}
function test_redirections_greater_edgecase() {
// 6 > 5 (close edgecase)
$res = wp_remote_request($this->redirection_script . '?rt=' . 6, array('redirection' => 5) );
$this->skipTestOnTimeout( $res );
$this->assertWPError( $res );
}
function test_redirections_less_edgecase() {
// 4 < 5 (close edgecase)
$res = wp_remote_request($this->redirection_script . '?rt=' . 4, array('redirection' => 5) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
}
@ -152,6 +172,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_redirections_zero_redirections_specified() {
// 0 redirections asked for, Should return the document?
$res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 0) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals( 302, (int)$res['response']['code'] );
}
@ -164,6 +186,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
function test_location_header_on_201() {
// Prints PASS on initial load, FAIL if the client follows the specified redirection
$res = wp_remote_request( $this->redirection_script . '?201-location=true' );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals( 'PASS', $res['body']);
}
@ -178,6 +202,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
// Test 301 - POST to POST
$res = wp_remote_request( $url, array( 'method' => 'PUT', 'timeout' => 30 ) );
$this->skipTestOnTimeout( $res );
$this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );
$this->assertTrue( !empty( $res['headers']['location'] ) );
}
@ -190,6 +216,7 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
$headers = array('test1' => 'test', 'test2' => 0, 'test3' => '');
$res = wp_remote_request( $this->redirection_script . '?header-check', array('headers' => $headers) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$headers = array();
@ -220,7 +247,6 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
}
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals( '', $res['body'] ); // The body should be empty.
$this->assertEquals( $size, $res['headers']['content-length'] ); // Check the headers are returned (and the size is the same..)
@ -243,7 +269,6 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
}
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals( $size, $filesize ); // Check that the file is written to disk correctly without any extra characters
@ -261,7 +286,6 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
$res = wp_remote_request( $url, array( 'timeout' => 30, 'limit_response_size' => $size ) );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
$this->assertEquals( $size, strlen( $res['body'] ) );
}
@ -277,6 +301,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
$url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?post-redirect-to-method=1';
$res = wp_remote_post( add_query_arg( 'response_code', $response_code, $url ), array( 'timeout' => 30 ) );
$this->skipTestOnTimeout( $res );
$this->assertEquals( $method, wp_remote_retrieve_body( $res ) );
}
@ -322,6 +348,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
);
$res = wp_remote_get( $url, $args );
$this->skipTestOnTimeout( $res );
$this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );
}
@ -343,6 +371,7 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
remove_filter( 'http_request_args', array( $this, 'filter_http_request_args' ) );
$this->skipTestOnTimeout( $res );
$this->assertNotEmpty( $this->http_request_args['sslcertificates'] );
$this->assertNotWPError( $res );
}
@ -356,10 +385,13 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
$url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?multiple-location-headers=1';
$res = wp_remote_head( $url, array( 'timeout' => 30 ) );
$this->skipTestOnTimeout( $res );
$this->assertInternalType( 'array', wp_remote_retrieve_header( $res, 'location' ) );
$this->assertCount( 2, wp_remote_retrieve_header( $res, 'location' ) );
$res = wp_remote_get( $url, array( 'timeout' => 30 ) );
$this->skipTestOnTimeout( $res );
$this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );
}
@ -373,6 +405,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
$url = 'http://api.wordpress.org/core/tests/1.0/redirection.php?cookie-test=1';
$res = wp_remote_get( $url );
$this->skipTestOnTimeout( $res );
$this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );
}
@ -387,6 +421,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
$this->fail( 'This installation of PHP does not support SSL' );
$res = wp_remote_get( 'https://wordpress.org/' );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
}
@ -400,6 +436,8 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase {
$url = str_replace( $path, '/' . $path, $url );
$res = wp_remote_request( $url );
$this->skipTestOnTimeout( $res );
$this->assertNotWPError( $res );
}