View source
<?php
namespace Drupal\Tests\user\Kernel\Migrate;
use Drupal\Tests\migrate\Kernel\MigrateTestBase;
use Drupal\user\Entity\User;
class MigrateUserAdminPassTest extends MigrateTestBase {
protected $originalPasswords = [];
protected static $modules = [
'user',
];
protected function setUp() : void {
parent::setUp();
$this->container
->get('module_handler')
->loadInclude('user', 'install');
$this
->installEntitySchema('user');
user_install();
$admin_account = User::load(1);
$admin_account
->setPassword('original');
$admin_account
->save();
$this->originalPasswords[1] = $admin_account
->getPassword();
$user_account = User::create([
'uid' => 2,
'name' => 'original_username',
'mail' => 'original_email@example.com',
'pass' => 'original_password',
]);
$user_account
->save();
$this->originalPasswords[2] = $user_account
->getPassword();
}
public function testAdminPasswordPreserved() {
$user_data_rows = [
[
'id' => '1',
'username' => 'site_admin',
'password' => 'new_password',
'email' => 'site_admin@example.com',
],
[
'id' => '2',
'username' => 'random_user',
'password' => 'random_password',
'email' => 'random_user@example.com',
],
];
$ids = [
'id' => [
'type' => 'integer',
],
];
$definition = [
'id' => 'users',
'migration_tags' => [
'Admin password test',
],
'source' => [
'plugin' => 'embedded_data',
'data_rows' => $user_data_rows,
'ids' => $ids,
],
'process' => [
'uid' => 'id',
'name' => 'username',
'mail' => 'email',
'pass' => 'password',
],
'destination' => [
'plugin' => 'entity:user',
],
];
$migration = \Drupal::service('plugin.manager.migration')
->createStubMigration($definition);
$this
->executeMigration($migration);
$admin_account = User::load(1);
$this
->assertSame('site_admin', $admin_account
->getAccountName());
$this
->assertSame('site_admin@example.com', $admin_account
->getEmail());
$this
->assertSame($this->originalPasswords[1], $admin_account
->getPassword());
$user_account = User::load(2);
$this
->assertSame('random_user', $user_account
->getAccountName());
$this
->assertSame('random_user@example.com', $user_account
->getEmail());
$this
->assertNotSame($this->originalPasswords[2], $user_account
->getPassword());
}
}