function NodeAccessGrantsCacheContextTest::testCacheContext

Same name in other branches
  1. 9 core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php \Drupal\Tests\node\Functional\NodeAccessGrantsCacheContextTest::testCacheContext()
  2. 8.9.x core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php \Drupal\Tests\node\Functional\NodeAccessGrantsCacheContextTest::testCacheContext()
  3. 11.x core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php \Drupal\Tests\node\Functional\NodeAccessGrantsCacheContextTest::testCacheContext()

Tests NodeAccessGrantsCacheContext::getContext().

File

core/modules/node/tests/src/Functional/NodeAccessGrantsCacheContextTest.php, line 116

Class

NodeAccessGrantsCacheContextTest
Tests the node access grants cache context service.

Namespace

Drupal\Tests\node\Functional

Code

public function testCacheContext() : void {
    $this->assertUserCacheContext([
        0 => 'view.all:0;node_access_test_author:0;node_access_all:0',
        1 => 'all',
        2 => 'view.all:0;node_access_test_author:2;node_access_test:8888,8889',
        3 => 'view.all:0;node_access_test_author:3',
    ]);
    // Grant view to all nodes (because nid = 0) for users in the
    // 'node_access_all' realm.
    $record = [
        'nid' => 0,
        'gid' => 0,
        'realm' => 'node_access_all',
        'grant_view' => 1,
        'grant_update' => 0,
        'grant_delete' => 0,
    ];
    Database::getConnection()->insert('node_access')
        ->fields($record)
        ->execute();
    // Put user accessUser (uid 0) in the realm.
    \Drupal::state()->set('node_access_test.no_access_uid', 0);
    drupal_static_reset('node_access_view_all_nodes');
    $this->assertUserCacheContext([
        0 => 'view.all',
        1 => 'all',
        2 => 'view.all:0;node_access_test_author:2;node_access_test:8888,8889',
        3 => 'view.all:0;node_access_test_author:3',
    ]);
    // Put user accessUser (uid 2) in the realm.
    \Drupal::state()->set('node_access_test.no_access_uid', $this->accessUser
        ->id());
    drupal_static_reset('node_access_view_all_nodes');
    $this->assertUserCacheContext([
        0 => 'view.all:0;node_access_test_author:0',
        1 => 'all',
        2 => 'view.all',
        3 => 'view.all:0;node_access_test_author:3',
    ]);
    // Put user noAccessUser (uid 3) in the realm.
    \Drupal::state()->set('node_access_test.no_access_uid', $this->noAccessUser
        ->id());
    drupal_static_reset('node_access_view_all_nodes');
    $this->assertUserCacheContext([
        0 => 'view.all:0;node_access_test_author:0',
        1 => 'all',
        2 => 'view.all:0;node_access_test_author:2;node_access_test:8888,8889',
        3 => 'view.all',
    ]);
    // Uninstall the node_access_test module
    $this->container
        ->get('module_installer')
        ->uninstall([
        'node_access_test',
    ]);
    drupal_static_reset('node_access_view_all_nodes');
    $this->assertUserCacheContext([
        0 => 'view.all',
        1 => 'all',
        2 => 'view.all',
        3 => 'view.all',
    ]);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.