Error message
You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).function UserCancelTestCase::testUserAnonymize
Delete account and anonymize all content.
File
-
modules/
user/ user.test, line 1173
Class
- UserCancelTestCase
- Test cancelling a user.
Code
function testUserAnonymize() {
variable_set ('user_cancel_method', 'user_cancel_reassign');
// Create a user.
$account = $this->drupalCreateUser (array(
'cancel account',
));
$this->drupalLogin ($account);
// Load real user object.
$account = user_load ($account->uid, TRUE);
// Create a simple node.
$node = $this->drupalCreateNode (array(
'uid' => $account->uid,
));
// Create a node with two revisions, the initial one belonging to the
// cancelling user.
$revision_node = $this->drupalCreateNode (array(
'uid' => $account->uid,
));
$revision = $revision_node->vid;
$settings = get_object_vars ($revision_node);
$settings['revision'] = 1;
$settings['uid'] = 1;
// Set new/current revision to someone else.
$revision_node = $this->drupalCreateNode ($settings);
// Attempt to cancel account.
$this->drupalGet ('user/' . $account->uid . '/edit');
$this->drupalPost (NULL, NULL, t ('Cancel account'));
$this->assertText (t ('Are you sure you want to cancel your account?'), 'Confirmation form to cancel account displayed.');
$this->assertRaw (t ('Your account will be removed and all account information deleted. All of your content will be assigned to the %anonymous-name user.', array(
'%anonymous-name' => variable_get ('anonymous', t ('Anonymous')),
)), 'Informs that all content will be attributed to anonymous account.');
// Confirm account cancellation.
$timestamp = time ();
$this->drupalPost (NULL, NULL, t ('Cancel account'));
$this->assertText (t ('A confirmation request to cancel your account has been sent to your e-mail address.'), 'Account cancellation request mailed message displayed.');
// Confirm account cancellation request.
$this->drupalGet ("user/{$account->uid}/cancel/confirm/{$timestamp}/" . user_pass_rehash ($account->pass , $timestamp, $account->login, $account->uid, $account->mail));
$this->assertFalse (user_load ($account->uid, TRUE), 'User is not found in the database.');
// Confirm that user's content has been attributed to anonymous user.
$test_node = node_load ($node->nid, NULL, TRUE);
$this->assertTrue ($test_node->uid == 0 && $test_node->status == 1, 'Node of the user has been attributed to anonymous user.');
$test_node = node_load ($revision_node->nid, $revision, TRUE);
$this->assertTrue ($test_node->revision_uid == 0 && $test_node->status == 1, 'Node revision of the user has been attributed to anonymous user.');
$test_node = node_load ($revision_node->nid, NULL, TRUE);
$this->assertTrue ($test_node->uid != 0 && $test_node->status == 1, "Current revision of the user's node was not attributed to anonymous user.");
// Confirm that the confirmation message made it through to the end user.
$this->assertRaw (t ('%name has been deleted.', array(
'%name' => $account->name ,
)), "Confirmation message displayed to user.");
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.