Index: modules/user/user.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.test,v
retrieving revision 1.10
diff -u -r1.10 user.test
--- modules/user/user.test	27 Jun 2008 07:25:11 -0000	1.10
+++ modules/user/user.test	31 Aug 2008 13:06:48 -0000
@@ -463,3 +463,69 @@
   }
 
 }
+
+
+class UserRolesTestCase extends DrupalWebTestCase {
+  protected $user;
+  protected $admin_user;
+  
+  /**
+   * Implementation of getInfo().
+   */
+  function getInfo() {
+    return array(
+      'name' => t('Role creation and assignment'),
+      'description' => t(''),
+      'group' => t('User')
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    $this->user = $this->drupalCreateUser();
+    $this->admin_user = $this->drupalCreateUser(array('administer permissions', 'access user profiles', 'administer users'));
+  }
+  
+  /**
+   * Test role functions, add rename and delete role.
+   */
+  function testRoleFunctions() {
+    $this->drupalLogin($this->admin_user);
+    
+    //Create a role
+    $edit = array();
+    $edit['name'] = $this->randomName();
+    $this->drupalPost('admin/user/roles', $edit, t('Add role'));
+    $this->assertText(t('The role has been added.'), t('Successful role addition message displayed.'));
+    
+    //Rename the role.
+    $roles = user_roles();
+    foreach ($roles as $rid => $role_name) {
+      if ($edit['name'] == $role_name) {
+        break;
+      }
+    }
+    $edit = array();
+    $edit['name'] = $this->randomName();
+    $this->drupalPost('admin/user/roles/edit/'. $rid, array(), t('Save role'));
+    $this->assertText(t('The role has been renamed.'), t('Successful role rename message displayed.'));
+    // Test adding and removing role permission.
+    // TODO
+    
+    // Assign a user to a role. 
+    $user_edit_path = 'user/'. $this->user->uid .'/edit';
+    $edit = array();
+    $edit['roles['. $rid .']'] = TRUE;
+    $this->drupalPost($user_edit_path, $edit, t('Save'));
+    $account = user_load(array('uid' => $this->user->uid));
+    $this->assertTrue(isset($account->roles[$rid]), t('The user has been assigned the role with the rid %rid.', array('%rid' => $rid)));
+    $this->assertText(t('The changes have been saved.'), t('Sucessful user change message displayed.'));
+    
+    // Delete the role
+    $this->drupalPost('admin/user/roles/edit/'. $rid, array(), t('Delete role'));
+    $this->assertText(t('The role has been deleted.'), t('Successful role deletion message displayed.'));
+  }
+
+
+} 
\ No newline at end of file
