Add initial unit tests for multisite's bootstrap.

props jeremyfelt.
fixes #27884.


git-svn-id: https://develop.svn.wordpress.org/trunk@28910 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Nacin
2014-06-29 22:50:44 +00:00
parent 75ff222c93
commit 9e24832a0e
4 changed files with 114 additions and 10 deletions

View File

@@ -10,12 +10,9 @@
* @since 3.0.0
*/
/** Include Multisite initialization functions */
require( ABSPATH . WPINC . '/ms-load.php' );
require( ABSPATH . WPINC . '/ms-default-constants.php' );
if ( defined( 'SUNRISE' ) )
if ( defined( 'SUNRISE' ) ) {
include_once( WP_CONTENT_DIR . '/sunrise.php' );
}
/** Check for and define SUBDOMAIN_INSTALL and the deprecated VHOST constant. */
ms_subdomain_constants();

View File

@@ -91,6 +91,9 @@ require( ABSPATH . WPINC . '/default-filters.php' );
// Initialize multisite if enabled.
if ( is_multisite() ) {
require( ABSPATH . WPINC . '/ms-blogs.php' );
/** Include Multisite initialization functions */
require( ABSPATH . WPINC . '/ms-load.php' );
require( ABSPATH . WPINC . '/ms-default-constants.php' );
require( ABSPATH . WPINC . '/ms-settings.php' );
} elseif ( ! defined( 'MULTISITE' ) ) {
define( 'MULTISITE', false );

View File

@@ -55,10 +55,6 @@ if ( $multisite ) {
echo "Running as multisite..." . PHP_EOL;
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
define( 'DOMAIN_CURRENT_SITE', WP_TESTS_DOMAIN );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
$GLOBALS['base'] = '/';
} else {
echo "Running as single site... To run multisite, use -c tests/phpunit/multisite.xml" . PHP_EOL;

View File

@@ -455,7 +455,7 @@ class Tests_MS extends WP_UnitTestCase {
$blog_id = $this->factory->blog->create( array( 'user_id' => $user_id, 'path' => '/test_blogname', 'title' => 'Test Title' ) );
$this->assertInternalType( 'int', $blog_id );
$this->assertEquals( 'http://' . DOMAIN_CURRENT_SITE . PATH_CURRENT_SITE . 'test_blogname/', get_blogaddress_by_name('test_blogname') );
$this->assertEquals( 'http://' . $current_site->domain . $current_site->path . 'test_blogname/', get_blogaddress_by_name('test_blogname') );
$this->assertEquals( $blog_id, get_id_from_blogname('test_blogname') );
}
@@ -1410,6 +1410,114 @@ class Tests_MS extends WP_UnitTestCase {
$details = get_blog_details( get_current_blog_id() );
$this->assertEquals( 'bar', $details->blogname );
}
/**
* @ticket 27884
*
* @expectedDeprecated define()
*/
function test_multisite_bootstrap() {
global $current_site, $current_blog;
$network_ids = array(
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/' ),
'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/' ),
);
foreach ( $network_ids as &$id ) {
$id = $this->factory->network->create( $id );
}
unset( $id );
$ids = array(
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/', 'site_id' => $network_ids['wordpress.org/'] ),
'wordpress.org/foo/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/', 'site_id' => $network_ids['wordpress.org/'] ),
'wordpress.org/foo/bar/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/bar/', 'site_id' => $network_ids['wordpress.org/'] ),
'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/', 'site_id' => $network_ids['make.wordpress.org/'] ),
'make.wordpress.org/foo/' => array( 'domain' => 'make.wordpress.org', 'path' => '/foo/', 'site_id' => $network_ids['make.wordpress.org/'] ),
);
foreach ( $ids as &$id ) {
$id = $this->factory->blog->create( $id );
}
unset( $id );
$this->_setup_host_request( 'wordpress.org', '/' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/2014/04/23/hello-world/' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/sample-page/' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/?p=1' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/wp-admin/' );
$this->assertEquals( $ids['wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/FOO/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/2014/04/23/hello-world/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/sample-page/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/?p=1' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'wordpress.org', '/foo/wp-admin/' );
$this->assertEquals( $ids['wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
// @todo not currently passing.
//$this->_setup_host_request( 'wordpress.org', '/foo/bar/' );
//$this->assertEquals( $ids['wordpress.org/foo/bar/'], $current_blog->blog_id );
//$this->assertEquals( $network_ids['wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'make.wordpress.org', '/' );
$this->assertEquals( $ids['make.wordpress.org/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['make.wordpress.org/'], $current_blog->site_id );
$this->_setup_host_request( 'make.wordpress.org', '/foo/' );
$this->assertEquals( $ids['make.wordpress.org/foo/'], $current_blog->blog_id );
$this->assertEquals( $network_ids['make.wordpress.org/'], $current_blog->site_id );
}
/**
* Reset various globals required for a 'clean' multisite boot.
*
* The $wpdb and $table_prefix globals are required for ms-settings.php to
* load properly.
*
* @param string $domain HTTP_HOST of the bootstrap request.
* @param string $path REQUEST_URI of the boot strap request.
*/
function _setup_host_request( $domain, $path ) {
global $current_site, $current_blog, $wpdb, $table_prefix;
$current_site = $current_blog = null;
$_SERVER['HTTP_HOST'] = $domain;
$_SERVER['REQUEST_URI'] = $path;
include ABSPATH . '/wp-includes/ms-settings.php';
}
}
endif;