You are here

class oa_subspacesPermission in Open Atrium Subspaces 7.2

@file Tests permission inheritence for oa_subspaces

Hierarchy

Expanded class hierarchy of oa_subspacesPermission

File

tests/oa_subspacesPermission.test, line 8
Tests permission inheritence for oa_subspaces

View source
class oa_subspacesPermission extends oa_coreBaseWebTest {
  static function getInfo() {
    return array(
      'name' => 'OA Subspace Permission test',
      'description' => 'Test that can permissions are correct',
      'group' => 'OA - Subspaces',
    );
  }
  function test_oa_subspacesPermission() {
    $langcode = LANGUAGE_NONE;
    $group_key = "og_group_ref[{$langcode}][0][default]";
    $body_key = "body[{$langcode}][0][value]";
    extract($this
      ->createOaSpaceAndUsers(array(
      'og_user_inheritance' => array(
        LANGUAGE_NONE => array(
          0 => array(
            'value' => 1,
          ),
        ),
      ),
    )));

    // Create another space that is a child of this one.
    $child = $this
      ->createOaSpace(array(
      'oa_parent_space' => array(
        LANGUAGE_NONE => array(
          0 => array(
            'target_id' => $space->nid,
          ),
        ),
      ),
    ));
    $not_child = $this
      ->createOaSpace();
    $roles = array_flip(og_roles('node', 'oa_space'));

    // Add create permission.
    $permissions = array(
      'create oa_discussion_post content' => 1,
    );
    og_role_change_permissions($roles[OG_AUTHENTICATED_ROLE], $permissions);
    $this
      ->assertTrue(og_user_access('node', $space->nid, 'create oa_discussion_post content', $space_member), t('Member has access to do permissions in main space.'));
    $this
      ->assertTrue(og_user_access('node', $child->nid, 'create oa_discussion_post content', $space_member), t('Member has access to do permissions in child space.'));
    $this
      ->assertFalse(og_user_access('node', $not_child->nid, 'create oa_discussion_post content', $space_member), t('Member does not have access to do permissions in not-child space.'));
    $this
      ->assertTrue(oa_user_access('node', $space->nid, 'create oa_discussion_post content', $space_member), t('Member has access to do permissions in main space.'));
    $this
      ->assertTrue(oa_user_access('node', $child->nid, 'create oa_discussion_post content', $space_member), t('Member has access to do permissions in child space.'));
    $this
      ->assertFalse(oa_user_access('node', $not_child->nid, 'create oa_discussion_post content', $space_member), t('Member does not have access to do permissions in not-child space.'));
    $this
      ->drupalLogin($space_member);
    $edit = array(
      'title' => $this
        ->randomName(16),
      $group_key => $space->title . ' (' . $space->nid . ')',
      $body_key => $this
        ->randomName(26),
    );
    $this
      ->drupalGet('node/' . $space->nid);
    $this
      ->drupalPost('node/add/oa-discussion-post', $edit, t('Publish'));
    $discussion = $this
      ->drupalGetNodeByTitle($edit['title']);
    $this
      ->assertTrue(!empty($discussion), t('Able to post discussion to parent.'));
    $edit = array(
      'title' => $this
        ->randomName(16),
      $group_key => $child->title . ' (' . $child->nid . ')',
      $body_key => $this
        ->randomName(26),
    );
    $this
      ->drupalPost('node/add/oa-discussion-post', $edit, t('Publish'));
    $discussion = $this
      ->drupalGetNodeByTitle($edit['title']);
    $this
      ->assertTrue(!empty($discussion), t('Able to post discussion to child.'));
    $edit = array(
      'title' => $this
        ->randomName(16),
      $group_key => $not_child->title . ' (' . $not_child->nid . ')',
      $body_key => $this
        ->randomName(26),
    );
    $this
      ->drupalPost('node/add/oa-discussion-post', $edit, t('Publish'));
    $discussion = $this
      ->drupalGetNodeByTitle($edit['title']);
    $this
      ->assertTrue(empty($discussion), t('Not able to post discussion to not child.'));
    $options = array(
      'query' => array(
        'field_mode' => 'default',
        'search_string' => $space->title,
      ),
    );
    $this
      ->drupalGet('select2widget/ajax/og_group_ref/node/oa_discussion_post/NULL', $options);
    $this
      ->assertText('"id":"' . $space->nid . '"', t('Parent ID returned from json.'));
    $options['query']['search_string'] = $child->title;
    $this
      ->drupalGet('select2widget/ajax/og_group_ref/node/oa_discussion_post/NULL', $options);
    $this
      ->assertText('"id":"' . $child->nid . '"', t('Child ID returned from json.'));
    $options['query']['search_string'] = $not_child->title;
    $this
      ->drupalGet('select2widget/ajax/og_group_ref/node/oa_discussion_post/NULL', $options);
    $this
      ->assertNoText('"id":"' . $not_child->nid . '"', t('Non-sibling ID not returned from json.'));
  }

}

Members