X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Ftests%2FDrupal%2FKernelTests%2FCore%2FEntity%2FEntityAccessControlHandlerTest.php;fp=web%2Fcore%2Ftests%2FDrupal%2FKernelTests%2FCore%2FEntity%2FEntityAccessControlHandlerTest.php;h=b3af27fba28b71f500fd3c4471c9c7c4a5a721a1;hp=d7644b205954c183012bb6d6905b5562f0440a7e;hb=bfbba508964731508b9bd6d5835c2edc858db95b;hpb=cb9a80db11fc6b014e5b1e693a5a391c95eb5d9a diff --git a/web/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php b/web/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php index d7644b205..b3af27fba 100644 --- a/web/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php +++ b/web/core/tests/Drupal/KernelTests/Core/Entity/EntityAccessControlHandlerTest.php @@ -9,7 +9,9 @@ use Drupal\Core\Entity\EntityAccessControlHandler; use Drupal\Core\Session\AnonymousUserSession; use Drupal\entity_test\Entity\EntityTest; use Drupal\entity_test\Entity\EntityTestDefaultAccess; +use Drupal\entity_test\Entity\EntityTestNoUuid; use Drupal\entity_test\Entity\EntityTestLabel; +use Drupal\entity_test\Entity\EntityTestRev; use Drupal\language\Entity\ConfigurableLanguage; use Drupal\user\Entity\User; @@ -20,6 +22,16 @@ use Drupal\user\Entity\User; */ class EntityAccessControlHandlerTest extends EntityLanguageTestBase { + /** + * {@inheritdoc} + */ + public function setUp() { + parent::setUp(); + + $this->installEntitySchema('entity_test_no_uuid'); + $this->installEntitySchema('entity_test_rev'); + } + /** * Asserts entity access correctly grants or denies access. */ @@ -199,6 +211,64 @@ class EntityAccessControlHandlerTest extends EntityLanguageTestBase { ], $translation); } + /** + * Ensures the static access cache works correctly in the absence of an UUID. + * + * @see entity_test_entity_access() + */ + public function testEntityWithoutUuidAccessCache() { + $account = $this->createUser(); + + $entity1 = EntityTestNoUuid::create([ + 'name' => 'Accessible', + ]); + $entity1->save(); + + $entity2 = EntityTestNoUuid::create([ + 'name' => 'Inaccessible', + ]); + $entity2->save(); + + $this->assertTrue($entity1->access('delete', $account), 'Entity 1 can be deleted.'); + $this->assertFalse($entity2->access('delete', $account), 'Entity 2 CANNOT be deleted.'); + + $entity1 + ->setName('Inaccessible') + ->setNewRevision(); + $entity1->save(); + + $this->assertFalse($entity1->access('delete', $account), 'Entity 1 revision 2 CANNOT be deleted.'); + } + + /** + * Ensures the static access cache works correctly with a UUID and revisions. + * + * @see entity_test_entity_access() + */ + public function testEntityWithUuidAccessCache() { + $account = $this->createUser(); + + $entity1 = EntityTestRev::create([ + 'name' => 'Accessible', + ]); + $entity1->save(); + + $entity2 = EntityTestRev::create([ + 'name' => 'Inaccessible', + ]); + $entity2->save(); + + $this->assertTrue($entity1->access('delete', $account), 'Entity 1 can be deleted.'); + $this->assertFalse($entity2->access('delete', $account), 'Entity 2 CANNOT be deleted.'); + + $entity1 + ->setName('Inaccessible') + ->setNewRevision(); + $entity1->save(); + + $this->assertFalse($entity1->access('delete', $account), 'Entity 1 revision 2 CANNOT be deleted.'); + } + /** * Tests hook invocations. */