Issue #3331229 by pminf, chadhester, zshrestha, hardikpandya, _pratik_, rogerpfaff, ultimike, xjm, mandclu, alexb7217: Use chaining for User::addRole() and ::removeRole()

merge-requests/7049/merge
xjm 2024-05-08 16:21:47 -07:00
parent c0beeeea5f
commit 8d512c2a2a
No known key found for this signature in database
GPG Key ID: 206B0B8743BDF4C2
25 changed files with 50 additions and 74 deletions

View File

@ -162,8 +162,7 @@ class BlockContentAccessHandlerTest extends KernelTestBase {
} }
$this->role->save(); $this->role->save();
} }
$user->addRole($this->role->id()); $user->addRole($this->role->id())->save();
$user->save();
if ($parent_access !== NULL) { if ($parent_access !== NULL) {
$parent_entity = $this->prophesize(AccessibleInterface::class); $parent_entity = $this->prophesize(AccessibleInterface::class);

View File

@ -94,8 +94,9 @@ class MediaPreviewTest extends MediaTestBase {
->save(); ->save();
// Allow the test user to view the admin theme. // Allow the test user to view the admin theme.
$this->adminUser->addRole($this->drupalCreateRole(['view the administration theme'])); $this->adminUser
$this->adminUser->save(); ->addRole($this->drupalCreateRole(['view the administration theme']))
->save();
// Configure a different default and admin theme, like on most Drupal sites. // Configure a different default and admin theme, like on most Drupal sites.
$this->config('system.theme') $this->config('system.theme')

View File

@ -84,8 +84,7 @@ abstract class CommentViewsKernelTestBase extends ViewsKernelTestBase {
$anonymous_role->save(); $anonymous_role->save();
$this->adminUser = $this->userStorage->create(['name' => $this->randomMachineName()]); $this->adminUser = $this->userStorage->create(['name' => $this->randomMachineName()]);
$this->adminUser->addRole('admin'); $this->adminUser->addRole('admin')->save();
$this->adminUser->save();
} }
} }

View File

@ -73,8 +73,7 @@ class TextFormatElementFormTest extends KernelTestBase implements FormInterface
'name' => 'foobar', 'name' => 'foobar',
'mail' => 'foobar@example.com', 'mail' => 'foobar@example.com',
]); ]);
$this->testUser->addRole($role->id()); $this->testUser->addRole($role->id())->save();
$this->testUser->save();
\Drupal::service('current_user')->setAccount($this->testUser); \Drupal::service('current_user')->setAccount($this->testUser);
} }

View File

@ -191,8 +191,8 @@ class JsonApiFilterRegressionTest extends JsonApiFunctionalTestBase {
for ($i = 0; $i < 3; $i++) { for ($i = 0; $i < 3; $i++) {
// Create 3 users, one with the first role and two with the second role. // Create 3 users, one with the first role and two with the second role.
$users[$i] = $this->drupalCreateUser(); $users[$i] = $this->drupalCreateUser();
$users[$i]->addRole($i === 0 ? $role_llamalovers : $role_catcuddlers); $users[$i]->addRole($i === 0 ? $role_llamalovers : $role_catcuddlers)
$users[$i]->save(); ->save();
// For each user, create a node that is owned by that user. The node's // For each user, create a node that is owned by that user. The node's
// `uid` field will be used to test filtering by a content entity ID. // `uid` field will be used to test filtering by a content entity ID.
Node::create([ Node::create([

View File

@ -219,8 +219,7 @@ class MediaAccessTest extends MediaFunctionalTestBase {
// Create a new role, which implicitly checks if the permission exists. // Create a new role, which implicitly checks if the permission exists.
$mediaOverviewRole = $this->createRole(['access content overview', 'access media overview']); $mediaOverviewRole = $this->createRole(['access content overview', 'access media overview']);
$this->nonAdminUser->addRole($mediaOverviewRole); $this->nonAdminUser->addRole($mediaOverviewRole)->save();
$this->nonAdminUser->save();
$this->drupalGet('admin/content'); $this->drupalGet('admin/content');
$assert_session->linkByHrefExists('/admin/content/media'); $assert_session->linkByHrefExists('/admin/content/media');

View File

@ -181,8 +181,7 @@ class MigrateEntityContentValidationTest extends KernelTestBase {
'name' => 'foobar', 'name' => 'foobar',
'mail' => 'foobar@example.com', 'mail' => 'foobar@example.com',
]); ]);
$admin_user->addRole($role->id()); $admin_user->addRole($role->id())->save();
$admin_user->save();
$normal_user = User::create([ $normal_user = User::create([
'name' => 'normal user', 'name' => 'normal user',
'mail' => 'normal@example.com', 'mail' => 'normal@example.com',

View File

@ -109,11 +109,9 @@ class ShortcutsNavigationBlockTest extends PageCacheTagsTestBase {
// user has a cache hit despite the user cache context, as // user has a cache hit despite the user cache context, as
// the returned cache contexts include those from lazy-builder content. // the returned cache contexts include those from lazy-builder content.
$site_configuration_user1 = $this->drupalCreateUser(); $site_configuration_user1 = $this->drupalCreateUser();
$site_configuration_user1->addRole($site_configuration_role); $site_configuration_user1->addRole($site_configuration_role)->save();
$site_configuration_user1->save();
$site_configuration_user2 = $this->drupalCreateUser(); $site_configuration_user2 = $this->drupalCreateUser();
$site_configuration_user2->addRole($site_configuration_role); $site_configuration_user2->addRole($site_configuration_role)->save();
$site_configuration_user2->save();
$this->drupalLogin($site_configuration_user1); $this->drupalLogin($site_configuration_user1);
$this->verifyDynamicPageCache($test_page_url, 'MISS'); $this->verifyDynamicPageCache($test_page_url, 'MISS');

View File

@ -174,11 +174,9 @@ class ShortcutCacheTagsTest extends EntityCacheTagsTestBase {
// user has a cache hit despite the user cache context, as // user has a cache hit despite the user cache context, as
// the returned cache contexts include those from lazy-builder content. // the returned cache contexts include those from lazy-builder content.
$site_configuration_user1 = $this->drupalCreateUser(); $site_configuration_user1 = $this->drupalCreateUser();
$site_configuration_user1->addRole($site_configuration_role); $site_configuration_user1->addRole($site_configuration_role)->save();
$site_configuration_user1->save();
$site_configuration_user2 = $this->drupalCreateUser(); $site_configuration_user2 = $this->drupalCreateUser();
$site_configuration_user2->addRole($site_configuration_role); $site_configuration_user2->addRole($site_configuration_role)->save();
$site_configuration_user2->save();
$this->drupalLogin($site_configuration_user1); $this->drupalLogin($site_configuration_user1);
$this->verifyDynamicPageCache($test_page_url, 'MISS'); $this->verifyDynamicPageCache($test_page_url, 'MISS');
@ -350,11 +348,9 @@ class ShortcutCacheTagsTest extends EntityCacheTagsTestBase {
// user has a cache hit despite the user cache context, as // user has a cache hit despite the user cache context, as
// the returned cache contexts include those from lazy-builder content. // the returned cache contexts include those from lazy-builder content.
$site_configuration_user1 = $this->drupalCreateUser(); $site_configuration_user1 = $this->drupalCreateUser();
$site_configuration_user1->addRole($site_configuration_role); $site_configuration_user1->addRole($site_configuration_role)->save();
$site_configuration_user1->save();
$site_configuration_user2 = $this->drupalCreateUser(); $site_configuration_user2 = $this->drupalCreateUser();
$site_configuration_user2->addRole($site_configuration_role); $site_configuration_user2->addRole($site_configuration_role)->save();
$site_configuration_user2->save();
$this->drupalLogin($site_configuration_user1); $this->drupalLogin($site_configuration_user1);
$this->verifyDynamicPageCache($test_page_url, 'MISS'); $this->verifyDynamicPageCache($test_page_url, 'MISS');

View File

@ -235,7 +235,9 @@ class ShortcutLinksTest extends ShortcutTestBase {
$this->assertSession()->pageTextContains("The shortcut $title has been deleted."); $this->assertSession()->pageTextContains("The shortcut $title has been deleted.");
$this->assertShortcutQuickLink('Add to Default shortcuts'); $this->assertShortcutQuickLink('Add to Default shortcuts');
\Drupal::service('module_installer')->install(['block_content']); \Drupal::service('module_installer')->install(['block_content']);
$this->adminUser->addRole($this->drupalCreateRole(['administer block types']))->save(); $this->adminUser
->addRole($this->drupalCreateRole(['administer block types']))
->save();
BlockContentType::create([ BlockContentType::create([
'id' => 'basic', 'id' => 'basic',
'label' => 'Basic block', 'label' => 'Basic block',

View File

@ -132,8 +132,7 @@ class ToolbarAdminMenuTest extends BrowserTestBase {
$role = Role::load($this->createRole([])); $role = Role::load($this->createRole([]));
$role->setIsAdmin(TRUE); $role->setIsAdmin(TRUE);
$role->save(); $role->save();
$this->adminUser->addRole($role->id()); $this->adminUser->addRole($role->id())->save();
$this->adminUser->save();
// Uninstall a module. // Uninstall a module.
$edit = []; $edit = [];

View File

@ -25,8 +25,7 @@ class AddRoleUser extends ChangeUserRoleBase {
// For efficiency manually save the original account before applying // For efficiency manually save the original account before applying
// any changes. // any changes.
$account->original = clone $account; $account->original = clone $account;
$account->addRole($rid); $account->addRole($rid)->save();
$account->save();
} }
} }

View File

@ -25,8 +25,7 @@ class RemoveRoleUser extends ChangeUserRoleBase {
// For efficiency manually save the original account before applying // For efficiency manually save the original account before applying
// any changes. // any changes.
$account->original = clone $account; $account->original = clone $account;
$account->removeRole($rid); $account->removeRole($rid)->save();
$account->save();
} }
} }

View File

@ -51,9 +51,7 @@ class UserAdminListingTest extends BrowserTestBase {
$rid_2 = $this->drupalCreateRole([], 'custom_role_2', 'custom_role_2'); $rid_2 = $this->drupalCreateRole([], 'custom_role_2', 'custom_role_2');
$account = $this->drupalCreateUser(); $account = $this->drupalCreateUser();
$account->addRole($rid_1); $account->addRole($rid_1)->addRole($rid_2)->save();
$account->addRole($rid_2);
$account->save();
$accounts[$account->label()] = $account; $accounts[$account->label()] = $account;
$role_account_name = $account->label(); $role_account_name = $account->label();

View File

@ -62,8 +62,9 @@ class UserSubAdminTest extends BrowserTestBase {
$this->assertSession()->pageTextContains('Account ' . $cancel_user->getAccountName() . ' has been disabled.'); $this->assertSession()->pageTextContains('Account ' . $cancel_user->getAccountName() . ' has been disabled.');
// Repeat with permission to select account cancellation method. // Repeat with permission to select account cancellation method.
$user->addRole($this->drupalCreateRole(['select account cancellation method'])); $user
$user->save(); ->addRole($this->drupalCreateRole(['select account cancellation method']))
->save();
$cancel_user = $this->createUser(); $cancel_user = $this->createUser();
$this->drupalGet('user/' . $cancel_user->id() . '/cancel'); $this->drupalGet('user/' . $cancel_user->id() . '/cancel');
$this->assertSession()->pageTextContains('Cancellation method'); $this->assertSession()->pageTextContains('Cancellation method');

View File

@ -61,8 +61,7 @@ abstract class AccessTestBase extends UserTestBase {
$this->normalUser = $this->drupalCreateUser([ $this->normalUser = $this->drupalCreateUser([
'views_test_data test permission', 'views_test_data test permission',
]); ]);
$this->normalUser->addRole($this->normalRole); $this->normalUser->addRole($this->normalRole)->save();
$this->normalUser->save();
// @todo when all the plugin information is cached make a reset function and // @todo when all the plugin information is cached make a reset function and
// call it here. // call it here.
} }

View File

@ -40,9 +40,7 @@ class HandlerFieldRoleTest extends UserTestBase {
// Add roles to user 1. // Add roles to user 1.
$user = User::load(1); $user = User::load(1);
$user->addRole($role_name_a); $user->addRole($role_name_a)->addRole($role_name_b)->save();
$user->addRole($role_name_b);
$user->save();
$this->drupalLogin($this->createUser(['access user profiles'])); $this->drupalLogin($this->createUser(['access user profiles']));
$this->drupalGet('/test-views-handler-field-role'); $this->drupalGet('/test-views-handler-field-role');

View File

@ -36,11 +36,9 @@ class RolesRidArgumentTest extends UserTestBase {
$role_id = $this->createRole([], 'markup_role_name', '<em>Role name with markup</em>'); $role_id = $this->createRole([], 'markup_role_name', '<em>Role name with markup</em>');
$this->createRole([], 'second_role_name', 'Second role name'); $this->createRole([], 'second_role_name', 'Second role name');
$user = $this->createUser([], 'User with role one'); $user = $this->createUser([], 'User with role one');
$user->addRole($role_id); $user->addRole($role_id)->save();
$user->save();
$second_user = $this->createUser([], 'User with role two'); $second_user = $this->createUser([], 'User with role two');
$second_user->addRole('second_role_name'); $second_user->addRole('second_role_name')->save();
$second_user->save();
$this->drupalGet('/user_roles_rid_test/markup_role_name'); $this->drupalGet('/user_roles_rid_test/markup_role_name');
$this->assertSession()->assertEscaped('<em>Role name with markup</em>'); $this->assertSession()->assertEscaped('<em>Role name with markup</em>');

View File

@ -69,16 +69,13 @@ class UserEntityReferenceTest extends EntityKernelTestBase {
// cspell:ignore aabb aabbb aabbbb aabbbb // cspell:ignore aabb aabbb aabbbb aabbbb
$user1 = $this->createUser([], 'aabb'); $user1 = $this->createUser([], 'aabb');
$user1->addRole($this->role1->id()); $user1->addRole($this->role1->id())->save();
$user1->save();
$user2 = $this->createUser([], 'aabbb'); $user2 = $this->createUser([], 'aabbb');
$user2->addRole($this->role1->id()); $user2->addRole($this->role1->id())->save();
$user2->save();
$user3 = $this->createUser([], 'aabbbb'); $user3 = $this->createUser([], 'aabbbb');
$user3->addRole($this->role2->id()); $user3->addRole($this->role2->id())->save();
$user3->save();
/** @var \Drupal\Core\Entity\EntityAutocompleteMatcherInterface $autocomplete */ /** @var \Drupal\Core\Entity\EntityAutocompleteMatcherInterface $autocomplete */
$autocomplete = \Drupal::service('entity.autocomplete_matcher'); $autocomplete = \Drupal::service('entity.autocomplete_matcher');

View File

@ -79,17 +79,14 @@ abstract class UserKernelTestBase extends ViewsKernelTestBase {
// Setup a user with just the first role (so no permission beside the // Setup a user with just the first role (so no permission beside the
// ones from the authenticated role). // ones from the authenticated role).
$this->users[] = $account = $this->userStorage->create(['name' => 'first_role']); $this->users[] = $account = $this->userStorage->create(['name' => 'first_role']);
$account->addRole('no_permission'); $account->addRole('no_permission')->save();
$account->save();
// Setup a user with just the second role (so one additional permission). // Setup a user with just the second role (so one additional permission).
$this->users[] = $account = $this->userStorage->create(['name' => 'second_role']); $this->users[] = $account = $this->userStorage->create(['name' => 'second_role']);
$account->addRole('one_permission'); $account->addRole('one_permission')->save();
$account->save();
// Setup a user with both the second and the third role. // Setup a user with both the second and the third role.
$this->users[] = $account = $this->userStorage->create(['name' => 'second_third_role']); $this->users[] = $account = $this->userStorage->create(['name' => 'second_third_role']);
$account->addRole('one_permission'); $account->addRole('one_permission')->addRole('multiple_permissions')
$account->addRole('multiple_permissions'); ->save();
$account->save();
} }
} }

View File

@ -17,7 +17,8 @@ class AddRoleUserTest extends RoleUserTestBase {
*/ */
public function testExecuteAddExistingRole() { public function testExecuteAddExistingRole() {
$this->account->expects($this->never()) $this->account->expects($this->never())
->method('addRole'); ->method('addRole')
->willReturn($this->account);
$this->account->expects($this->any()) $this->account->expects($this->any())
->method('hasRole') ->method('hasRole')
@ -35,7 +36,8 @@ class AddRoleUserTest extends RoleUserTestBase {
*/ */
public function testExecuteAddNonExistingRole() { public function testExecuteAddNonExistingRole() {
$this->account->expects($this->once()) $this->account->expects($this->once())
->method('addRole'); ->method('addRole')
->willReturn($this->account);
$this->account->expects($this->any()) $this->account->expects($this->any())
->method('hasRole') ->method('hasRole')

View File

@ -17,7 +17,8 @@ class RemoveRoleUserTest extends RoleUserTestBase {
*/ */
public function testExecuteRemoveExistingRole() { public function testExecuteRemoveExistingRole() {
$this->account->expects($this->once()) $this->account->expects($this->once())
->method('removeRole'); ->method('removeRole')
->willReturn($this->account);
$this->account->expects($this->any()) $this->account->expects($this->any())
->method('hasRole') ->method('hasRole')
@ -35,7 +36,8 @@ class RemoveRoleUserTest extends RoleUserTestBase {
*/ */
public function testExecuteRemoveNonExistingRole() { public function testExecuteRemoveNonExistingRole() {
$this->account->expects($this->never()) $this->account->expects($this->never())
->method('removeRole'); ->method('removeRole')
->willReturn($this->account);
$this->account->expects($this->any()) $this->account->expects($this->any())
->method('hasRole') ->method('hasRole')

View File

@ -158,8 +158,7 @@ trait StandardTestTrait {
]); ]);
$role->grantPermission('view the administration theme'); $role->grantPermission('view the administration theme');
$role->save(); $role->save();
$this->adminUser->addRole($role->id()); $this->adminUser->addRole($role->id())->save();
$this->adminUser->save();
$this->drupalGet('node/add'); $this->drupalGet('node/add');
$this->assertSession()->statusCodeEquals(200); $this->assertSession()->statusCodeEquals(200);
@ -233,8 +232,7 @@ trait StandardTestTrait {
]); ]);
$role->grantPermission('administer workflows'); $role->grantPermission('administer workflows');
$role->save(); $role->save();
$this->adminUser->addRole($role->id()); $this->adminUser->addRole($role->id())->save();
$this->adminUser->save();
$this->rebuildContainer(); $this->rebuildContainer();
$this->drupalGet('admin/config/workflow/workflows/manage/editorial'); $this->drupalGet('admin/config/workflow/workflows/manage/editorial');
$this->assertSession()->pageTextContains('Draft'); $this->assertSession()->pageTextContains('Draft');
@ -254,8 +252,7 @@ trait StandardTestTrait {
$role->grantPermission('administer media'); $role->grantPermission('administer media');
$role->grantPermission('administer media display'); $role->grantPermission('administer media display');
$role->save(); $role->save();
$this->adminUser->addRole($role->id()); $this->adminUser->addRole($role->id())->save();
$this->adminUser->save();
$assert_session = $this->assertSession(); $assert_session = $this->assertSession();
$page = $this->getSession()->getPage(); $page = $this->getSession()->getPage();
/** @var \Drupal\media\Entity\MediaType $media_type */ /** @var \Drupal\media\Entity\MediaType $media_type */

View File

@ -109,8 +109,7 @@ class CacheContextOptimizationTest extends KernelTestBase {
// cache context, the element should have been changed because 'user.roles' // cache context, the element should have been changed because 'user.roles'
// cache context defined a cache tag for user entity changes, which should // cache context defined a cache tag for user entity changes, which should
// have bubbled up for the element when it was optimized away. // have bubbled up for the element when it was optimized away.
$authenticated_user->removeRole($role); $authenticated_user->removeRole($role)->save();
$authenticated_user->save();
$element = $test_element; $element = $test_element;
$element['#markup'] = 'this should be visible'; $element['#markup'] = 'this should be visible';
$output = \Drupal::service('renderer')->renderRoot($element); $output = \Drupal::service('renderer')->renderRoot($element);

View File

@ -51,8 +51,7 @@ class PathElementFormTest extends KernelTestBase implements FormInterface {
'name' => 'foobar', 'name' => 'foobar',
'mail' => 'foobar@example.com', 'mail' => 'foobar@example.com',
]); ]);
$this->testUser->addRole($role->id()); $this->testUser->addRole($role->id())->save();
$this->testUser->save();
\Drupal::service('current_user')->setAccount($this->testUser); \Drupal::service('current_user')->setAccount($this->testUser);
} }