function ProfileTestAutocomplete::testAutocomplete
Tests profile field autocompletion and access.
File
-
modules/
profile/ profile.test, line 330
Class
- ProfileTestAutocomplete
- Test profile field autocompletion and access.
Code
function testAutocomplete() {
$this->drupalLogin($this->admin_user);
// Create a new profile field with autocompletion enabled.
$category = $this->randomName();
$field = $this->createProfileField('textfield', $category, array(
'weight' => 1,
'autocomplete' => 1,
));
// Enter profile field value.
$field['value'] = $this->randomName();
$this->setProfileField($field, $field['value']);
// Set some html for what we want to see in the page output later.
// Autocomplete always uses non-clean URLs.
$current_clean_url = isset($GLOBALS['conf']['clean_url']) ? $GLOBALS['conf']['clean_url'] : NULL;
$GLOBALS['conf']['clean_url'] = 0;
$autocomplete_url = url('profile/autocomplete/' . $field['fid'], array(
'absolute' => TRUE,
'script' => 'index.php',
));
$GLOBALS['conf']['clean_url'] = $current_clean_url;
$autocomplete_id = drupal_html_id('edit-' . $field['form_name'] . '-autocomplete');
$autocomplete_html = '<input type="hidden" id="' . $autocomplete_id . '" value="' . $autocomplete_url . '" disabled="disabled" class="autocomplete" />';
// Check that autocompletion html is found on the user's profile edit page.
$this->drupalGet('user/' . $this->admin_user->uid . '/edit/' . $category);
$this->assertRaw($autocomplete_html, 'Autocomplete found.');
$this->assertFieldByXPath('//input[@type="text" and @name="' . $field['form_name'] . '" and contains(@class, "form-autocomplete")]', '', 'Text input field found');
$this->assertRaw('misc/autocomplete.js', 'Autocomplete JavaScript found.');
$this->assertRaw('class="form-text form-autocomplete"', 'Autocomplete form element class found.');
// Check the autocompletion path using the first letter of our user's profile
// field value to make sure access is allowed and a valid result if found.
$this->drupalGet('profile/autocomplete/' . $field['fid'] . '/' . $field['value'][0]);
$this->assertResponse(200, 'Autocomplete path allowed to user with permission.');
$this->assertRaw($field['value'], 'Autocomplete value found.');
// Logout and login with a user without the 'access user profiles' permission.
$this->drupalLogout();
$this->drupalLogin($this->normal_user);
// Check that autocompletion html is not found on the user's profile edit page.
$this->drupalGet('user/' . $this->normal_user->uid . '/edit/' . $category);
$this->assertNoRaw($autocomplete_html, 'Autocomplete not found.');
// User should be denied access to the profile autocomplete path.
$this->drupalGet('profile/autocomplete/' . $field['fid'] . '/' . $field['value'][0]);
$this->assertResponse(403, 'Autocomplete path denied to user without permission.');
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.