Split and improve multisite tests for upload quota
Break a single test with many assertions into many tests with single assertions. In the process, provide separate and comprehensive tests for `upload_is_user_over_quota()`, `is_upload_space_available()`, and `get_space_allowed()`. Also removes a check for `BLOGSUPLOADDIR`, a constant that never existed. New tests will need to be introduced to handle the ms-files group. See #30080 git-svn-id: https://develop.svn.wordpress.org/trunk@30715 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
104b31ae54
commit
a23c468ac8
@ -983,50 +983,186 @@ class Tests_Multisite_Site extends WP_UnitTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ticket 18119
|
* Tests to handle the possibilities provided for in `get_space_allowed()`,
|
||||||
|
* which is used when checking for upload quota limits. Originally part of
|
||||||
|
* ticket #18119.
|
||||||
*/
|
*/
|
||||||
function test_upload_is_user_over_quota() {
|
function test_get_space_allowed_default() {
|
||||||
$default_space_allowed = 100;
|
$this->assertEquals( 100, get_space_allowed() );
|
||||||
$echo = false;
|
}
|
||||||
|
|
||||||
$this->assertFalse( upload_is_user_over_quota( $echo ) );
|
/**
|
||||||
$this->assertTrue( is_upload_space_available() );
|
* When an individual site's option is defined, it is used over the option
|
||||||
|
* defined at the network level.
|
||||||
update_site_option('upload_space_check_disabled', true);
|
|
||||||
$this->assertFalse( upload_is_user_over_quota( $echo ) );
|
|
||||||
$this->assertTrue( is_upload_space_available() );
|
|
||||||
|
|
||||||
update_site_option( 'blog_upload_space', 0 );
|
|
||||||
$this->assertFalse( upload_is_user_over_quota( $echo ) );
|
|
||||||
$this->assertEquals( $default_space_allowed, get_space_allowed() );
|
|
||||||
$this->assertTrue( is_upload_space_available() );
|
|
||||||
|
|
||||||
update_site_option('upload_space_check_disabled', false);
|
|
||||||
$this->assertFalse( upload_is_user_over_quota( $echo ) );
|
|
||||||
$this->assertTrue( is_upload_space_available() );
|
|
||||||
|
|
||||||
if ( defined( 'BLOGSUPLOADDIR' ) && ! file_exists( BLOGSUPLOADDIR ) )
|
|
||||||
$this->markTestSkipped( 'This test is broken when blogs.dir does not exist. ');
|
|
||||||
|
|
||||||
/*
|
|
||||||
This is broken when blogs.dir does not exist, as get_upload_space_available()
|
|
||||||
simply returns the value of blog_upload_space (converted to bytes), which would
|
|
||||||
be negative but still not false. When blogs.dir does exist, < 0 is returned as 0.
|
|
||||||
*/
|
*/
|
||||||
|
function test_get_space_allowed_from_blog_option() {
|
||||||
|
update_option( 'blog_upload_space', 123 );
|
||||||
|
update_site_option( 'blog_upload_space', 200 );
|
||||||
|
$this->assertEquals( 123, get_space_allowed() );
|
||||||
|
}
|
||||||
|
|
||||||
update_site_option( 'blog_upload_space', -1 );
|
/**
|
||||||
$this->assertTrue( upload_is_user_over_quota( $echo ) );
|
* If an individual site's option is not available, the default network
|
||||||
|
* level option is used as a fallback.
|
||||||
|
*/
|
||||||
|
function test_get_space_allowed_from_network_option() {
|
||||||
|
update_option( 'blog_upload_space', false );
|
||||||
|
update_site_option( 'blog_upload_space', 200 );
|
||||||
|
$this->assertEquals( 200, get_space_allowed() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If neither the site or network options are available, 100 is used as
|
||||||
|
* a hard coded fallback.
|
||||||
|
*/
|
||||||
|
function test_get_space_allowed_no_option_fallback() {
|
||||||
|
update_option( 'blog_upload_space', false );
|
||||||
|
update_site_option( 'blog_upload_space', false );
|
||||||
|
$this->assertEquals( 100, get_space_allowed() );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_get_space_allowed_negative_blog_option() {
|
||||||
|
update_option( 'blog_upload_space', -1 );
|
||||||
|
update_site_option( 'blog_upload_space', 200 );
|
||||||
$this->assertEquals( -1, get_space_allowed() );
|
$this->assertEquals( -1, get_space_allowed() );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_get_space_allowed_negative_site_option() {
|
||||||
|
update_option( 'blog_upload_space', false );
|
||||||
|
update_site_option( 'blog_upload_space', -1 );
|
||||||
|
$this->assertEquals( -1, get_space_allowed() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a hardcoded amount for space used when testing upload quota,
|
||||||
|
* allowed space, and available space.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
function _filter_space_used() {
|
||||||
|
return 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_upload_is_user_over_quota_default() {
|
||||||
|
$this->assertFalse( upload_is_user_over_quota( false ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_upload_is_user_over_quota_check_enabled() {
|
||||||
|
update_site_option('upload_space_check_disabled', false);
|
||||||
|
$this->assertFalse( upload_is_user_over_quota( false ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When the upload space check is disabled, using more than the available
|
||||||
|
* quota is allowed.
|
||||||
|
*/
|
||||||
|
function test_upload_is_user_over_check_disabled() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', true );
|
||||||
|
update_site_option( 'blog_upload_space', 100 );
|
||||||
|
add_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
|
||||||
|
$this->assertFalse( upload_is_user_over_quota( false ) );
|
||||||
|
|
||||||
|
remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If 0 is set for `blog_upload_space`, a fallback of 100 is used.
|
||||||
|
*/
|
||||||
|
function test_upload_is_user_over_quota_upload_space_0() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', 0 );
|
||||||
|
$this->assertFalse( upload_is_user_over_quota( false ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the space space used as 300 to trigger a true upload quota
|
||||||
|
* without requiring actual files.
|
||||||
|
*/
|
||||||
|
function test_upload_is_user_over_quota_upload_space_0_filter_space_used() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', 0 );
|
||||||
|
add_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
|
||||||
|
$this->assertTrue( upload_is_user_over_quota( false ) );
|
||||||
|
|
||||||
|
remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_upload_is_user_over_quota_upload_space_200() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', 200 );
|
||||||
|
$this->assertFalse( upload_is_user_over_quota( false ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_upload_is_user_over_quota_upload_space_200_filter_space_used() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', 200 );
|
||||||
|
add_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
|
||||||
|
$this->assertTrue( upload_is_user_over_quota( false ) );
|
||||||
|
|
||||||
|
remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the space used is exactly the same as the available quota, an over
|
||||||
|
* quota response is not expected.
|
||||||
|
*/
|
||||||
|
function test_upload_is_user_over_quota_upload_space_exact() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', 300 );
|
||||||
|
add_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
|
||||||
|
$this->assertFalse( upload_is_user_over_quota( false ) );
|
||||||
|
|
||||||
|
remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_upload_is_user_over_quota_upload_space_negative() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', -1 );
|
||||||
|
$this->assertTrue( upload_is_user_over_quota( false ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_is_upload_space_available_default() {
|
||||||
|
$this->assertTrue( is_upload_space_available() );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_is_upload_space_available_check_disabled() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', true );
|
||||||
|
$this->assertTrue( is_upload_space_available() );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_is_upload_space_available_space_used_is_less() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', 350 );
|
||||||
|
add_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
|
||||||
|
$this->assertTrue( is_upload_space_available() );
|
||||||
|
|
||||||
|
remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_is_upload_space_available_space_used_is_more() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', 250 );
|
||||||
|
add_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
|
|
||||||
$this->assertFalse( is_upload_space_available() );
|
$this->assertFalse( is_upload_space_available() );
|
||||||
|
|
||||||
update_option( 'blog_upload_space', 0 );
|
remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) );
|
||||||
$this->assertFalse( upload_is_user_over_quota( $echo ) );
|
}
|
||||||
$this->assertEquals( $default_space_allowed, get_space_allowed() );
|
|
||||||
$this->assertTrue( is_upload_space_available() );
|
|
||||||
|
|
||||||
update_option( 'blog_upload_space', -1 );
|
function test_is_upload_space_available_upload_space_0() {
|
||||||
$this->assertTrue( upload_is_user_over_quota( $echo ) );
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
$this->assertEquals( -1, get_space_allowed() );
|
update_site_option( 'blog_upload_space', 0 );
|
||||||
|
$this->assertTrue( is_upload_space_available() );
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_is_upload_space_available_upload_space_negative() {
|
||||||
|
update_site_option( 'upload_space_check_disabled', false );
|
||||||
|
update_site_option( 'blog_upload_space', -1 );
|
||||||
$this->assertFalse( is_upload_space_available() );
|
$this->assertFalse( is_upload_space_available() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user