1 admin_bar.test | AdminBarPermissionsTestCase::testPermissionChanges() |
Tests that user role and permission changes are properly taken up.
File
- core/
modules/ admin_bar/ tests/ admin_bar.test, line 200 - Tests for the Administration bar module.
Class
- AdminBarPermissionsTestCase
- Tests menu links depending on user permissions.
Code
function testPermissionChanges() {
// Create a user who is able to change permissions.
$permissions = $this->basePermissions + array(
'administer permissions',
'assign roles',
);
$admin_user = $this->backdropCreateUser($permissions);
$this->backdropLogin($admin_user);
// Extract the user role name that was created for above permissions.
$roles = array_diff($admin_user->roles, array(BACKDROP_AUTHENTICATED_ROLE));
$role_name = reset($roles);
// Verify that Configuration sub-items do not appear.
$this->assertNoLinkTrailByTitle(array(t('Configuration'), t('System')));
// Grant the 'administer site configuration' permission to ourselves.
$edit = array(
$role_name . '[administer site configuration]' => TRUE,
);
$this->backdropPost('admin/config/people/permissions', $edit, t('Save permissions'));
// Verify that System Configuration appears.
$this->assertLinkTrailByTitle(array(t('Configuration'), t('System')));
// Verify that Structure » Content types does not appear.
$this->assertNoLinkTrailByTitle(array(t('Structure'), t('Content types')));
// Create a new role.
$edit = array(
'name' => 'test',
'label' => 'Test',
);
$this->backdropPost('admin/config/people/roles/add', $edit, t('Save role'));
// Grant the 'administer content types' permission for the role.
$edit = array(
'test[administer content types]' => TRUE,
);
$this->backdropPost('admin/config/people/permissions/test', $edit, t('Save permissions'));
// Verify that Structure » Content types does not appear.
$this->assertNoLinkTrailByTitle(array(t('Structure'), t('Content types')));
// Assign the role to ourselves.
$edit = array(
'roles[test]' => TRUE,
);
$this->backdropPost('user/' . $admin_user->uid . '/edit', $edit, t('Save'));
// Verify that Structure » Content types appears.
$this->assertLinkTrailByTitle(array(t('Structure'), t('Content types')));
// Delete the role.
$this->backdropPost('admin/config/people/roles/delete/test', array(), t('Delete'));
// Verify that Structure » Content types does not appear.
$this->assertNoLinkTrailByTitle(array(t('Structure'), t('Content types')));
}