mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
* Move `ms.php` to `multisite.php` * Create `multisite.php` under directories `option/` and `user/` to better match existing structure. * Create a `multisite/` directory containing `bootstrap.php`, `site.php`, and `network.php` for very multisite specific testing. * Add unit test groups ms-site, ms-user, ms-option, ms-network, and ms-bootstrap. Fixes #29896 git-svn-id: https://develop.svn.wordpress.org/trunk@29916 602fd350-edb4-49c9-b593-d223f7449a82
222 lines
8.9 KiB
PHP
222 lines
8.9 KiB
PHP
<?php
|
|
|
|
if ( is_multisite() ) :
|
|
|
|
/**
|
|
* Tests specific to network and site options in Multisite.
|
|
*
|
|
* @group option
|
|
* @group ms-option
|
|
* @group multisite
|
|
*/
|
|
class Tests_Multisite_Option extends WP_UnitTestCase {
|
|
protected $suppress = false;
|
|
|
|
function setUp() {
|
|
global $wpdb;
|
|
parent::setUp();
|
|
$this->suppress = $wpdb->suppress_errors();
|
|
|
|
$_SERVER['REMOTE_ADDR'] = null;
|
|
}
|
|
|
|
function tearDown() {
|
|
global $wpdb;
|
|
parent::tearDown();
|
|
$wpdb->suppress_errors( $this->suppress );
|
|
}
|
|
|
|
function test_from_same_site() {
|
|
$key = rand_str();
|
|
$key2 = rand_str();
|
|
$value = rand_str();
|
|
$value2 = rand_str();
|
|
|
|
$this->assertFalse( get_blog_option( 1, 'doesnotexist' ) );
|
|
$this->assertFalse( get_option( 'doesnotexist' ) ); // check get_option()
|
|
|
|
$this->assertTrue( add_blog_option( 1, $key, $value ) );
|
|
// Assert all values of $blog_id that means the current or main blog (the same here).
|
|
$this->assertEquals( $value, get_blog_option( 1, $key ) );
|
|
$this->assertEquals( $value, get_blog_option( null, $key ) );
|
|
$this->assertEquals( $value, get_blog_option( '1', $key ) );
|
|
$this->assertEquals( $value, get_option( $key ) ); // check get_option()
|
|
|
|
$this->assertFalse( add_blog_option( 1, $key, $value ) ); // Already exists
|
|
$this->assertFalse( update_blog_option( 1, $key, $value ) ); // Value is the same
|
|
$this->assertTrue( update_blog_option( 1, $key, $value2 ) );
|
|
$this->assertEquals( $value2, get_blog_option( 1, $key ) );
|
|
$this->assertEquals( $value2, get_option( $key ) ); // check get_option()
|
|
$this->assertFalse( add_blog_option( 1, $key, $value ) );
|
|
$this->assertEquals( $value2, get_blog_option( 1, $key ) );
|
|
$this->assertEquals( $value2, get_option( $key ) ); // check get_option()
|
|
|
|
$this->assertTrue( delete_blog_option( 1, $key ) );
|
|
$this->assertFalse( get_blog_option( 1, $key ) );
|
|
$this->assertFalse( get_option( $key ) ); // check get_option()
|
|
$this->assertFalse( delete_blog_option( 1, $key ) );
|
|
$this->assertTrue( update_blog_option( 1, $key2, $value2 ) );
|
|
$this->assertEquals( $value2, get_blog_option( 1, $key2 ) );
|
|
$this->assertEquals( $value2, get_option( $key2 ) ); // check get_option()
|
|
$this->assertTrue( delete_blog_option( 1, $key2 ) );
|
|
$this->assertFalse( get_blog_option( 1, $key2 ) );
|
|
$this->assertFalse( get_option( $key2 ) ); // check get_option()
|
|
}
|
|
|
|
function test_from_same_site_with_null_blog_id() {
|
|
$key = rand_str();
|
|
$key2 = rand_str();
|
|
$value = rand_str();
|
|
$value2 = rand_str();
|
|
|
|
$this->assertFalse( get_blog_option( null, 'doesnotexist' ) );
|
|
$this->assertFalse( get_option( 'doesnotexist' ) ); // check get_option()
|
|
|
|
$this->assertTrue( add_blog_option( null, $key, $value ) );
|
|
// Assert all values of $blog_id that means the current or main blog (the same here).
|
|
$this->assertEquals( $value, get_blog_option( null, $key ) );
|
|
$this->assertEquals( $value, get_blog_option( null, $key ) );
|
|
$this->assertEquals( $value, get_option( $key ) ); // check get_option()
|
|
|
|
$this->assertFalse( add_blog_option( null, $key, $value ) ); // Already exists
|
|
$this->assertFalse( update_blog_option( null, $key, $value ) ); // Value is the same
|
|
$this->assertTrue( update_blog_option( null, $key, $value2 ) );
|
|
$this->assertEquals( $value2, get_blog_option( null, $key ) );
|
|
$this->assertEquals( $value2, get_option( $key ) ); // check get_option()
|
|
$this->assertFalse( add_blog_option( null, $key, $value ) );
|
|
$this->assertEquals( $value2, get_blog_option( null, $key ) );
|
|
$this->assertEquals( $value2, get_option( $key ) ); // check get_option()
|
|
|
|
$this->assertTrue( delete_blog_option( null, $key ) );
|
|
$this->assertFalse( get_blog_option( null, $key ) );
|
|
$this->assertFalse( get_option( $key ) ); // check get_option()
|
|
$this->assertFalse( delete_blog_option( null, $key ) );
|
|
$this->assertTrue( update_blog_option( null, $key2, $value2 ) );
|
|
$this->assertEquals( $value2, get_blog_option( null, $key2 ) );
|
|
$this->assertEquals( $value2, get_option( $key2 ) ); // check get_option()
|
|
$this->assertTrue( delete_blog_option( null, $key2 ) );
|
|
$this->assertFalse( get_blog_option( null, $key2 ) );
|
|
$this->assertFalse( get_option( $key2 ) ); // check get_option()
|
|
}
|
|
|
|
function test_with_another_site() {
|
|
global $current_site, $base;
|
|
|
|
$title = 'Fooblog';
|
|
$domain = 'blogoptiontest';
|
|
|
|
if ( is_subdomain_install() ) {
|
|
$newdomain = $domain . '.' . preg_replace( '|^www\.|', '', $current_site->domain );
|
|
$path = $base;
|
|
} else {
|
|
$newdomain = $current_site->domain;
|
|
$path = $base . $domain . '/';
|
|
}
|
|
|
|
$email = 'foo@foo.foo';
|
|
$password = wp_generate_password( 12, false );
|
|
$user_id = wpmu_create_user( $domain, $password, $email );
|
|
$this->assertInternalType( 'integer', $user_id );
|
|
|
|
$blog_id = wpmu_create_blog( $newdomain, $path, $title, $user_id , array( 'public' => 1 ), $current_site->id );
|
|
$this->assertInternalType( 'integer', $blog_id );
|
|
|
|
$key = rand_str();
|
|
$key2 = rand_str();
|
|
$value = rand_str();
|
|
$value2 = rand_str();
|
|
|
|
$this->assertFalse( get_blog_option( $blog_id, 'doesnotexist' ) );
|
|
//$this->assertFalse( get_option( 'doesnotexist' ) ); // check get_option()
|
|
|
|
$this->assertTrue( add_blog_option( $blog_id, $key, $value ) );
|
|
// Assert all values of $blog_id that means the current or main blog (the same here).
|
|
$this->assertEquals( $value, get_blog_option( $blog_id, $key ) );
|
|
$this->assertEquals( $value, get_blog_option( "$blog_id", $key ) );
|
|
//$this->assertEquals( $value, get_option( $key ) ); // check get_option()
|
|
|
|
$this->assertFalse( add_blog_option( $blog_id, $key, $value ) ); // Already exists
|
|
$this->assertFalse( update_blog_option( $blog_id, $key, $value ) ); // Value is the same
|
|
$this->assertTrue( update_blog_option( $blog_id, $key, $value2 ) );
|
|
$this->assertEquals( $value2, get_blog_option( $blog_id, $key ) );
|
|
//$this->assertEquals( $value2, get_option( $key ) ); // check get_option()
|
|
$this->assertFalse( add_blog_option( $blog_id, $key, $value ) );
|
|
$this->assertEquals( $value2, get_blog_option( $blog_id, $key ) );
|
|
//$this->assertEquals( $value2, get_option( $key ) ); // check get_option()
|
|
|
|
$this->assertTrue( delete_blog_option( $blog_id, $key ) );
|
|
$this->assertFalse( get_blog_option( $blog_id, $key ) );
|
|
//$this->assertFalse( get_option( $key ) ); // check get_option()
|
|
$this->assertFalse( delete_blog_option( $blog_id, $key ) );
|
|
$this->assertTrue( update_blog_option( $blog_id, $key2, $value2 ) );
|
|
$this->assertEquals( $value2, get_blog_option( $blog_id, $key2 ) );
|
|
//$this->assertEquals( $value2, get_option( $key2 ) ); // check get_option()
|
|
$this->assertTrue( delete_blog_option( $blog_id, $key2 ) );
|
|
$this->assertFalse( get_blog_option( $blog_id, $key2 ) );
|
|
//$this->assertFalse( get_option( $key2 ) ); // check get_option()
|
|
}
|
|
|
|
/**
|
|
* @group multisite
|
|
*/
|
|
function test_site_notoptions() {
|
|
global $wpdb;
|
|
$notoptions_key = "{$wpdb->siteid}:notoptions";
|
|
|
|
$_notoptions = wp_cache_get( 'notoptions', 'site-options' );
|
|
$this->assertEmpty( $_notoptions );
|
|
$_notoptions1 = wp_cache_get( $notoptions_key, 'site-options' );
|
|
$this->assertEmpty( $_notoptions1 );
|
|
|
|
get_site_option( 'burrito' );
|
|
|
|
$notoptions = wp_cache_get( 'notoptions', 'site-options' );
|
|
$this->assertEmpty( $notoptions );
|
|
$notoptions1 = wp_cache_get( $notoptions_key, 'site-options' );
|
|
$this->assertNotEmpty( $notoptions1 );
|
|
}
|
|
|
|
function test_users_can_register_signup_filter() {
|
|
|
|
$registration = get_site_option('registration');
|
|
$this->assertFalse( users_can_register_signup_filter() );
|
|
|
|
update_site_option('registration', 'all');
|
|
$this->assertTrue( users_can_register_signup_filter() );
|
|
|
|
update_site_option('registration', 'user');
|
|
$this->assertTrue( users_can_register_signup_filter() );
|
|
|
|
update_site_option('registration', 'none');
|
|
$this->assertFalse( users_can_register_signup_filter() );
|
|
}
|
|
|
|
/**
|
|
* @ticket 21552
|
|
* @ticket 23418
|
|
*/
|
|
function test_sanitize_ms_options() {
|
|
update_site_option( 'illegal_names', array( '', 'Woo', '' ) );
|
|
update_site_option( 'limited_email_domains', array( 'woo', '', 'boo.com', 'foo.net.biz..' ) );
|
|
update_site_option( 'banned_email_domains', array( 'woo', '', 'boo.com', 'foo.net.biz..' ) );
|
|
|
|
$this->assertEquals( array( 'Woo' ), get_site_option( 'illegal_names' ) );
|
|
$this->assertEquals( array( 'woo', 'boo.com' ), get_site_option( 'limited_email_domains' ) );
|
|
$this->assertEquals( array( 'woo', 'boo.com' ), get_site_option( 'banned_email_domains' ) );
|
|
|
|
update_site_option( 'illegal_names', 'foo bar' );
|
|
update_site_option( 'limited_email_domains', "foo\nbar" );
|
|
update_site_option( 'banned_email_domains', "foo\nbar" );
|
|
|
|
$this->assertEquals( array( 'foo', 'bar' ), get_site_option( 'illegal_names' ) );
|
|
$this->assertEquals( array( 'foo', 'bar' ), get_site_option( 'limited_email_domains' ) );
|
|
$this->assertEquals( array( 'foo', 'bar' ), get_site_option( 'banned_email_domains' ) );
|
|
|
|
foreach ( array( 'illegal_names', 'limited_email_domains', 'banned_email_domains' ) as $option ) {
|
|
update_site_option( $option, array() );
|
|
$this->assertSame( '', get_site_option( $option ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
endif; |