You are here

public function OpenAtriumAccessTestCase::testGetSetGroupPermissions in Open Atrium Core 7.2

File

modules/oa_access/tests/oa_access.test, line 452
Functional tests for the Open Atrium Access module.

Class

OpenAtriumAccessTestCase
Functional tests for the Open Atrium Access module.

Code

public function testGetSetGroupPermissions() {
  $group_a = $this
    ->oaCreateGroupWithUser(array(
    'title' => 'Group A',
  ), array(
    'access content',
  ));
  $group_b = $this
    ->oaCreateGroupWithUser(array(
    'title' => 'Group B',
  ), array(
    'access content',
  ));
  $group_permissions = array(
    $group_a['group']->nid => array(
      'oa_access_test' => array(
        'access oa_access_test',
        'administer oa_access_test',
      ),
    ),
    $group_b['group']->nid => array(
      'oa_access_test' => array(
        'access oa_access_test',
      ),
    ),
  );

  // First, verify that there are no permissions set.
  $this
    ->assertEqual(oa_access_get_group_permissions(array_keys($group_permissions)), array(
    $group_a['group']->nid => array(),
    $group_b['group']->nid => array(),
  ));

  // Set the permissions in the database, then get them back out and make
  // sure they are the same.
  oa_access_set_group_permissions($group_permissions);
  $this
    ->assertEqual(oa_access_get_group_permissions(array_keys($group_permissions)), $group_permissions);

  // We'll update only one of the groups permissions, but get both and make
  // sure that we don't overwrite the wrong one.
  $group_permissions[$group_b['group']->nid]['oa_access_test'] = array(
    'administer oa_access_test',
  );
  $group_permissions_partial = $group_permissions;
  unset($group_permissions_partial[$group_a['group']->nid]);
  oa_access_set_group_permissions($group_permissions_partial);
  $this
    ->assertEqual(oa_access_get_group_permissions(array_keys($group_permissions)), $group_permissions);

  // Now, clear the static cache on 'oa_access_get_group_permissions' and
  // try it again - this will pull from the database.
  drupal_static_reset('oa_access_get_group_permissions');
  $this
    ->assertEqual(oa_access_get_group_permissions(array_keys($group_permissions)), $group_permissions);
}