Upgraded imagemagick and manually altered pdf to image module to handle changes....
[yaffs-website] / web / modules / contrib / entity / tests / src / Unit / EntityPermissionProviderTest.php
1 <?php
2
3 namespace Drupal\Tests\entity\Unit;
4
5 use Drupal\Core\Entity\ContentEntityTypeInterface;
6 use Drupal\Core\Entity\EntityPublishedInterface;
7 use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
8 use Drupal\Core\Entity\EntityTypeInterface;
9 use Drupal\entity\EntityPermissionProvider;
10 use Drupal\Tests\UnitTestCase;
11 use Drupal\user\EntityOwnerInterface;
12
13 /**
14  * @coversDefaultClass \Drupal\entity\EntityPermissionProvider
15  * @group entity
16  */
17 class EntityPermissionProviderTest extends UnitTestCase {
18
19   /**
20    * The entity permission provider.
21    *
22    * @var \Drupal\entity\EntityPermissionProviderInterface
23    */
24   protected $permissionProvider;
25
26   /**
27    * {@inheritdoc}
28    */
29   protected function setUp() {
30     parent::setUp();
31
32     $entity_type_bundle_info = $this->prophesize(EntityTypeBundleInfoInterface::class);
33     $entity_type_bundle_info->getBundleInfo('white_entity')->willReturn([
34       'first' => ['label' => 'First'],
35       'second' => ['label' => 'Second'],
36     ]);
37     $entity_type_bundle_info->getBundleInfo('black_entity')->willReturn([
38       'third' => ['label' => 'Third'],
39     ]);
40     $entity_type_bundle_info->getBundleInfo('pink_entity')->willReturn([
41       'third' => ['label' => 'Third'],
42     ]);
43     $this->permissionProvider = new EntityPermissionProvider($entity_type_bundle_info->reveal());
44     $this->permissionProvider->setStringTranslation($this->getStringTranslationStub());
45   }
46
47   /**
48    * @covers ::buildPermissions
49    *
50    * @dataProvider entityTypeProvider
51    */
52   public function testBuildPermissions(EntityTypeInterface $entity_type, array $expected_permissions) {
53     $permissions = $this->permissionProvider->buildPermissions($entity_type);
54     $this->assertEquals(array_keys($expected_permissions), array_keys($permissions));
55     foreach ($permissions as $name => $permission) {
56       $this->assertEquals('entity_module_test', $permission['provider']);
57       $this->assertEquals($expected_permissions[$name], $permission['title']);
58     }
59   }
60
61   /**
62    * Data provider for testBuildPermissions().
63    *
64    * @return array
65    *   A list of testBuildPermissions method arguments.
66    */
67   public function entityTypeProvider() {
68     $data = [];
69     // Content entity type.
70     $entity_type = $this->prophesize(ContentEntityTypeInterface::class);
71     $entity_type->getProvider()->willReturn('entity_module_test');
72     $entity_type->id()->willReturn('green_entity');
73     $entity_type->getSingularLabel()->willReturn('green entity');
74     $entity_type->getPluralLabel()->willReturn('green entities');
75     $entity_type->entityClassImplements(EntityOwnerInterface::class)->willReturn(FALSE);
76     $entity_type->entityClassImplements(EntityPublishedInterface::class)->willReturn(FALSE);
77     $entity_type->getPermissionGranularity()->willReturn('entity_type');
78     $expected_permissions = [
79       'administer green_entity' => 'Administer green entities',
80       'access green_entity overview' => 'Access the green entities overview page',
81       'create green_entity' => 'Create green entities',
82       'update green_entity' => 'Update green entities',
83       'delete green_entity' => 'Delete green entities',
84       'view green_entity' => 'View green entities',
85     ];
86     $data[] = [$entity_type->reveal(), $expected_permissions];
87
88     // Content entity type with owner.
89     $entity_type = $this->prophesize(ContentEntityTypeInterface::class);
90     $entity_type->getProvider()->willReturn('entity_module_test');
91     $entity_type->id()->willReturn('blue_entity');
92     $entity_type->getSingularLabel()->willReturn('blue entity');
93     $entity_type->getPluralLabel()->willReturn('blue entities');
94     $entity_type->entityClassImplements(EntityOwnerInterface::class)->willReturn(TRUE);
95     $entity_type->entityClassImplements(EntityPublishedInterface::class)->willReturn(FALSE);
96     $entity_type->getPermissionGranularity()->willReturn('entity_type');
97     $expected_permissions = [
98       'administer blue_entity' => 'Administer blue entities',
99       'access blue_entity overview' => 'Access the blue entities overview page',
100       'create blue_entity' => 'Create blue entities',
101       'update any blue_entity' => 'Update any blue entity',
102       'update own blue_entity' => 'Update own blue entities',
103       'delete any blue_entity' => 'Delete any blue entity',
104       'delete own blue_entity' => 'Delete own blue entities',
105       'view blue_entity' => 'View blue entities',
106     ];
107     $data[] = [$entity_type->reveal(), $expected_permissions];
108
109     // Content entity type with bundles.
110     $entity_type = $this->prophesize(ContentEntityTypeInterface::class);
111     $entity_type->getProvider()->willReturn('entity_module_test');
112     $entity_type->id()->willReturn('white_entity');
113     $entity_type->getSingularLabel()->willReturn('white entity');
114     $entity_type->getPluralLabel()->willReturn('white entities');
115     $entity_type->entityClassImplements(EntityOwnerInterface::class)->willReturn(FALSE);
116     $entity_type->entityClassImplements(EntityPublishedInterface::class)->willReturn(FALSE);
117     $entity_type->getPermissionGranularity()->willReturn('bundle');
118     $expected_permissions = [
119       'administer white_entity' => 'Administer white entities',
120       'access white_entity overview' => 'Access the white entities overview page',
121       'create first white_entity' => 'First: Create white entities',
122       'update first white_entity' => 'First: Update white entities',
123       'delete first white_entity' => 'First: Delete white entities',
124       'create second white_entity' => 'Second: Create white entities',
125       'update second white_entity' => 'Second: Update white entities',
126       'delete second white_entity' => 'Second: Delete white entities',
127       'view white_entity' => 'View white entities',
128     ];
129     $data[] = [$entity_type->reveal(), $expected_permissions];
130
131     // Content entity type with bundles and owner.
132     $entity_type = $this->prophesize(ContentEntityTypeInterface::class);
133     $entity_type->getProvider()->willReturn('entity_module_test');
134     $entity_type->id()->willReturn('black_entity');
135     $entity_type->getSingularLabel()->willReturn('black entity');
136     $entity_type->getPluralLabel()->willReturn('black entities');
137     $entity_type->entityClassImplements(EntityOwnerInterface::class)->willReturn(TRUE);
138     $entity_type->entityClassImplements(EntityPublishedInterface::class)->willReturn(FALSE);
139     $entity_type->getPermissionGranularity()->willReturn('bundle');
140     $expected_permissions = [
141       'administer black_entity' => 'Administer black entities',
142       'access black_entity overview' => 'Access the black entities overview page',
143       'create third black_entity' => 'Third: Create black entities',
144       'update any third black_entity' => 'Third: Update any black entity',
145       'update own third black_entity' => 'Third: Update own black entities',
146       'delete any third black_entity' => 'Third: Delete any black entity',
147       'delete own third black_entity' => 'Third: Delete own black entities',
148       'view black_entity' => 'View black entities',
149     ];
150     $data[] = [$entity_type->reveal(), $expected_permissions];
151
152     // Content entity type with bundles and owner and entity published.
153     $entity_type = $this->prophesize(ContentEntityTypeInterface::class);
154     $entity_type->getProvider()->willReturn('entity_module_test');
155     $entity_type->id()->willReturn('pink_entity');
156     $entity_type->getSingularLabel()->willReturn('pink entity');
157     $entity_type->getPluralLabel()->willReturn('pink entities');
158     $entity_type->entityClassImplements(EntityOwnerInterface::class)->willReturn(TRUE);
159     $entity_type->entityClassImplements(EntityPublishedInterface::class)->willReturn(TRUE);
160     $entity_type->getPermissionGranularity()->willReturn('bundle');
161     $expected_permissions = [
162       'administer pink_entity' => 'Administer pink entities',
163       'access pink_entity overview' => 'Access the pink entities overview page',
164       'view own unpublished pink_entity' => 'View own unpublished pink entities',
165       'create third pink_entity' => 'Third: Create pink entities',
166       'update any third pink_entity' => 'Third: Update any pink entity',
167       'update own third pink_entity' => 'Third: Update own pink entities',
168       'delete any third pink_entity' => 'Third: Delete any pink entity',
169       'delete own third pink_entity' => 'Third: Delete own pink entities',
170       'view pink_entity' => 'View pink entities',
171     ];
172     $data[] = [$entity_type->reveal(), $expected_permissions];
173
174     return $data;
175   }
176
177 }