function FieldUIUpgradePathTest::testFieldUIPermissions

Tests Field UI permissions upgrade path.

Test that after upgrade users who have the 'administer comments', 'administer content types', 'administer users', and 'administer taxonomy' permission still have access to the manage field and display screens of those entities.

File

drupal/core/modules/system/lib/Drupal/system/Tests/Upgrade/FieldUIUpgradePathTest.php, line 44
Contains Drupal\system\Tests\Upgrade\FieldUIUpgradePathTest.

Class

FieldUIUpgradePathTest
Test upgrade of Field UI.

Namespace

Drupal\system\Tests\Upgrade

Code

function testFieldUIPermissions() {
  $this
    ->assertTrue($this
    ->performUpgrade(), 'The upgrade was completed successfully.');
  $permissions = array(
    'administer comments' => array(
      'administer comment fields',
      'administer comment display',
    ),
    'administer content types' => array(
      'administer node fields',
      'administer node display',
    ),
    'administer users' => array(
      'administer user fields',
      'administer user display',
    ),
    'administer taxonomy' => array(
      'administer taxonomy_term fields',
      'administer taxonomy_term display',
    ),
  );
  $role_permissions = user_role_permissions(array(
    $this->normal_role_id,
    $this->admin_role_id,
  ));
  foreach ($permissions as $old_permission => $new_permissions) {
    $this
      ->assertFalse(isset($role_permissions[$this->normal_role_id][$old_permission]), format_string('%role_name does not have the old %permission permission', array(
      '%role_name' => $this->normal_role_name,
      '%permission' => $old_permission,
    )));
    $this
      ->assertTrue(isset($role_permissions[$this->admin_role_id][$old_permission]), format_string('%role_name still has the old %permission permission', array(
      '%role_name' => $this->admin_role_name,
      '%permission' => $old_permission,
    )));
    foreach ($new_permissions as $new_permission) {
      $this
        ->assertFalse(isset($role_permissions[$this->normal_role_id][$new_permission]), format_string('%role_name does not have the new %permission permission', array(
        '%role_name' => $this->normal_role_name,
        '%permission' => $new_permission,
      )));
      $this
        ->assertTrue(isset($role_permissions[$this->admin_role_id][$new_permission]), format_string('%role_name has the new %permission permission', array(
        '%role_name' => $this->admin_role_name,
        '%permission' => $new_permission,
      )));
    }
  }
}