function MigrateUserRoleTest::testUserRole

Same name in this branch
  1. 11.x core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserRoleTest.php \Drupal\Tests\user\Kernel\Migrate\d6\MigrateUserRoleTest::testUserRole()
Same name in other branches
  1. 9 core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserRoleTest.php \Drupal\Tests\user\Kernel\Migrate\d6\MigrateUserRoleTest::testUserRole()
  2. 9 core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php \Drupal\Tests\user\Kernel\Migrate\d7\MigrateUserRoleTest::testUserRole()
  3. 8.9.x core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserRoleTest.php \Drupal\Tests\user\Kernel\Migrate\d6\MigrateUserRoleTest::testUserRole()
  4. 8.9.x core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php \Drupal\Tests\user\Kernel\Migrate\d7\MigrateUserRoleTest::testUserRole()
  5. 10 core/modules/user/tests/src/Kernel/Migrate/d6/MigrateUserRoleTest.php \Drupal\Tests\user\Kernel\Migrate\d6\MigrateUserRoleTest::testUserRole()
  6. 10 core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php \Drupal\Tests\user\Kernel\Migrate\d7\MigrateUserRoleTest::testUserRole()

Tests user role migration.

File

core/modules/user/tests/src/Kernel/Migrate/d7/MigrateUserRoleTest.php, line 50

Class

MigrateUserRoleTest
Upgrade user roles to user.role.*.yml.

Namespace

Drupal\Tests\user\Kernel\Migrate\d7

Code

public function testUserRole() : void {
    $anonymous_permissions = [
        'access content',
    ];
    $this->assertEntity('anonymous', 'anonymous user', $anonymous_permissions);
    $this->assertEntity('authenticated', 'authenticated user', $anonymous_permissions);
    $admin_permissions = [
        'access administration pages',
        'access content',
        'access site in maintenance mode',
        'access site reports',
        'access user profiles',
        'administer actions',
        'administer menu',
        'administer modules',
        'administer permissions',
        'administer site configuration',
        'administer software updates',
        'administer themes',
        'administer users',
        'cancel account',
        'change own username',
        'select account cancellation method',
        'view the administration theme',
    ];
    $this->assertEntity('administrator', 'administrator', $admin_permissions);
    // Test there are no duplicated roles.
    $roles = [
        'anonymous1',
        'authenticated1',
        'administrator1',
    ];
    $this->assertEmpty(Role::loadMultiple($roles));
    // Remove the map row for the administrator role and rerun the migration.
    // This will re-import the administrator role again.
    $id_map = $this->getMigration('d7_user_role')
        ->getIdMap();
    $id_map->delete([
        'rid' => 3,
    ]);
    $this->sourceDatabase
        ->insert('role')
        ->fields([
        'rid' => 4,
        'name' => 'test role',
        'weight' => 10,
    ])
        ->execute();
    $this->sourceDatabase
        ->insert('role_permission')
        ->fields([
        'rid' => 4,
        'permission' => 'access content',
        'module' => 'node',
    ])
        ->execute();
    $this->executeMigration('d7_user_role');
    // Test there are no duplicated roles.
    $roles = [
        'anonymous1',
        'authenticated1',
        'administrator1',
    ];
    $this->assertEmpty(Role::loadMultiple($roles));
    // Test that the existing roles have not changed.
    $this->assertEntity('administrator', 'administrator', $admin_permissions);
    $this->assertEntity('anonymous', 'anonymous user', $anonymous_permissions);
    $this->assertEntity('authenticated', 'authenticated user', $anonymous_permissions);
    // Test the migration of the new role, test role.
    $this->assertEntity('test_role', 'test role', $anonymous_permissions);
    // Tests the migration log contains an error message.
    // User role Authenticated.
    $permissions[1] = [
        'access comments',
        'use text format filtered_html',
    ];
    // User role test_role.
    $permissions[2] = [
        'access comments',
        'post comments',
        'skip comment approval',
        'use text format custom_text_format',
        'use text format filtered_html',
    ];
    // User role administrator.
    $permissions[3] = [
        'access all views',
        'access comments',
        'access content overview',
        'access contextual links',
        'access news feeds',
        'access printer-friendly version',
        'access site-wide contact form',
        'access statistics',
        'access toolbar',
        'access user contact forms',
        'add content to books',
        'administer blocks',
        'administer book outlines',
        'administer comments',
        'administer contact forms',
        'administer content types',
        'administer fields',
        'administer filters',
        'administer forums',
        'administer image styles',
        'administer languages',
        'administer news feeds',
        'administer nodes',
        'administer search',
        'administer shortcuts',
        'administer statistics',
        'administer taxonomy',
        'administer unit tests',
        'administer url aliases',
        'administer views',
        'block IP addresses',
        'bypass node access',
        'create article content',
        'create new books',
        'create page content',
        'create url aliases',
        'customize shortcut links',
        'delete any article content',
        'delete any page content',
        'delete own article content',
        'delete own page content',
        'delete revisions',
        'delete terms in 1',
        'edit any article content',
        'edit any page content',
        'edit own article content',
        'edit own comments',
        'edit own page content',
        'edit terms in 1',
        'post comments',
        'revert revisions',
        'search content',
        'skip comment approval',
        'switch shortcut sets',
        'translate admin strings',
        'translate blocks',
        'translate content',
        'translate interface',
        'translate user-defined strings',
        'use PHP for settings',
        'use advanced search',
        'use text format custom_text_format',
        'use text format filtered_html',
        'use text format full_html',
        'view own unpublished content',
        'view post access counter',
        'view revisions',
    ];
    foreach ($id_map->getMessages() as $message) {
        $expected_permissions = implode("', '", $permissions[$message->src_rid]);
        $expected_message = "Permission(s) '" . $expected_permissions . "' not found.";
        $this->assertSame($expected_message, $message->message);
        $this->assertSame(MigrationInterface::MESSAGE_WARNING, (int) $message->level);
    }
    $this->assertSame(3, $id_map->messageCount());
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.