annotate core/modules/user/tests/src/Functional/UserSubAdminTest.php @ 19:fa3358dc1485 tip

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