You are here

public function MigrateUserAdminPassTest::testAdminPasswordPreserved in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/user/tests/src/Kernel/Migrate/MigrateUserAdminPassTest.php \Drupal\Tests\user\Kernel\Migrate\MigrateUserAdminPassTest::testAdminPasswordPreserved()

Tests preserving the admin user's password.

File

core/modules/user/tests/src/Kernel/Migrate/MigrateUserAdminPassTest.php, line 59

Class

MigrateUserAdminPassTest
Tests preservation of root account password.

Namespace

Drupal\Tests\user\Kernel\Migrate

Code

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);

  // Verify that admin username and email were changed, but password was not.

  /** @var \Drupal\user\Entity\User $admin_account */
  $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());

  // Verify that everything changed for the regular user.

  /** @var \Drupal\user\Entity\User $user_account */
  $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());
}