Skip to content

Commit

Permalink
Tests: Use an image on WordPress.org CDN in external HTTP tests.
Browse files Browse the repository at this point in the history
Due to some changes on the WP.com side to compress the requested images on the fly, the exact image size in the response could be different between platforms.

This commit aims to make the affected tests more reliable.

Follow-up to [139/tests], [31258], [34568], [47142], [57903], [57904], [57924].

Merges [57931] to the 4.1 branch.

Props peterwilsoncc, jorbin.
See #60865.

git-svn-id: https://develop.svn.wordpress.org/branches/4.1@58016 602fd350-edb4-49c9-b593-d223f7449a82
  • Loading branch information
SergeyBiryukov committed Apr 16, 2024
1 parent 7bd333d commit 0bbc713
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 58 deletions.
132 changes: 77 additions & 55 deletions tests/phpunit/tests/http/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,78 +13,100 @@ public function setUp() {
parent::setUp();
}

function test_head_request() {
// this url give a direct 200 response
$url = 'https://asdftestblog1.files.wordpress.com/2007/09/2007-06-30-dsc_4700-1.jpg';
$response = wp_remote_head( $url );

$this->skipTestOnTimeout( $response );

$headers = wp_remote_retrieve_headers( $response );

/**
* @covers ::wp_remote_head
*/
public function test_head_request() {
// This URL gives a direct 200 response.
$url = 'https://s.w.org/screenshots/3.9/dashboard.png';
$response = wp_remote_head( $url );

$this->skipTestOnTimeout( $response );

$headers = wp_remote_retrieve_headers( $response );

$this->assertInternalType( 'array', $headers, "Reply wasn't array." );
$this->assertEquals( 'image/jpeg', $headers['content-type'] );
$this->assertEquals( '40148', $headers['content-length'] );
$this->assertEquals( '200', wp_remote_retrieve_response_code( $response ) );
}

function test_head_redirect() {
// this url will 301 redirect
$url = 'https://asdftestblog1.wordpress.com/files/2007/09/2007-06-30-dsc_4700-1.jpg';
$response = wp_remote_head( $url );

$this->skipTestOnTimeout( $response );
$this->assertEquals( '301', wp_remote_retrieve_response_code( $response ) );
$this->assertSame( 'image/png', $headers['content-type'] );
$this->assertSame( '153204', $headers['content-length'] );
$this->assertSame( 200, wp_remote_retrieve_response_code( $response ) );
}

function test_head_404() {
$url = 'https://asdftestblog1.files.wordpress.com/2007/09/awefasdfawef.jpg';
/**
* @covers ::wp_remote_head
*/
public function test_head_redirect() {
// This URL will 301 redirect.
$url = 'https://wp.org/screenshots/3.9/dashboard.png';
$response = wp_remote_head( $url );

$this->skipTestOnTimeout( $response );
$this->assertEquals( '301', wp_remote_retrieve_response_code( $response ) );
}

/**
* @covers ::wp_remote_head
*/
public function test_head_404() {
$url = 'https://wordpress.org/screenshots/3.9/awefasdfawef.jpg';
$response = wp_remote_head( $url );

$this->skipTestOnTimeout( $response );
$this->assertInternalType( 'array', $response, "Reply wasn't array." );
$this->assertInternalType( 'array', $response, "Reply wasn't array." );
$this->assertEquals( '404', wp_remote_retrieve_response_code( $response ) );
}

function test_get_request() {
$url = 'https://asdftestblog1.files.wordpress.com/2007/09/2007-06-30-dsc_4700-1.jpg';

$response = wp_remote_get( $url );

$this->skipTestOnTimeout( $response );

$headers = wp_remote_retrieve_headers( $response );

// should return the same headers as a head request
/**
* @covers ::wp_remote_get
* @covers ::wp_remote_retrieve_headers
* @covers ::wp_remote_retrieve_response_code
*/
public function test_get_request() {
$url = 'https://s.w.org/screenshots/3.9/dashboard.png';

$response = wp_remote_get( $url );

$this->skipTestOnTimeout( $response );

$headers = wp_remote_retrieve_headers( $response );

// Should return the same headers as a HEAD request.
$this->assertInternalType( 'array', $headers, "Reply wasn't array." );
$this->assertEquals( 'image/jpeg', $headers['content-type'] );
$this->assertEquals( '40148', $headers['content-length'] );
$this->assertEquals( '200', wp_remote_retrieve_response_code( $response ) );
$this->assertSame( 'image/png', $headers['content-type'] );
$this->assertSame( '153204', $headers['content-length'] );
$this->assertSame( 200, wp_remote_retrieve_response_code( $response ) );
}

function test_get_redirect() {
// this will redirect to asdftestblog1.files.wordpress.com
$url = 'https://asdftestblog1.wordpress.com/files/2007/09/2007-06-30-dsc_4700-1.jpg';

$response = wp_remote_get( $url );

/**
* @covers ::wp_remote_get
* @covers ::wp_remote_retrieve_headers
* @covers ::wp_remote_retrieve_response_code
*/
public function test_get_redirect() {
// This will redirect to wordpress.org.
$url = 'https://wp.org/screenshots/3.9/dashboard.png';

$response = wp_remote_get( $url );

$this->skipTestOnTimeout( $response );

$headers = wp_remote_retrieve_headers( $response );

// should return the same headers as a head request

$headers = wp_remote_retrieve_headers( $response );

// Should return the same headers as a HEAD request.
$this->assertInternalType( 'array', $headers, "Reply wasn't array." );
$this->assertEquals( 'image/jpeg', $headers['content-type'] );
$this->assertEquals( '40148', $headers['content-length'] );
$this->assertEquals( '200', wp_remote_retrieve_response_code( $response ) );
$this->assertSame( 'image/png', $headers['content-type'] );
$this->assertSame( '153204', $headers['content-length'] );
$this->assertSame( 200, wp_remote_retrieve_response_code( $response ) );
}

function test_get_redirect_limit_exceeded() {
// this will redirect to asdftestblog1.files.wordpress.com
$url = 'https://asdftestblog1.wordpress.com/files/2007/09/2007-06-30-dsc_4700-1.jpg';
/**
* @covers ::wp_remote_get
*/
public function test_get_redirect_limit_exceeded() {
// This will redirect to wordpress.org.
$url = 'https://wp.org/screenshots/3.9/dashboard.png';

// pretend we've already redirected 5 times
$response = wp_remote_get( $url, array( 'redirection' => -1 ) );
// pretend we've already redirected 5 times
$response = wp_remote_get( $url, array( 'redirection' => -1 ) );

$this->skipTestOnTimeout( $response );
$this->assertTrue( is_wp_error( $response ) );
Expand Down
6 changes: 3 additions & 3 deletions tests/phpunit/tests/image/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -296,9 +296,9 @@ public function test_wp_crop_image_url() {
$this->markTestSkipped( 'Tests_Image_Functions::test_wp_crop_image_url() requires openssl.' );
}

$file = wp_crop_image( 'https://asdftestblog1.files.wordpress.com/2008/04/canola.jpg',
$file = wp_crop_image( 'https://s.w.org/screenshots/3.9/dashboard.png',
0, 0, 100, 100, 100, 100, false,
DIR_TESTDATA . '/images/' . rand_str() . '.jpg' );
DIR_TESTDATA . '/images/' . rand_str() . '.png' );
$this->assertNotInstanceOf( 'WP_Error', $file );
$this->assertFileExists( $file );
$image = wp_get_image_editor( $file );
Expand All @@ -320,7 +320,7 @@ public function test_wp_crop_image_url_not_exist() {
$this->markTestSkipped( 'Tests_Image_Functions::test_wp_crop_image_url_not_exist() requires openssl.' );
}

$file = wp_crop_image( 'https://asdftestblog1.files.wordpress.com/2008/04/canoladoesnotexist.jpg',
$file = wp_crop_image( 'https://wordpress.org/screenshots/3.9/canoladoesnotexist.jpg',
0, 0, 100, 100, 100, 100 );
$this->assertInstanceOf( 'WP_Error', $file );
}
Expand Down

0 comments on commit 0bbc713

Please sign in to comment.