Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / file / tests / src / Functional / FileManagedAccessTest.php
1 <?php
2
3 namespace Drupal\Tests\file\Functional;
4
5 use Drupal\file\Entity\File;
6 use Drupal\user\Entity\Role;
7
8 /**
9  * Tests access to managed files.
10  *
11  * @group file
12  */
13 class FileManagedAccessTest extends FileManagedTestBase {
14
15   /**
16    * {@inheritdoc}
17    */
18   protected function setUp() {
19     parent::setUp();
20
21     // Give anonymous users permission to access content, so they can view and
22     // download public files.
23     $anonymous_role = Role::load(Role::ANONYMOUS_ID);
24     $anonymous_role->grantPermission('access content');
25     $anonymous_role->save();
26   }
27
28   /**
29    * Tests if public file is always accessible.
30    */
31   public function testFileAccess() {
32     // Create a new file entity.
33     $file = File::create([
34       'uid' => 1,
35       'filename' => 'drupal.txt',
36       'uri' => 'public://drupal.txt',
37       'filemime' => 'text/plain',
38       'status' => FILE_STATUS_PERMANENT,
39     ]);
40     file_put_contents($file->getFileUri(), 'hello world');
41
42     // Save it, inserting a new record.
43     $file->save();
44
45     // Create authenticated user to check file access.
46     $account = $this->createUser(['access site reports', 'access content']);
47
48     $this->assertTrue($file->access('view', $account), 'Public file is viewable to authenticated user');
49     $this->assertTrue($file->access('download', $account), 'Public file is downloadable to authenticated user');
50
51     // Create anonymous user to check file access.
52     $account = $this->createUser()->getAnonymousUser();
53
54     $this->assertTrue($file->access('view', $account), 'Public file is viewable to anonymous user');
55     $this->assertTrue($file->access('download', $account), 'Public file is downloadable to anonymous user');
56
57     // Create a new file entity.
58     $file = File::create([
59       'uid' => 1,
60       'filename' => 'drupal.txt',
61       'uri' => 'private://drupal.txt',
62       'filemime' => 'text/plain',
63       'status' => FILE_STATUS_PERMANENT,
64     ]);
65     file_put_contents($file->getFileUri(), 'hello world');
66
67     // Save it, inserting a new record.
68     $file->save();
69
70     // Create authenticated user to check file access.
71     $account = $this->createUser(['access site reports', 'access content']);
72
73     $this->assertFalse($file->access('view', $account), 'Private file is not viewable to authenticated user');
74     $this->assertFalse($file->access('download', $account), 'Private file is not downloadable to authenticated user');
75
76     // Create anonymous user to check file access.
77     $account = $this->createUser()->getAnonymousUser();
78
79     $this->assertFalse($file->access('view', $account), 'Private file is not viewable to anonymous user');
80     $this->assertFalse($file->access('download', $account), 'Private file is not downloadable to anonymous user');
81   }
82
83 }