function FieldPermissionsTestCase::testPermissionsUI in Field Permissions 7
File
- ./field_permissions.test, line 45
- Tests for field_permissions.module.
Class
- FieldPermissionsTestCase
- Tests the Field Permissions module.
Code
function testPermissionsUI() {
$field_info = array(
'admin_path' => 'admin/structure/types/manage/page/fields/body',
'machine_name' => 'body',
'add_path' => 'node/add/page',
'name' => 'Body',
'form_field' => 'body[und][0][value]',
'value' => $this
->randomName(),
);
$this
->drupalGet($field_info['add_path']);
$this
->assertText($field_info['name']);
$this
->drupalGet($field_info['admin_path']);
$this
->assertNoText(t('Field visibility and permissions'));
$this
->drupalGet('user/logout');
$this
->drupalLogin($this->admin_user);
$this
->drupalGet($field_info['admin_path']);
$this
->assertText(t('Field visibility and permissions'));
$this
->assertFieldChecked('edit-field-field-permissions-type-0');
$this
->drupalGet('user/logout');
$this
->drupalLogin($this->limited_user);
$node1_values = array(
'title' => $this
->randomName(),
$field_info['form_field'] => $field_info['value'],
);
$this
->drupalPost($field_info['add_path'], $node1_values, t('Save'));
$this
->assertText($node1_values['title']);
$this
->assertText($field_info['value']);
$url = $this
->getUrl();
$nid1 = preg_replace('!^.*node/(\\d+)$!', '\\1', $url);
$this
->drupalGet('user/logout');
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('node/' . $nid1);
$this
->assertText($node1_values['title']);
$this
->assertText($field_info['value']);
$this
->drupalGet('node/' . $nid1 . '/edit');
$this
->assertText('Title');
$this
->assertText($node1_values['title']);
$this
->assertText($field_info['name']);
$this
->assertText($field_info['value']);
$edit = array(
'field[field_permissions][type]' => 1,
);
$this
->drupalPost($field_info['admin_path'], $edit, t('Save settings'));
$this
->drupalGet('node/' . $nid1);
$this
->assertText($node1_values['title']);
$this
->assertNoText($field_info['value']);
$this
->drupalGet($field_info['add_path']);
$this
->assertText('Title');
$this
->assertText($field_info['name']);
$this
->drupalGet('node/' . $nid1 . '/edit');
$this
->assertText('Title');
$this
->assertNoText($field_info['name']);
$this
->assertNoText($field_info['value']);
$user_admin_rid = variable_get('user_admin_role', 0);
$edit = array(
"roles[{$user_admin_rid}]" => TRUE,
);
$this
->drupalPost('user/' . $this->admin_user->uid . '/edit', $edit, t('Save'));
$this
->drupalGet('node/' . $nid1);
$this
->assertText($node1_values['title']);
$this
->assertText($field_info['value']);
$this
->drupalGet($field_info['add_path']);
$this
->assertText('Title');
$this
->assertText($field_info['name']);
$this
->drupalGet('node/' . $nid1 . '/edit');
$this
->assertText('Title');
$this
->assertText($field_info['name']);
$this
->assertText($field_info['value']);
$edit = array(
'field[field_permissions][type]' => 2,
);
$this
->drupalPost($field_info['admin_path'], $edit, t('Save settings'));
$this
->drupalGet($field_info['admin_path']);
$this
->assertRaw(t('Create own value for field %field', array(
'%field' => $field_info['name'],
)));
$this
->assertRaw(t('Edit own value for field %field', array(
'%field' => $field_info['name'],
)));
$this
->assertRaw(t("Edit anyone's value for field %field", array(
'%field' => $field_info['name'],
)));
$this
->assertRaw(t('View own value for field %field', array(
'%field' => $field_info['name'],
)));
$this
->assertRaw(t("View anyone's value for field %field", array(
'%field' => $field_info['name'],
)));
$this
->drupalGet('admin/people/permissions');
$this
->assertText(t('Field Permissions'));
$this
->assertRaw(t('Create own value for field %field', array(
'%field' => $field_info['machine_name'],
)));
$this
->assertRaw(t('Edit own value for field %field', array(
'%field' => $field_info['machine_name'],
)));
$this
->assertRaw(t("Edit anyone's value for field %field", array(
'%field' => $field_info['machine_name'],
)));
$this
->assertRaw(t('View own value for field %field', array(
'%field' => $field_info['machine_name'],
)));
$this
->assertRaw(t("View anyone's value for field %field", array(
'%field' => $field_info['machine_name'],
)));
$this
->assertUserHasPermission($this->admin_user, 'create ' . $field_info['machine_name'], t('Admin user does have "create @field" permission.', array(
'@field' => $field_info['machine_name'],
)));
$this
->assertUserDoesNotHavePermission($this->limited_user, 'create ' . $field_info['machine_name'], t('Limited user does not have "create @field" permission.', array(
'@field' => $field_info['machine_name'],
)));
$this
->drupalGet('user/logout');
$this
->drupalLogin($this->limited_user);
$this
->drupalGet($field_info['add_path']);
$this
->assertNoText($field_info['name']);
$edit = array(
$this->limited_rid . '[create ' . $field_info['machine_name'] . ']' => TRUE,
);
$this
->drupalPost('admin/people/permissions', $edit, t('Save permissions'));
$this
->assertUserHasPermission($this->admin_user, 'create ' . $field_info['machine_name'], t('Admin user does have "create @field" permission.', array(
'@field' => $field_info['machine_name'],
)));
$this
->assertUserHasPermission($this->limited_user, 'create ' . $field_info['machine_name'], t('Limited user does have "create @field" permission.', array(
'@field' => $field_info['machine_name'],
)));
$this
->drupalGet($field_info['add_path']);
$this
->assertText($field_info['name']);
$node2_values = array(
'title' => $this
->randomName(),
$field_info['form_field'] => $field_info['value'],
);
$this
->drupalPost($field_info['add_path'], $node2_values, t('Save'));
$this
->assertText($node2_values['title']);
$this
->assertNoText($field_info['value']);
$url = $this
->getUrl();
$nid2 = preg_replace('!^.*node/(\\d+)$!', '\\1', $url);
$this
->drupalGet('user/logout');
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('node/' . $nid2);
$this
->assertText($node2_values['title']);
$this
->assertText($field_info['value']);
$edit = array(
$this->limited_rid . '[view ' . $field_info['machine_name'] . ']' => TRUE,
);
$this
->drupalPost('admin/people/permissions', $edit, t('Save permissions'));
$this
->assertUserHasPermission($this->admin_user, 'view ' . $field_info['machine_name'], t('Admin user does have "view @field" permission.', array(
'@field' => $field_info['machine_name'],
)));
$this
->assertUserHasPermission($this->limited_user, 'view ' . $field_info['machine_name'], t('Limited user does have "view @field" permission.', array(
'@field' => $field_info['machine_name'],
)));
$this
->drupalGet('user/logout');
$this
->drupalLogin($this->limited_user);
$this
->drupalGet('node/' . $nid2);
$this
->assertText($node2_values['title']);
$this
->assertText($field_info['value']);
$this
->drupalGet('node/' . $nid2 . '/edit');
$this
->assertNoText($field_info['value']);
$this
->drupalGet('user/logout');
$this
->drupalLogin($this->admin_user);
$this
->drupalGet('node/' . $nid2 . '/edit');
$this
->assertText($field_info['value']);
$edit = array(
$this->limited_rid . '[edit ' . $field_info['machine_name'] . ']' => TRUE,
);
$this
->drupalPost('admin/people/permissions', $edit, t('Save permissions'));
$this
->assertUserHasPermission($this->admin_user, 'edit ' . $field_info['machine_name'], t('Admin user does have "edit @field" permission.', array(
'@field' => $field_info['machine_name'],
)));
$this
->assertUserHasPermission($this->limited_user, 'edit ' . $field_info['machine_name'], t('Limited user does have "edit @field" permission.', array(
'@field' => $field_info['machine_name'],
)));
$this
->drupalGet('node/' . $nid2 . '/edit');
$this
->assertText($field_info['value']);
$this
->drupalGet('user/logout');
$this
->drupalLogin($this->limited_user);
$this
->drupalGet('node/' . $nid2 . '/edit');
$this
->assertText($field_info['value']);
}