b774fb599aa49a2f74d3238de7183ccb3c57ae6b
[yaffs-website] / web / modules / contrib / media_entity / tests / src / Functional / MediaAccessTest.php
1 <?php
2
3 namespace Drupal\Tests\media_entity\Functional;
4
5 use Drupal\media_entity\Entity\Media;
6 use Drupal\user\Entity\Role;
7
8 /**
9  * Basic access tests for Media Entity.
10  *
11  * @group media_entity
12  */
13 class MediaAccessTest extends MediaEntityFunctionalTestBase {
14
15   /**
16    * The test media bundle.
17    *
18    * @var \Drupal\media_entity\MediaBundleInterface
19    */
20   protected $testBundle;
21
22   /**
23    * {@inheritdoc}
24    */
25   protected function setUp() {
26     parent::setUp();
27     $this->testBundle = $this->drupalCreateMediaBundle();
28   }
29
30   /**
31    * Test some access control functionality.
32    */
33   public function testMediaAccess() {
34
35     $assert_session = $this->assertSession();
36
37     // Create media.
38     $media = Media::create([
39       'bundle' => $this->testBundle->id(),
40       'name' => 'Unnamed',
41     ]);
42     $media->save();
43     $user_media = Media::create([
44       'bundle' => $this->testBundle->id(),
45       'name' => 'Unnamed',
46       'uid' => $this->nonAdminUser->id(),
47     ]);
48     $user_media->save();
49
50     // We are logged-in as admin, so test 'administer media' permission.
51     $this->drupalGet('media/' . $user_media->id());
52     $assert_session->statusCodeEquals(200);
53     $this->drupalGet('media/' . $user_media->id() . '/edit');
54     $assert_session->statusCodeEquals(200);
55     $this->drupalGet('media/' . $user_media->id() . '/delete');
56     $assert_session->statusCodeEquals(200);
57
58     $this->drupalLogin($this->nonAdminUser);
59     /** @var \Drupal\user\RoleInterface $role */
60     $role = Role::load('authenticated');
61
62     // Test 'view media' permission.
63     $this->drupalGet('media/' . $media->id());
64     $assert_session->statusCodeEquals(403);
65     $this->grantPermissions($role, ['view media']);
66     $this->drupalGet('media/' . $media->id());
67     $assert_session->statusCodeEquals(200);
68
69     // Test 'create media' permission.
70     $this->drupalGet('media/add/' . $this->testBundle->id());
71     $assert_session->statusCodeEquals(403);
72     $this->grantPermissions($role, ['create media']);
73     $this->drupalGet('media/add/' . $this->testBundle->id());
74     $assert_session->statusCodeEquals(200);
75
76     // Test 'update media' and 'delete media' permissions.
77     $this->drupalGet('media/' . $user_media->id() . '/edit');
78     $assert_session->statusCodeEquals(403);
79     $this->drupalGet('media/' . $user_media->id() . '/delete');
80     $assert_session->statusCodeEquals(403);
81     $this->grantPermissions($role, ['update media']);
82     $this->grantPermissions($role, ['delete media']);
83     $this->drupalGet('media/' . $user_media->id() . '/edit');
84     $assert_session->statusCodeEquals(200);
85     $this->drupalGet('media/' . $user_media->id() . '/delete');
86     $assert_session->statusCodeEquals(200);
87
88     // Test 'update any media' and 'delete any media' permissions.
89     $this->drupalGet('media/' . $media->id() . '/edit');
90     $assert_session->statusCodeEquals(403);
91     $this->drupalGet('media/' . $media->id() . '/delete');
92     $assert_session->statusCodeEquals(403);
93     $this->grantPermissions($role, ['update any media']);
94     $this->grantPermissions($role, ['delete any media']);
95     $this->drupalGet('media/' . $media->id() . '/edit');
96     $assert_session->statusCodeEquals(200);
97     $this->drupalGet('media/' . $media->id() . '/delete');
98     $assert_session->statusCodeEquals(200);
99
100   }
101
102 }