annotate core/modules/user/tests/src/Functional/UserSubAdminTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents
children
rev   line source
Chris@5 1 <?php
Chris@5 2
Chris@5 3 namespace Drupal\Tests\user\Functional;
Chris@5 4
Chris@5 5 use Drupal\Tests\BrowserTestBase;
Chris@5 6
Chris@5 7 /**
Chris@5 8 * Test 'sub-admin' account with permission to edit some users but without 'administer users' permission.
Chris@5 9 *
Chris@5 10 * @group user
Chris@5 11 */
Chris@5 12 class UserSubAdminTest extends BrowserTestBase {
Chris@5 13
Chris@5 14 /**
Chris@5 15 * {@inheritdoc}
Chris@5 16 */
Chris@5 17 public static $modules = ['user_access_test'];
Chris@5 18
Chris@5 19 /**
Chris@5 20 * Test create and cancel forms as 'sub-admin'.
Chris@5 21 */
Chris@5 22 public function testSubAdmin() {
Chris@5 23 $user = $this->drupalCreateUser(['sub-admin']);
Chris@5 24 $this->drupalLogin($user);
Chris@5 25
Chris@5 26 // Test that the create user page has admin fields.
Chris@5 27 $this->drupalGet('admin/people/create');
Chris@5 28 $this->assertSession()->fieldExists("edit-name");
Chris@5 29 $this->assertSession()->fieldExists("edit-notify");
Chris@5 30
Chris@5 31 // Not 'status' or 'roles' as they require extra permission.
Chris@5 32 $this->assertSession()->fieldNotExists("edit-status-0");
Chris@5 33 $this->assertSession()->fieldNotExists("edit-role");
Chris@5 34
Chris@5 35 // Test that create user gives an admin style message.
Chris@5 36 $edit = [
Chris@5 37 'name' => $this->randomMachineName(),
Chris@5 38 'mail' => $this->randomMachineName() . '@example.com',
Chris@5 39 'pass[pass1]' => $pass = $this->randomString(),
Chris@5 40 'pass[pass2]' => $pass,
Chris@5 41 'notify' => FALSE,
Chris@5 42 ];
Chris@5 43 $this->drupalPostForm('admin/people/create', $edit, 'Create new account');
Chris@5 44 $this->assertSession()->pageTextContains('Created a new user account for ' . $edit['name'] . '. No email has been sent.');
Chris@5 45
Chris@5 46 // Test that the cancel user page has admin fields.
Chris@5 47 $cancel_user = $this->createUser();
Chris@5 48 $this->drupalGet('user/' . $cancel_user->id() . '/cancel');
Chris@5 49 $this->assertSession()->responseContains('Are you sure you want to cancel the account ' . $cancel_user->getAccountName() . '?');
Chris@5 50 $this->assertSession()->responseContains('Disable the account and keep its content. This action cannot be undone.');
Chris@5 51
Chris@5 52 // Test that cancel confirmation gives an admin style message.
Chris@5 53 $this->drupalPostForm(NULL, NULL, t('Cancel account'));
Chris@5 54 $this->assertSession()->pageTextContains($cancel_user->getAccountName() . ' has been disabled.');
Chris@5 55
Chris@5 56 // Repeat with permission to select account cancellation method.
Chris@5 57 $user->addRole($this->drupalCreateRole(['select account cancellation method']));
Chris@5 58 $user->save();
Chris@5 59 $cancel_user = $this->createUser();
Chris@5 60 $this->drupalGet('user/' . $cancel_user->id() . '/cancel');
Chris@5 61 $this->assertSession()->pageTextContains('Select the method to cancel the account above.');
Chris@5 62 }
Chris@5 63
Chris@5 64 }