You are here

function OgAccessTestCase::testGroupContentAccessNotDefault in Organic groups 7.2

Group with access field and group content with different definition from the group.

File

og_access/og_access.test, line 195
Test organic groups access module.

Class

OgAccessTestCase
Test OG access.

Code

function testGroupContentAccessNotDefault() {
  og_create_field(OG_CONTENT_ACCESS_FIELD, 'node', $this->group_content_type);

  // Test group content access, one time when the group is set to be
  // public, and one time set to private.
  foreach (array(
    0,
    1,
  ) as $state) {

    // Make sure user1 is logged in.
    $this
      ->drupalLogin($this->user1);

    // Create a group node and enable access.
    $settings = array();
    $settings['type'] = $this->group_type;
    $settings[OG_GROUP_FIELD][LANGUAGE_NONE][0]['value'] = 1;
    $settings[OG_ACCESS_FIELD][LANGUAGE_NONE][0]['value'] = $state;
    $group_node = $this
      ->drupalCreateNode($settings);
    $nid = $group_node->nid;

    // Create a group content node and set public access.
    $settings = array();
    $settings['type'] = $this->group_content_type;
    $settings[OG_AUDIENCE_FIELD][LANGUAGE_NONE][0]['target_id'] = $nid;
    $settings[OG_CONTENT_ACCESS_FIELD][LANGUAGE_NONE][0]['value'] = OG_CONTENT_ACCESS_PUBLIC;
    $public_node = $this
      ->drupalCreateNode($settings);

    // Create a group content node and set private access.
    $settings[OG_CONTENT_ACCESS_FIELD][LANGUAGE_NONE][0]['value'] = OG_CONTENT_ACCESS_PRIVATE;
    $private_node = $this
      ->drupalCreateNode($settings);

    // Assert the user can view the group.
    $this
      ->assertTrue(og_is_member('node', $nid, 'user', $this->user1), t('User is a group member.'));
    $this
      ->drupalGet('node/' . $public_node->nid);
    $this
      ->assertResponse('200', t('Group member can view public group content node.'));
    $this
      ->drupalGet('node/' . $private_node->nid);
    $this
      ->assertResponse('200', t('Group member can view private group content node.'));

    // Assert another user is not a group member.
    $this
      ->drupalLogin($this->user2);
    $this
      ->assertFalse(og_is_member('node', $nid, 'user', $this->user2), t('User is not a group member.'));

    // Assert non-member can't view the group.
    $this
      ->drupalGet('node/' . $public_node->nid);
    $this
      ->assertResponse('200', t('Non group member can view public group content node.'));
    $this
      ->drupalGet('node/' . $private_node->nid);
    $this
      ->assertResponse('403', t('Non group member can not view private group content node.'));
  }
}