Commit 1092697a authored by catch's avatar catch
Browse files

Issue #3321955 by neclimdul, phenaproxima: DefaultMenuLinkTreeManipulatorsTest...

Issue #3321955 by neclimdul, phenaproxima: DefaultMenuLinkTreeManipulatorsTest cache context assertions are broken

(cherry picked from commit 5f612de1)
parent 14b3f0b8
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -49,6 +49,13 @@ class DefaultMenuLinkTreeManipulatorsTest extends UnitTestCase {
   */
  protected $defaultMenuTreeManipulators;

  /**
   * Mock cache context manager.
   *
   * @var \Drupal\Core\Cache\Context\CacheContextsManager|\Prophecy\Prophecy\ObjectProphecy
   */
  protected $cacheContextManager;

  /**
   * The original menu tree build in mockTree().
   *
@@ -77,12 +84,9 @@ protected function setUp(): void {

    $this->defaultMenuTreeManipulators = new DefaultMenuLinkTreeManipulators($this->accessManager, $this->currentUser, $this->entityTypeManager);

    $cache_contexts_manager = $this->prophesize(CacheContextsManager::class);
    $cache_contexts_manager->assertValidTokens()->willReturn(TRUE);
    $cache_contexts_manager->reveal();

    $this->cacheContextManager = $this->prophesize(CacheContextsManager::class);
    $container = new Container();
    $container->set('cache_contexts_manager', $cache_contexts_manager);
    $container->set('cache_contexts_manager', $this->cacheContextManager->reveal());
    \Drupal::setContainer($container);
  }

@@ -163,6 +167,7 @@ public function testCheckAccess() {
    // performed. 9 routes, but 1 is external, 2 already have their 'access'
    // property set, and 1 is a child if an inaccessible menu link, so only 5
    // calls will be made.
    $this->cacheContextManager->assertValidTokens(['user.permissions'])->shouldBeCalled()->willReturn(TRUE);
    $this->accessManager->expects($this->exactly(5))
      ->method('checkNamedRoute')
      ->willReturnMap([
@@ -187,6 +192,7 @@ public function testCheckAccess() {

    $this->mockTree();
    $this->originalTree[5]->subtree[7]->access = AccessResult::neutral();
    $this->cacheContextManager->assertValidTokens(['user'])->shouldBeCalled()->willReturn(TRUE);
    $this->originalTree[8]->access = AccessResult::allowed()->cachePerUser();

    // Since \Drupal\Core\Menu\DefaultMenuLinkTreeManipulators::checkAccess()
@@ -250,6 +256,7 @@ public function testCheckAccessWithLinkToAnyPagePermission() {
      ->willReturn(TRUE);

    $this->mockTree();
    $this->cacheContextManager->assertValidTokens(['user.permissions'])->shouldBeCalled()->willReturn(TRUE);
    $this->defaultMenuTreeManipulators->checkAccess($this->originalTree);

    $expected_access_result = AccessResult::allowed()->cachePerPermissions();
@@ -324,6 +331,8 @@ public function testCheckNodeAccess() {
      ->with('node')
      ->willReturn($storage);

    $this->cacheContextManager->assertValidTokens(['user.permissions'])->shouldBeCalled()->willReturn(TRUE);
    $this->cacheContextManager->assertValidTokens(['user.permissions', 'user.node_grants:view'])->shouldBeCalled()->willReturn(TRUE);
    $node_access_result = AccessResult::allowed()->cachePerPermissions()->addCacheContexts(['user.node_grants:view']);

    $tree = $this->defaultMenuTreeManipulators->checkNodeAccess($tree);