NodeAccessUnpublishedCacheabilityTest.php

Namespace

Drupal\Tests\node\Functional

File

core/modules/node/tests/src/Functional/NodeAccessUnpublishedCacheabilityTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\node\Functional;

use Drupal\node\NodeInterface;

/**
 * Tests cacheability on unpublished nodes inherited from node access.
 *
 * @group node
 * @group Cache
 */
class NodeAccessUnpublishedCacheabilityTest extends NodeTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'node_access_test_auto_bubbling',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * Tests correct cacheability information bubbles up from node access.
     */
    public function testNodeAccessCacheabilityBubbleUpOnUnpublishedContent() : void {
        $rid = $this->drupalCreateRole([
            'access content',
            'view own unpublished content',
        ]);
        $test_user1 = $this->drupalCreateUser(values: [
            'roles' => [
                $rid,
            ],
        ]);
        $test_user2 = $this->drupalCreateUser(values: [
            'roles' => [
                $rid,
            ],
        ]);
        $unpublished_node_by_test_user1 = $this->createNode([
            'type' => 'page',
            'uid' => $test_user1->id(),
            'status' => NodeInterface::NOT_PUBLISHED,
        ]);
        $this->drupalLogin($test_user2);
        $this->drupalGet('node_access_test_auto_bubbling_node_access/' . $unpublished_node_by_test_user1->id());
        $this->assertSession()
            ->pageTextNotContains($unpublished_node_by_test_user1->label());
        // The author of the unpublished node must have access.
        $this->drupalLogin($test_user1);
        $this->drupalGet('node_access_test_auto_bubbling_node_access/' . $unpublished_node_by_test_user1->id());
        $this->assertSession()
            ->pageTextContains($unpublished_node_by_test_user1->label());
    }

}

Classes

Title Deprecated Summary
NodeAccessUnpublishedCacheabilityTest Tests cacheability on unpublished nodes inherited from node access.

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