You are here

function FileManagedAccessTest::testFileAccess in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/modules/file/src/Tests/FileManagedAccessTest.php \Drupal\file\Tests\FileManagedAccessTest::testFileAccess()

Tests if public file is always accessible.

File

core/modules/file/src/Tests/FileManagedAccessTest.php, line 22
Contains \Drupal\file\Tests\FileManagedAccessTest.

Class

FileManagedAccessTest
Tests access to managed files.

Namespace

Drupal\file\Tests

Code

function testFileAccess() {

  // Create a new file entity.
  $file = File::create(array(
    'uid' => 1,
    'filename' => 'drupal.txt',
    'uri' => 'public://drupal.txt',
    'filemime' => 'text/plain',
    'status' => FILE_STATUS_PERMANENT,
  ));
  file_put_contents($file
    ->getFileUri(), 'hello world');

  // Save it, inserting a new record.
  $file
    ->save();

  // Create authenticated user to check file access.
  $account = $this
    ->createUser(array(
    'access site reports',
  ));
  $this
    ->assertTrue($file
    ->access('view', $account), 'Public file is viewable to authenticated user');
  $this
    ->assertTrue($file
    ->access('download', $account), 'Public file is downloadable to authenticated user');

  // Create anonymous user to check file access.
  $account = $this
    ->createUser()
    ->getAnonymousUser();
  $this
    ->assertTrue($file
    ->access('view', $account), 'Public file is viewable to anonymous user');
  $this
    ->assertTrue($file
    ->access('download', $account), 'Public file is downloadable to anonymous user');

  // Create a new file entity.
  $file = File::create(array(
    'uid' => 1,
    'filename' => 'drupal.txt',
    'uri' => 'private://drupal.txt',
    'filemime' => 'text/plain',
    'status' => FILE_STATUS_PERMANENT,
  ));
  file_put_contents($file
    ->getFileUri(), 'hello world');

  // Save it, inserting a new record.
  $file
    ->save();

  // Create authenticated user to check file access.
  $account = $this
    ->createUser(array(
    'access site reports',
  ));
  $this
    ->assertFalse($file
    ->access('view', $account), 'Private file is not viewable to authenticated user');
  $this
    ->assertFalse($file
    ->access('download', $account), 'Private file is not downloadable to authenticated user');

  // Create anonymous user to check file access.
  $account = $this
    ->createUser()
    ->getAnonymousUser();
  $this
    ->assertFalse($file
    ->access('view', $account), 'Private file is not viewable to anonymous user');
  $this
    ->assertFalse($file
    ->access('download', $account), 'Private file is not downloadable to anonymous user');
}