? 892950-user-activation-test.patch
? sites/default/files
? sites/default/private
? sites/default/settings.php
Index: modules/user/user.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.test,v
retrieving revision 1.100
diff -u -p -r1.100 user.test
--- modules/user/user.test	5 Aug 2010 23:53:39 -0000	1.100
+++ modules/user/user.test	26 Aug 2010 22:03:49 -0000
@@ -1809,3 +1809,99 @@ class UserRolesAssignmentTestCase extend
   }
 }
 
+/**
+ * Create an administrative user and activate another user.
+ * Uses the /user/[uid]/edit form.
+ */
+class UserUserActivateTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'User activation',
+      'description' => 'Testing if an activation mail gets sent after activating a blocked user.',
+      'group' => 'User',
+    );
+  }
+  function testUserActivateByAdmin() {
+    // Allow registration by site visitors, but require administrator approval.
+    variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+  
+    // register a new user.
+    $this->new_user = $this->drupalCreateUser();
+    user_save($this->new_user, array('status' => 0));
+  
+    // Create administrative user.
+    $admin_user = $this->drupalCreateUser(array('administer users'));
+    $this->drupalLogin($admin_user);
+  
+    // Activate regular user.
+    $edit = array();
+    $edit['status'] = TRUE;
+    $this->drupalPost('user/' . $this->new_user->uid . '/edit', $edit, t('Save'));
+    //$account = user_load($this->new_user->uid);
+    $this->assertEqual($this->new_user->status, 1, 'New user unblocked');
+    $this->assertMail("subject", "Account details for " . $this->new_user->name . " at " . variable_get('site_name') . " (approved)", 'Activation mail sent to the newly activated user');
+  }
+}
+
+class UserActivateTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'User activation mails',
+      'description' => 'Test user activation mail functionality.',
+      'group' => 'User'
+    );
+  }
+
+  /**
+   * Registers a user, blocks and unblocks it.
+   */
+  function testUserActivate() {
+    // Allow registration by site visitors, but require administrator approval.
+    variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+
+    $user_a = $this->drupalCreateUser(array());
+    $user_b = $this->drupalCreateUser(array());
+
+    // Create admin user to delete registered user.
+    $admin_user = $this->drupalCreateUser(array('administer users'));
+    $this->drupalLogin($admin_user);
+    $this->drupalGet('admin/people');
+    $this->assertText($user_a->name, t('Found user A on admin users page'));
+    $this->assertText($user_b->name, t('Found user B on admin users page'));
+    $this->assertText($admin_user->name, t('Found Admin user on admin users page'));
+
+    // Test blocking of a user.
+    $account = user_load($user_a->uid);
+    $this->assertEqual($account->status, 1, 'User A not blocked');
+    $editblock = array();
+    $editblock['operation'] = 'block';
+    $editblock['accounts[' . $account->uid . ']'] = TRUE;
+    $this->drupalPost('admin/people', $editblock, t('Update'));
+    $account = user_load($user_a->uid, TRUE);
+    $this->assertEqual($account->status, 0, 'User A blocked');
+
+    // Test unblocking of a user.
+    $account = user_load($user_a->uid);
+    $this->assertEqual($account->status, 0, 'User A blocked');
+    $editunblock = array();
+    $editunblock['operation'] = 'unblock';
+    $editunblock['accounts[' . $account->uid . ']'] = TRUE;
+    $this->drupalPost('admin/people', $editunblock, t('Update'));
+    $account = user_load($user_a->uid, TRUE);
+    $this->assertEqual($account->status, 1, 'User A unblocked');
+    $this->assertMail("to", $account->mail, "Activation mail sent to user");
+
+    // Activate a user from /user/[uid]/edit page.
+    $account2 = user_load($user_b->uid);
+    $this->assertEqual($account2->status, 1, 'User B not blocked');
+    $editblock2 = array();
+    $editblock2['operation'] = 'block';
+    $editblock2['accounts[' . $account2->uid . ']'] = TRUE;
+    $this->drupalPost('admin/people', $editblock2, t('Update'));
+    $account2 = user_load($user_b->uid, TRUE);
+    $this->assertEqual($account2->status, 0, 'User B blocked');
+    $this->drupalPost('user/' . $user_b->uid . '/edit', array('status' => TRUE), t('Save'));
+    $this->assertEqual($user_b->status, 1, 'User B unblocked');
+    $this->assertMail("to", $user_b->mail, "Activation mail sent to user");
+  }
+}
