diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-06-02 18:13:24 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-06-02 18:13:24 +0000 |
commit | 45da508e05293c46015a957550082eae839b7b8b (patch) | |
tree | 0ab70a9eb7e873a0fc81984bcb7194c3836134b7 | |
parent | d68931862975923d9f1cca47dbf84c7694a256af (diff) | |
download | brdo-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.test | 89 |
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.')); + } + } +} + |