summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-06-02 18:13:24 +0000
committerDries Buytaert <dries@buytaert.net>2010-06-02 18:13:24 +0000
commit45da508e05293c46015a957550082eae839b7b8b (patch)
tree0ab70a9eb7e873a0fc81984bcb7194c3836134b7
parentd68931862975923d9f1cca47dbf84c7694a256af (diff)
downloadbrdo-45da508e05293c46015a957550082eae839b7b8b.tar.gz
brdo-45da508e05293c46015a957550082eae839b7b8b.tar.bz2
- Patch #334671 by Steve Dondley, naxoc: add tests for user role administration.
-rw-r--r--modules/user/user.test89
1 files changed, 89 insertions, 0 deletions
diff --git a/modules/user/user.test b/modules/user/user.test
index 1401709e6..bf1bbbc81 100644
--- a/modules/user/user.test
+++ b/modules/user/user.test
@@ -1630,3 +1630,92 @@ class UserUserSearchTestCase extends DrupalWebTestCase {
}
+/**
+ * Test role assignment.
+ */
+class UserRolesAssignmentTestCase extends DrupalWebTestCase {
+ protected $admin_user;
+
+ public static function getInfo() {
+ return array(
+ 'name' => t('Role assignment'),
+ 'description' => t('Tests that users can be assigned and unassigned roles.'),
+ 'group' => t('User')
+ );
+ }
+
+ function setUp() {
+ parent::setUp();
+ $this->admin_user = $this->drupalCreateUser(array('administer permissions', 'administer users'));
+ $this->drupalLogin($this->admin_user);
+ }
+
+ /**
+ * Tests that a user can be assigned a role and that the role can be removed
+ * again.
+ */
+ function testAssignAndRemoveRole() {
+ $rid = $this->drupalCreateRole(array('administer content types'));
+ $account = $this->drupalCreateUser();
+
+ // Assign the role to the user.
+ $this->drupalPost('user/' . $account->uid . '/edit', array("roles[$rid]" => $rid), t('Save'));
+ $this->assertText(t('The changes have been saved.'));
+ $this->assertFieldChecked('edit-roles-' . $rid, t('Role is assigned.'));
+ $this->userLoadAndCheckRoleAssigned($account, $rid);
+
+ // Remove the role from the user.
+ $this->drupalPost('user/' . $account->uid . '/edit', array("roles[$rid]" => FALSE), t('Save'));
+ $this->assertText(t('The changes have been saved.'));
+ $this->assertNoFieldChecked('edit-roles-' . $rid, t('Role is removed from user.'));
+ $this->userLoadAndCheckRoleAssigned($account, $rid, FALSE);
+ }
+
+ /**
+ * Tests that when creating a user the role can be assigned. And that it can
+ * be removed again.
+ */
+ function testCreateUserWithRole() {
+ $rid = $this->drupalCreateRole(array('administer content types'));
+ // Create a new user and add the role at the same time.
+ $edit = array(
+ 'name' => $this->randomName(),
+ 'mail' => $this->randomName() . '@example.com',
+ 'pass[pass1]' => $pass = $this->randomString(),
+ 'pass[pass2]' => $pass,
+ "roles[$rid]" => $rid,
+ );
+ $this->drupalPost('admin/people/create', $edit, t('Create new account'));
+ $this->assertText(t('Created a new user account for !name.', array('!name' => $edit['name'])));
+ // Get the newly added user.
+ $account = user_load_by_name($edit['name']);
+
+ $this->drupalGet('user/' . $account->uid . '/edit');
+ $this->assertFieldChecked('edit-roles-' . $rid, t('Role is assigned.'));
+ $this->userLoadAndCheckRoleAssigned($account, $rid);
+
+ // Remove the role again.
+ $this->drupalPost('user/' . $account->uid . '/edit', array("roles[$rid]" => FALSE), t('Save'));
+ $this->assertText(t('The changes have been saved.'));
+ $this->assertNoFieldChecked('edit-roles-' . $rid, t('Role is removed from user.'));
+ $this->userLoadAndCheckRoleAssigned($account, $rid, FALSE);
+ }
+
+ /**
+ * Check role on user object.
+ *
+ * @param object $account User.
+ * @param integer $rid Role id.
+ * @param bool $is_assigned True if the role should present on the account.
+ */
+ private function userLoadAndCheckRoleAssigned($account, $rid, $is_assigned = TRUE) {
+ $account = user_load($account->uid, TRUE);
+ if ($is_assigned) {
+ $this->assertTrue(array_key_exists($rid, $account->roles), t('The role is present in the user object.'));
+ }
+ else {
+ $this->assertFalse(array_key_exists($rid, $account->roles), t('The role is not present in the user object.'));
+ }
+ }
+}
+