You are here

function ContentAccessACLTestCase::testViewAccess in Content Access 5

Same name and namespace in other branches
  1. 6 tests/content_access_acl.test \ContentAccessACLTestCase::testViewAccess()
  2. 7 tests/content_access_acl.test \ContentAccessACLTestCase::testViewAccess()

Test Viewing accessibility with permissions for single users

File

tests/content_access_acl.test, line 39

Class

ContentAccessACLTestCase

Code

function testViewAccess() {

  // Enable ACL module
  // Exit test if module could not be enabled
  if (!$this
    ->aclModuleEnable()) {
    $this
      ->pass('No ACL module present, skipping test');
    return;
  }

  // Restrict access to this content type (access is only allowed for the author)
  // Enable per node access control
  $access_permissions = array(
    'view[author]' => TRUE,
    'view[1]' => FALSE,
    'view[2]' => FALSE,
    'per_node' => TRUE,
  );
  $this
    ->changeAccessContentType($access_permissions);

  // Allow access for test user
  $edit = array(
    'acl[view][add]' => $this->test_user->name,
  );
  $this
    ->drupalPostRequest('node/' . $this->node->nid . '/access', $edit, 'Add User');
  $this
    ->postToCurrentPage(array(), 'Submit');

  // Logout admin, try to access the node anonymously
  $this
    ->drupalGet(url('logout'));
  $this
    ->drupalGet(url('node/' . $this->node->nid));
  $this
    ->assertText(t('Access denied'), 'node is not viewable');

  // Login test user, view access should be allowed now
  $this
    ->drupalLoginUser($this->test_user);
  $this
    ->drupalGet(url('node/' . $this->node->nid));
  $this
    ->assertNoText(t('Access denied'), 'node is viewable');

  // Login admin and disable per node access
  $this
    ->drupalGet(url('logout'));
  $this
    ->drupalLoginUser($this->admin_user);
  $this
    ->changeAccessPerNode(FALSE);

  // Logout admin, try to access the node anonymously
  $this
    ->drupalGet(url('logout'));
  $this
    ->drupalGet(url('node/' . $this->node->nid));
  $this
    ->assertText(t('Access denied'), 'node is not viewable');

  // Login test user, view access should be denied now
  $this
    ->drupalLoginUser($this->test_user);
  $this
    ->drupalGet(url('node/' . $this->node->nid));
  $this
    ->assertText(t('Access denied'), 'node is not viewable');
}