mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-06-28 22:30:04 +00:00
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:
@@ -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();
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user