drupalGet('admin/people'); $this->assertResponse(403, 'Anonymous user does not have access to the user admin listing.'); // Create a bunch of users. $accounts = []; for ($i = 0; $i < 3; $i++) { $account = $this->drupalCreateUser(); $accounts[$account->label()] = $account; } // Create a blocked user. $account = $this->drupalCreateUser(); $account->block(); $account->save(); $accounts[$account->label()] = $account; // Create a user at a certain timestamp. $account = $this->drupalCreateUser(); $account->created = 1363219200; $account->save(); $accounts[$account->label()] = $account; $timestamp_user = $account->label(); $rid_1 = $this->drupalCreateRole([], 'custom_role_1', 'custom_role_1'); $rid_2 = $this->drupalCreateRole([], 'custom_role_2', 'custom_role_2'); $account = $this->drupalCreateUser(); $account->addRole($rid_1); $account->addRole($rid_2); $account->save(); $accounts[$account->label()] = $account; $role_account_name = $account->label(); // Create an admin user and look at the listing. $admin_user = $this->drupalCreateUser(['administer users']); $accounts[$admin_user->label()] = $admin_user; $accounts['admin'] = User::load(1); $this->drupalLogin($admin_user); $this->drupalGet('admin/people'); $this->assertResponse(200, 'The admin user has access to the user admin listing.'); $result = $this->xpath('//table[contains(@class, "responsive-enabled")]/tbody/tr'); $result_accounts = []; foreach ($result as $account) { $account_columns = $account->findAll('css', 'td'); $name = $account_columns[0]->getText(); $roles = []; $account_roles = $account_columns[2]->findAll('css', 'td div ul li'); if (!empty($account_roles)) { foreach ($account_roles as $element) { $roles[] = $element->getText(); } } $result_accounts[$name] = [ 'name' => $name, 'status' => $account_columns[1]->getText(), 'roles' => $roles, 'member_for' => $account_columns[3]->getText(), 'last_access' => $account_columns[4]->getText(), ]; } $this->assertFalse(array_keys(array_diff_key($result_accounts, $accounts)), 'Ensure all accounts are listed.'); foreach ($result_accounts as $name => $values) { $this->assertEqual($values['status'] == t('active'), $accounts[$name]->status->value, 'Ensure the status is displayed properly.'); } $expected_roles = ['custom_role_1', 'custom_role_2']; $this->assertEqual($result_accounts[$role_account_name]['roles'], $expected_roles, 'Ensure roles are listed properly.'); $this->assertEqual($result_accounts[$timestamp_user]['member_for'], \Drupal::service('date.formatter')->formatTimeDiffSince($accounts[$timestamp_user]->created->value), 'Ensure the right member time is displayed.'); $this->assertEqual($result_accounts[$timestamp_user]['last_access'], 'never', 'Ensure the last access time is "never".'); } }