diff --git a/tests/phpunit/tests/multisite/site.php b/tests/phpunit/tests/multisite/site.php index c15f502cd4..0c48d1d334 100644 --- a/tests/phpunit/tests/multisite/site.php +++ b/tests/phpunit/tests/multisite/site.php @@ -905,117 +905,6 @@ class Tests_Multisite_Site extends WP_UnitTestCase { $this->assertEquals( '', $info['error'] ); } - /** - * 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 ); - // will be set to '' - $this->assertEmpty( get_site_option( 'upload_space_check_disabled' ) ); - - $this->assertEquals( - upload_is_user_over_quota( false ), - self::$space_used > self::$space_allowed - ); - } - - /** - * 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' ) ); - $quota = upload_is_user_over_quota( false ); - remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) ); - - $this->assertFalse( $quota ); - } - - /** - * 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->assertEquals( - upload_is_user_over_quota( false ), - self::$space_used > self::$space_allowed - ); - } - - /** - * 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' ) ); - $quota = upload_is_user_over_quota( false ); - remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) ); - - $this->assertTrue( $quota ); - } - - 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->assertEquals( - upload_is_user_over_quota( false ), - self::$space_used > 200 - ); - } - - 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' ) ); - $quota = upload_is_user_over_quota( false ); - remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) ); - - $this->assertTrue( $quota ); - } - - /** - * If the space used is exactly the same as the available quota, an over - * quota response is not expected. - * - * @group woo - */ - 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' ) ); - $quota = upload_is_user_over_quota( false ); - $used = get_space_used(); - remove_filter( 'pre_get_space_used', array( $this, '_filter_space_used' ) ); - - $this->assertEquals( - $quota, - $used > 300 - ); - } - - 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 ) ); - } - /** * Test the primary purpose of get_blog_post(), to retrieve a post from * another site on the network. diff --git a/tests/phpunit/tests/multisite/uploadIsUserOverQuota.php b/tests/phpunit/tests/multisite/uploadIsUserOverQuota.php new file mode 100644 index 0000000000..22c3d2553e --- /dev/null +++ b/tests/phpunit/tests/multisite/uploadIsUserOverQuota.php @@ -0,0 +1,139 @@ +suppress = $wpdb->suppress_errors(); + + update_site_option( 'upload_space_check_disabled', false ); + } + + public function tearDown() { + global $wpdb; + $wpdb->suppress_errors( $this->suppress ); + parent::tearDown(); + } + + /** + * In this scenario, 10 is set as the spaced allowed when 0 is returned + * by `get_space_allowed()` inside `upload_is_user_over_quota()`. + * + * This is likely not expected behavior. + */ + public function test_upload_is_user_over_quota_allowed_0_used_5() { + add_filter( 'get_space_allowed', '__return_zero' ); + add_filter( 'pre_get_space_used', array( $this, '_filter_space_5' ) ); + $result = upload_is_user_over_quota( false ); + remove_filter( 'get_space_allowed', '__return_zero' ); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_5' ) ); + + $this->assertFalse( $result ); + } + + public function test_upload_is_user_over_quota_allowed_0_used_0() { + add_filter( 'get_space_allowed', '__return_zero' ); + add_filter( 'pre_get_space_used', '__return_zero' ); + $result = upload_is_user_over_quota( false ); + remove_filter( 'get_space_allowed', '__return_zero' ); + remove_filter( 'pre_get_space_used', '__return_zero' ); + + $this->assertFalse( $result ); + } + + public function test_upload_is_user_over_quota_allowed_0_used_100() { + add_filter( 'get_space_allowed', '__return_zero' ); + add_filter( 'pre_get_space_used', array( $this, '_filter_space_100' ) ); + $result = upload_is_user_over_quota( false ); + remove_filter( 'get_space_allowed', '__return_zero' ); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_100' ) ); + + $this->assertTrue( $result ); + } + + public function test_upload_is_user_over_quota_allowed_100_used_0() { + add_filter( 'get_space_allowed', array( $this, '_filter_space_100' ) ); + add_filter( 'pre_get_space_used', '__return_zero' ); + $result = upload_is_user_over_quota( false ); + remove_filter( 'get_space_allowed', array( $this, '_filter_space_100' ) ); + remove_filter( 'pre_get_space_used', '__return_zero' ); + + $this->assertFalse( $result ); + } + + public function test_upload_is_user_over_quota_allowed_100_used_100() { + add_filter( 'get_space_allowed', array( $this, '_filter_space_100' ) ); + add_filter( 'pre_get_space_used', array( $this, '_filter_space_100' ) ); + $result = upload_is_user_over_quota( false ); + remove_filter( 'get_space_allowed', array( $this, '_filter_space_100' ) ); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_100' ) ); + + $this->assertFalse( $result ); + } + + public function test_upload_is_user_over_quota_allowed_100_used_200() { + add_filter( 'get_space_allowed', array( $this, '_filter_space_100' ) ); + add_filter( 'pre_get_space_used', array( $this, '_filter_space_200' ) ); + $result = upload_is_user_over_quota( false ); + remove_filter( 'get_space_allowed', array( $this, '_filter_space_100' ) ); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_200' ) ); + + $this->assertTrue( $result ); + } + + public function test_upload_is_user_over_quota_allowed_negative_used_100() { + add_filter( 'get_space_allowed', array( $this, '_filter_space_negative' ) ); + add_filter( 'pre_get_space_used', array( $this, '_filter_space_100' ) ); + $result = upload_is_user_over_quota( false ); + remove_filter( 'get_space_allowed', array( $this, '_filter_space_negative' ) ); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_100' ) ); + + $this->assertTrue( $result ); + } + + /** + * When the upload space check is disabled, using more than the available + * quota is allowed. + */ + public function test_upload_is_user_over_check_disabled() { + update_site_option( 'upload_space_check_disabled', true ); + + add_filter( 'get_space_allowed', array( $this, '_filter_space_100' ) ); + add_filter( 'pre_get_space_used', array( $this, '_filter_space_200' ) ); + $result = upload_is_user_over_quota( false ); + remove_filter( 'get_space_allowed', array( $this, '_filter_space_100' ) ); + remove_filter( 'pre_get_space_used', array( $this, '_filter_space_200' ) ); + + $this->assertFalse( $result ); + } + + public function _filter_space_5() { + return 5; + } + + public function _filter_space_100() { + return 100; + } + + public function _filter_space_200() { + return 200; + } + + public function _filter_space_negative() { + return -1; + } +} + +endif; \ No newline at end of file