diff --git a/core/modules/menu_link_content/src/MenuLinkContentAccessControlHandler.php b/core/modules/menu_link_content/src/MenuLinkContentAccessControlHandler.php index b663f2707194edc43b026195d4bd9e7891731344..0a7c8cc5a7b22900f8fbe52938c20b8d0d544bf7 100644 --- a/core/modules/menu_link_content/src/MenuLinkContentAccessControlHandler.php +++ b/core/modules/menu_link_content/src/MenuLinkContentAccessControlHandler.php @@ -74,6 +74,9 @@ protected function checkAccess(EntityInterface $entity, $operation, AccountInter case 'delete': return AccessResult::allowedIfHasPermission($account, 'administer menu') ->andIf(AccessResult::allowedIf(!$entity->isNew())->addCacheableDependency($entity)); + + default: + return parent::checkAccess($entity, $operation, $account); } } diff --git a/core/modules/menu_link_content/tests/src/Unit/MenuLinkContentEntityAccessTest.php b/core/modules/menu_link_content/tests/src/Unit/MenuLinkContentEntityAccessTest.php new file mode 100644 index 0000000000000000000000000000000000000000..ea39e96b87989608f1e29500a60905aa0843b406 --- /dev/null +++ b/core/modules/menu_link_content/tests/src/Unit/MenuLinkContentEntityAccessTest.php @@ -0,0 +1,54 @@ +<?php + +namespace Drupal\Tests\menu_link_content\Unit; + +use Drupal\Core\Access\AccessManagerInterface; +use Drupal\Core\Access\AccessResultInterface; +use Drupal\Core\Entity\ContentEntityInterface; +use Drupal\Core\Entity\EntityTypeInterface; +use Drupal\Core\Extension\ModuleHandlerInterface; +use Drupal\Core\Language\LanguageInterface; +use Drupal\Core\Session\AccountInterface; +use Drupal\menu_link_content\MenuLinkContentAccessControlHandler; +use Drupal\Tests\UnitTestCase; + +/** + * Tests menu link content entity access. + * + * @coversDefaultClass \Drupal\menu_link_content\MenuLinkContentAccessControlHandler + * @group menu_link_content + */ +class MenuLinkContentEntityAccessTest extends UnitTestCase { + + /** + * Tests an operation not implemented by the access control handler. + * + * @covers ::checkAccess + */ + public function testUnrecognizedOperation() { + $entityType = $this->createMock(EntityTypeInterface::class); + $accessManager = $this->createMock(AccessManagerInterface::class); + $moduleHandler = $this->createMock(ModuleHandlerInterface::class); + $moduleHandler->expects($this->any()) + ->method('invokeAll') + ->willReturn([]); + + $language = $this->createMock(LanguageInterface::class); + $language->expects($this->any()) + ->method('getId') + ->will($this->returnValue('de')); + + $entity = $this->createMock(ContentEntityInterface::class); + $entity->expects($this->any()) + ->method('language') + ->willReturn($language); + + $account = $this->createMock(AccountInterface::class); + + $accessControl = new MenuLinkContentAccessControlHandler($entityType, $accessManager); + $accessControl->setModuleHandler($moduleHandler); + $access = $accessControl->access($entity, 'not-an-op', $account, TRUE); + $this->assertInstanceOf(AccessResultInterface::class, $access); + } + +}