71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /*
 | |
|  * @file
 | |
|  *   Programmatically upgrade a site from Drupal 6 to Druapl 7.
 | |
|  *
 | |
|  *   We also implicitly test:
 | |
|  *     - pm-download
 | |
|  *     - site-install for D6
 | |
|  *     - user-create
 | |
|  *     - sql-sync
 | |
|  *     - updatedb and batch.inc
 | |
|  */
 | |
| 
 | |
| class siteUpgradeCase extends Drush_TestCase {
 | |
|   function testUpgrade() {
 | |
|     $env = 'testupgrade';
 | |
|     $this->setUpDrupal($env, TRUE, '6.x');
 | |
|     $root = $this->sites[$env]['root'];
 | |
| 
 | |
|     // Create the alias for D7 site.
 | |
|     $aliases['target'] = array(
 | |
|       'root' => UNISH_SANDBOX . '/target',
 | |
|       'uri' => $env,
 | |
|       'db-url' => UNISH_DB_URL . '/unish_target',
 | |
|     );
 | |
|     $contents = $this->file_aliases($aliases);
 | |
|     $alias_path = "$root/aliases.drushrc.php";
 | |
|     file_put_contents($alias_path, $contents);
 | |
| 
 | |
|     // Create a user in D6.
 | |
|     $name = "example";
 | |
|     $options = array(
 | |
|       'mail' => "example@example.com",
 | |
|       'password' => 'password',
 | |
|       'root' => $root,
 | |
|       'uri' => $env,
 | |
|     );
 | |
|     $this->drush('user-create', array($name), $options);
 | |
| 
 | |
|     // Perform the upgrade.
 | |
|     $options = array(
 | |
|       'yes' => NULL,
 | |
|       'root' => $root,
 | |
|       'uri' => $env,
 | |
|     );
 | |
|     $this->drush('site-upgrade', array('@target'), $options);
 | |
| 
 | |
|     // Assert that the D7 site bootstraps.
 | |
|     // We don't specify @target alias since that file is in the root of the *source* site.
 | |
|     $options = array(
 | |
|       'pipe' => NULL,
 | |
|       'root' => $aliases['target']['root'],
 | |
|       'uri' => $aliases['target']['uri'],
 | |
|     );
 | |
|     $return = $this->drush('core-status', array('drupal_bootstrap'), $options);
 | |
|     $this->assertEquals('Successful', $this->getOutput(), 'The target site bootstraps successfully');
 | |
| 
 | |
|     // Assures that a updatedb and batch updates work properly. See user_update_7001().
 | |
|     $options = array(
 | |
|       'root' => $aliases['target']['root'],
 | |
|       'uri' => $aliases['target']['uri'],
 | |
|     );
 | |
|     $eval = "require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');";
 | |
|     $eval .= "\$account = user_load_by_name('example');";
 | |
|     $eval .= "print (string) user_check_password('password', \$account)";
 | |
|     $this->drush('php-eval', array($eval), $options);
 | |
|     $output = $this->getOutput();
 | |
|     $this->assertSame('1', $output, 'User was updated to new password format.');
 | |
|   }
 | |
| } | 
