Upgraded imagemagick and manually altered pdf to image module to handle changes....
[yaffs-website] / web / modules / contrib / entity / tests / src / Unit / UncacheableEntityPermissionProviderTest.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\UncacheableEntityPermissionProvider;
10 use Drupal\Tests\UnitTestCase;
11 use Drupal\user\EntityOwnerInterface;
12
13 /**
14  * @coversDefaultClass \Drupal\entity\UncacheableEntityPermissionProvider
15  * @group entity
16  */
17 class UncacheableEntityPermissionProviderTest 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 UncacheableEntityPermissionProvider($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 any green_entity' => 'View any 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 any blue_entity' => 'View any blue entities',
106       'view own blue_entity' => 'View own blue entities',
107     ];
108     $data[] = [$entity_type->reveal(), $expected_permissions];
109
110     // Content entity type with bundles.
111     $entity_type = $this->prophesize(ContentEntityTypeInterface::class);
112     $entity_type->getProvider()->willReturn('entity_module_test');
113     $entity_type->id()->willReturn('white_entity');
114     $entity_type->getSingularLabel()->willReturn('white entity');
115     $entity_type->getPluralLabel()->willReturn('white entities');
116     $entity_type->entityClassImplements(EntityOwnerInterface::class)->willReturn(FALSE);
117     $entity_type->entityClassImplements(EntityPublishedInterface::class)->willReturn(FALSE);
118     $entity_type->getPermissionGranularity()->willReturn('bundle');
119     $expected_permissions = [
120       'administer white_entity' => 'Administer white entities',
121       'access white_entity overview' => 'Access the white entities overview page',
122       'create first white_entity' => 'First: Create white entities',
123       'update first white_entity' => 'First: Update white entities',
124       'delete first white_entity' => 'First: Delete white entities',
125       'create second white_entity' => 'Second: Create white entities',
126       'update second white_entity' => 'Second: Update white entities',
127       'delete second white_entity' => 'Second: Delete white entities',
128       'view any white_entity' => 'View any white entities',
129       'view any first white_entity' => 'First: View any white entities',
130       'view any second white_entity' => 'Second: View any white entities',
131     ];
132     $data[] = [$entity_type->reveal(), $expected_permissions];
133
134     // Content entity type with bundles and owner.
135     $entity_type = $this->prophesize(ContentEntityTypeInterface::class);
136     $entity_type->getProvider()->willReturn('entity_module_test');
137     $entity_type->id()->willReturn('black_entity');
138     $entity_type->getSingularLabel()->willReturn('black entity');
139     $entity_type->getPluralLabel()->willReturn('black entities');
140     $entity_type->entityClassImplements(EntityOwnerInterface::class)->willReturn(TRUE);
141     $entity_type->entityClassImplements(EntityPublishedInterface::class)->willReturn(FALSE);
142     $entity_type->getPermissionGranularity()->willReturn('bundle');
143     $expected_permissions = [
144       'administer black_entity' => 'Administer black entities',
145       'access black_entity overview' => 'Access the black entities overview page',
146       'create third black_entity' => 'Third: Create black entities',
147       'update any third black_entity' => 'Third: Update any black entity',
148       'update own third black_entity' => 'Third: Update own black entities',
149       'delete any third black_entity' => 'Third: Delete any black entity',
150       'delete own third black_entity' => 'Third: Delete own black entities',
151       'view any black_entity' => 'View any black entities',
152       'view own black_entity' => 'View own black entities',
153       'view any third black_entity' => 'Third: View any black entities',
154       'view own third black_entity' => 'Third: View own black entities',
155     ];
156     $data[] = [$entity_type->reveal(), $expected_permissions];
157
158     // Content entity type with bundles and owner and entity published.
159     $entity_type = $this->prophesize(ContentEntityTypeInterface::class);
160     $entity_type->getProvider()->willReturn('entity_module_test');
161     $entity_type->id()->willReturn('pink_entity');
162     $entity_type->getSingularLabel()->willReturn('pink entity');
163     $entity_type->getPluralLabel()->willReturn('pink entities');
164     $entity_type->entityClassImplements(EntityOwnerInterface::class)->willReturn(TRUE);
165     $entity_type->entityClassImplements(EntityPublishedInterface::class)->willReturn(TRUE);
166     $entity_type->getPermissionGranularity()->willReturn('bundle');
167     $expected_permissions = [
168       'administer pink_entity' => 'Administer pink entities',
169       'access pink_entity overview' => 'Access the pink entities overview page',
170       'view own unpublished pink_entity' => 'View own unpublished pink entities',
171       'create third pink_entity' => 'Third: Create pink entities',
172       'update any third pink_entity' => 'Third: Update any pink entity',
173       'update own third pink_entity' => 'Third: Update own pink entities',
174       'delete any third pink_entity' => 'Third: Delete any pink entity',
175       'delete own third pink_entity' => 'Third: Delete own pink entities',
176       'view any pink_entity' => 'View any pink entities',
177       'view own pink_entity' => 'View own pink entities',
178       'view any third pink_entity' => 'Third: View any pink entities',
179       'view own third pink_entity' => 'Third: View own pink entities',
180     ];
181     $data[] = [$entity_type->reveal(), $expected_permissions];
182
183     return $data;
184   }
185
186 }