comparison core/modules/media/tests/src/Functional/MediaAccessTest.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents 4c8ae668cc8c
children 129ea1e6d783
comparison
equal deleted inserted replaced
13:5fb285c0d0e3 14:1fec387a4317
10 /** 10 /**
11 * Basic access tests for Media. 11 * Basic access tests for Media.
12 * 12 *
13 * @group media 13 * @group media
14 */ 14 */
15 class MediaAccessTest extends MediaUiFunctionalTest { 15 class MediaAccessTest extends MediaFunctionalTestBase {
16 16
17 use AssertPageCacheContextsAndTagsTrait; 17 use AssertPageCacheContextsAndTagsTrait;
18
19 /**
20 * {@inheritdoc}
21 */
22 public static $modules = [
23 'block',
24 'media_test_source',
25 ];
26
27 /**
28 * {@inheritdoc}
29 */
30 protected function setUp() {
31 parent::setUp();
32 // This is needed to provide the user cache context for a below assertion.
33 $this->drupalPlaceBlock('local_tasks_block');
34 }
18 35
19 /** 36 /**
20 * Test some access control functionality. 37 * Test some access control functionality.
21 */ 38 */
22 public function testMediaAccess() { 39 public function testMediaAccess() {
62 $assert_session->statusCodeEquals(403); 79 $assert_session->statusCodeEquals(403);
63 $access_result = $media->access('view', NULL, TRUE); 80 $access_result = $media->access('view', NULL, TRUE);
64 $this->assertSame("The 'view media' permission is required and the media item must be published.", $access_result->getReason()); 81 $this->assertSame("The 'view media' permission is required and the media item must be published.", $access_result->getReason());
65 $this->grantPermissions($role, ['view media']); 82 $this->grantPermissions($role, ['view media']);
66 $this->drupalGet('media/' . $media->id()); 83 $this->drupalGet('media/' . $media->id());
67 $this->assertCacheContext('user'); 84 $this->assertCacheContext('user.permissions');
68 $assert_session->statusCodeEquals(200); 85 $assert_session->statusCodeEquals(200);
86
87 // Test 'create BUNDLE media' permission.
88 $this->drupalGet('media/add/' . $media_type->id());
89 $this->assertCacheContext('user.permissions');
90 $assert_session->statusCodeEquals(403);
91 $permissions = ['create ' . $media_type->id() . ' media'];
92 $this->grantPermissions($role, $permissions);
93 $this->drupalGet('media/add/' . $media_type->id());
94 $this->assertCacheContext('user.permissions');
95 $assert_session->statusCodeEquals(200);
96 user_role_revoke_permissions($role->id(), $permissions);
97 $role = Role::load(RoleInterface::AUTHENTICATED_ID);
69 98
70 // Test 'create media' permission. 99 // Test 'create media' permission.
71 $this->drupalGet('media/add/' . $media_type->id()); 100 $this->drupalGet('media/add/' . $media_type->id());
72 $this->assertCacheContext('user.permissions'); 101 $this->assertCacheContext('user.permissions');
73 $assert_session->statusCodeEquals(403); 102 $assert_session->statusCodeEquals(403);
74 $this->grantPermissions($role, ['create media']); 103 $permissions = ['create media'];
104 $this->grantPermissions($role, $permissions);
75 $this->drupalGet('media/add/' . $media_type->id()); 105 $this->drupalGet('media/add/' . $media_type->id());
76 $this->assertCacheContext('user.permissions'); 106 $this->assertCacheContext('user.permissions');
77 $assert_session->statusCodeEquals(200); 107 $assert_session->statusCodeEquals(200);
108 user_role_revoke_permissions($role->id(), $permissions);
109 $role = Role::load(RoleInterface::AUTHENTICATED_ID);
78 110
79 // Test 'update media' and 'delete media' permissions. 111 // Test 'edit own BUNDLE media' and 'delete own BUNDLE media' permissions.
80 $this->drupalGet('media/' . $user_media->id() . '/edit'); 112 $this->drupalGet('media/' . $user_media->id() . '/edit');
81 $this->assertCacheContext('user'); 113 $this->assertCacheContext('user.permissions');
82 $assert_session->statusCodeEquals(403); 114 $assert_session->statusCodeEquals(403);
83 $this->drupalGet('media/' . $user_media->id() . '/delete'); 115 $this->drupalGet('media/' . $user_media->id() . '/delete');
84 $this->assertCacheContext('user'); 116 $this->assertCacheContext('user.permissions');
85 $assert_session->statusCodeEquals(403); 117 $assert_session->statusCodeEquals(403);
86 $this->grantPermissions($role, ['update media']); 118 $permissions = [
87 $this->grantPermissions($role, ['delete media']); 119 'edit own ' . $user_media->bundle() . ' media',
120 'delete own ' . $user_media->bundle() . ' media',
121 ];
122 $this->grantPermissions($role, $permissions);
88 $this->drupalGet('media/' . $user_media->id() . '/edit'); 123 $this->drupalGet('media/' . $user_media->id() . '/edit');
89 $this->assertCacheContext('user'); 124 $this->assertCacheContext('user');
90 $assert_session->statusCodeEquals(200); 125 $assert_session->statusCodeEquals(200);
91 $this->drupalGet('media/' . $user_media->id() . '/delete'); 126 $this->drupalGet('media/' . $user_media->id() . '/delete');
92 $this->assertCacheContext('user'); 127 $this->assertCacheContext('user');
93 $assert_session->statusCodeEquals(200); 128 $assert_session->statusCodeEquals(200);
129 user_role_revoke_permissions($role->id(), $permissions);
130 $role = Role::load(RoleInterface::AUTHENTICATED_ID);
94 131
95 // Test 'update any media' and 'delete any media' permissions. 132 // Test 'edit any BUNDLE media' and 'delete any BUNDLE media' permissions.
96 $this->drupalGet('media/' . $media->id() . '/edit'); 133 $this->drupalGet('media/' . $media->id() . '/edit');
97 $this->assertCacheContext('user'); 134 $this->assertCacheContext('user.permissions');
98 $assert_session->statusCodeEquals(403); 135 $assert_session->statusCodeEquals(403);
99 $this->drupalGet('media/' . $media->id() . '/delete'); 136 $this->drupalGet('media/' . $media->id() . '/delete');
100 $this->assertCacheContext('user'); 137 $this->assertCacheContext('user.permissions');
101 $assert_session->statusCodeEquals(403); 138 $assert_session->statusCodeEquals(403);
102 $this->grantPermissions($role, ['update any media']); 139 $permissions = [
103 $this->grantPermissions($role, ['delete any media']); 140 'edit any ' . $media->bundle() . ' media',
141 'delete any ' . $media->bundle() . ' media',
142 ];
143 $this->grantPermissions($role, $permissions);
104 $this->drupalGet('media/' . $media->id() . '/edit'); 144 $this->drupalGet('media/' . $media->id() . '/edit');
105 $this->assertCacheContext('user.permissions'); 145 $this->assertCacheContext('user.permissions');
106 $assert_session->statusCodeEquals(200); 146 $assert_session->statusCodeEquals(200);
107 $this->drupalGet('media/' . $media->id() . '/delete'); 147 $this->drupalGet('media/' . $media->id() . '/delete');
108 $this->assertCacheContext('user.permissions'); 148 $this->assertCacheContext('user.permissions');