1 user.test protected UserCreateTestCase::testUserAdd()

Create a user through the administration interface and ensure that it displays in the user list.


core/modules/user/tests/user.test, line 1915
Tests for user.module.


Test the create user administration page.


protected function testUserAdd() {
  $user = $this->backdropCreateUser(array('administer users'));

  // Test user creation page for valid fields.
  $this->assertFieldbyId('edit-status-0', 0, 'The user status option Blocked exists.', 'User login');
  $this->assertFieldbyId('edit-status-1', 1, 'The user status option Active exists.', 'User login');
  $this->assertFieldByXPath('//input[@type="radio" and @id="edit-status-1" and @checked="checked"]', NULL, 'Default setting for user status is active.');

  // We create two users, notifying one and not notifying the other, to
  // ensure that the tests work in both cases.
  foreach (array(FALSE, TRUE) as $notify) {
    $name = $this->randomName();
    $edit = array(
      'name' => $name,
      'mail' => $this->randomName() . '@example.com',
      'pass' => $pass = $this->randomString(),
      'notify' => $notify,
    $this->backdropPost('admin/people/create', $edit, t('Create new account'));

    if ($notify) {
      $this->assertText(t('A welcome message with further instructions has been emailed to the new user @name.', array('@name' => $edit['name'])), 'User created');
      $this->assertEqual(count($this->backdropGetMails()), 1, 'Notification email sent');
    else {
      $this->assertText(t('Created a new user account for @name. No email has been sent.', array('@name' => $edit['name'])), 'User created');
      $this->assertEqual(count($this->backdropGetMails()), 0, 'Notification email not sent');

    $this->assertText($edit['name'], 'User found in list of users');
    $user = user_load_by_name($name);
    $this->assertEqual($user->status == 1, 'User is not blocked');

  // Test that '0' is considered a password. We have to disable password
  // required score for that.
  config_set('system.core', 'user_password_reject_weak', FALSE);
  $name = $this->randomName();
  $edit = array(
    'name' => $name,
    'mail' => $name . '@example.com',
    'pass' => 0,
    'notify' => FALSE,
  $this->backdropPost('admin/people/create', $edit, t('Create new account'));
  $this->assertText(t('Created a new user account for @name. No email has been sent.', array('@name' => $edit['name'])), 'User created with password 0');
  $this->assertNoText('Password field is required');