01419d44630273d54cc77916363375823d14878a
[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
7 /**
8  * Tests access to managed files.
9  *
10  * @group file
11  */
12 class FileManagedAccessTest extends FileManagedTestBase {
13
14   /**
15    * Tests if public file is always accessible.
16    */
17   public function testFileAccess() {
18     // Create a new file entity.
19     $file = File::create([
20       'uid' => 1,
21       'filename' => 'drupal.txt',
22       'uri' => 'public://drupal.txt',
23       'filemime' => 'text/plain',
24       'status' => FILE_STATUS_PERMANENT,
25     ]);
26     file_put_contents($file->getFileUri(), 'hello world');
27
28     // Save it, inserting a new record.
29     $file->save();
30
31     // Create authenticated user to check file access.
32     $account = $this->createUser(['access site reports']);
33
34     $this->assertTrue($file->access('view', $account), 'Public file is viewable to authenticated user');
35     $this->assertTrue($file->access('download', $account), 'Public file is downloadable to authenticated user');
36
37     // Create anonymous user to check file access.
38     $account = $this->createUser()->getAnonymousUser();
39
40     $this->assertTrue($file->access('view', $account), 'Public file is viewable to anonymous user');
41     $this->assertTrue($file->access('download', $account), 'Public file is downloadable to anonymous user');
42
43     // Create a new file entity.
44     $file = File::create([
45       'uid' => 1,
46       'filename' => 'drupal.txt',
47       'uri' => 'private://drupal.txt',
48       'filemime' => 'text/plain',
49       'status' => FILE_STATUS_PERMANENT,
50     ]);
51     file_put_contents($file->getFileUri(), 'hello world');
52
53     // Save it, inserting a new record.
54     $file->save();
55
56     // Create authenticated user to check file access.
57     $account = $this->createUser(['access site reports']);
58
59     $this->assertFalse($file->access('view', $account), 'Private file is not viewable to authenticated user');
60     $this->assertFalse($file->access('download', $account), 'Private file is not downloadable to authenticated user');
61
62     // Create anonymous user to check file access.
63     $account = $this->createUser()->getAnonymousUser();
64
65     $this->assertFalse($file->access('view', $account), 'Private file is not viewable to anonymous user');
66     $this->assertFalse($file->access('download', $account), 'Private file is not downloadable to anonymous user');
67   }
68
69 }