function OgUserPermissionsTestCase::testOgUserRoleChangePermissions in Organic groups 7
Verify proper permission changes by og_role_change_permissions().
File
- ./og.test, line 765 
Class
Code
function testOgUserRoleChangePermissions() {
  // TODO: We need to invalidate cache as the og permissions are fired before
  // the field was added to the article content type. But this is a hack, and
  // should be removed.
  $this
    ->resetAll();
  // Create user.
  $user1 = $this
    ->drupalCreateUser();
  // Create an entity.
  $property = OG_GROUP_FIELD;
  $entity = entity_create('entity_test', array(
    'name' => 'main',
    'uid' => $user1->uid,
  ));
  $entity->{$property}[LANGUAGE_NONE][0]['value'] = 1;
  $entity
    ->save();
  $group = og_get_group('entity_test', $entity->pid);
  // Associate user to the group.
  $user2 = $this
    ->drupalCreateUser();
  $values = array(
    'entity' => $user2,
  );
  og_group($group->gid, $values);
  // Assert the user is registered to the new group.
  $this
    ->assertTrue(og_is_member($group->gid, 'user', $user2), t('User is registered to the new group.'));
  // Verify current permissions.
  $this
    ->assertFalse(og_user_access($group->gid, 'update own article content', $user2), t('User does not have "update own article content" permission.'));
  $this
    ->assertFalse(og_user_access($group->gid, 'delete own article content', $user2), t('User does not have "delete own article content" permission.'));
  $this
    ->assertFalse(og_user_access($group->gid, 'administer group', $user2), t('User does not have "administer group" permission.'));
  // Change permissions to authenticated member.
  $roles = array_flip(og_get_global_roles());
  // Authenticated role ID.
  $rid = $roles[OG_AUTHENTICATED_ROLE];
  $permissions = array(
    'delete own article content' => 1,
    'administer group' => 1,
  );
  og_role_change_permissions($rid, $permissions);
  // Verify proper permission changes.
  $this
    ->assertFalse(og_user_access($group->gid, 'update own article content', $user2), t('User still does not have "update own article content" permission.'));
  $this
    ->assertTrue(og_user_access($group->gid, 'delete own article content', $user2), t('User now has "delete own article content" permission.'));
  $this
    ->assertTrue(og_user_access($group->gid, 'administer group', $user2), t('User now has "administer group" permission.'));
  $permissions = array(
    'delete own article content' => 1,
    'administer group' => 0,
  );
  og_role_change_permissions($rid, $permissions);
  $this
    ->assertTrue(og_user_access($group->gid, 'delete own article content', $user2), t('User still has "delete own article content" permission.'));
  $this
    ->assertFalse(og_user_access($group->gid, 'administer group', $user2), t('User no longer has "administer group" permission.'));
}