function MigrateUserRoleTest::testUserRole
Tests user role migration.
@dataProvider providerTestUserRole
Parameters
string[] $modules: A list of modules to install.
string[] $migrations: A list of migrations to execute.
string[][] $role_data: An array of role data keyed by the destination role id. The role data contains the source role id, an array of valid permissions and an array of invalid permissions.
File
- 
              core/modules/ user/ tests/ src/ Kernel/ Migrate/ d6/ MigrateUserRoleTest.php, line 286 
Class
- MigrateUserRoleTest
- Upgrade user roles to user.role.*.yml.
Namespace
Drupal\Tests\user\Kernel\Migrate\d6Code
public function testUserRole(array $modules, array $migrations, array $role_data) : void {
  if ($modules) {
    // Install modules that have migrations that may provide permissions.
    \Drupal::service('module_installer')->install($modules);
    $this->installEntitySchema('block_content');
    $this->installConfig([
      'block_content',
      'comment',
    ]);
    $this->migrateContentTypes();
  }
  $this->executeMigrations($migrations);
  $id_map = $this->getMigration('d6_user_role')
    ->getIdMap();
  // After all the migrations are run, there are changes to the permissions.
  $this->assertRoles($role_data, $id_map);
  $roles = [
    'anonymous1',
    'authenticated1',
    'administrator1',
    'migrate_test_role_11',
    'migrate_test_role_21',
    'migrate_test_role_3_that_is_longer_than_thirty_two_characters1',
  ];
  $this->assertEmpty(Role::loadMultiple($roles));
  $this->assertMessages($role_data, $id_map);
  $this->assertSame(4, $id_map->messageCount());
  // Remove the map row for the migrate_test_role_1 role and rerun the
  // migration. This will re-import the migrate_test_role_1 role migration
  // again.
  $this->sourceDatabase
    ->insert('role')
    ->fields([
    'rid' => 6,
    'name' => 'migrate test role 4',
  ])
    ->execute();
  $this->sourceDatabase
    ->insert('permission')
    ->fields([
    'pid' => 7,
    'rid' => 6,
    'perm' => 'access content',
    'tid' => 0,
  ])
    ->execute();
  $id_map->delete([
    'rid' => 3,
  ]);
  $this->executeMigration('d6_user_role');
  // Test there are no duplicated roles.
  $this->assertNoDuplicateRoles();
  // Test that the existing roles have not changed.
  $this->assertRoles($role_data, $id_map);
  // Test the migration of the new role, migrate_test_role_4.
  $permissions = [
    'access content',
  ];
  $this->assertRole('migrate_test_role_4', $permissions, 6, $id_map);
}Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
