1.20.x file.test FileDownloadTest::testPrivateFileTransfer()

Test the private file transfer system.

File

modules/simpletest/tests/file.test, line 2517
This provides SimpleTests for the core file handling functionality. These include FileValidateTest and FileSaveTest.

Class

FileDownloadTest
Tests for download/file transfer functions.

Code

function testPrivateFileTransfer() {
  // Set file downloads to private so handler functions get called.

  // Create a file.
  $contents = $this->randomName(8);
  $file = $this->createFile(NULL, $contents, 'private');
  $url = file_create_url($file->uri);

  // Set file_test access header to allow the download.
  file_test_set_return('download', array('x-foo' => 'Bar'));
  $this->backdropGet($url);
  $headers = $this->backdropGetHeaders();
  $this->assertEqual($headers['x-foo'], 'Bar', 'Found header set by file_test module on private download.');
  $this->assertResponse(200, 'Correctly allowed access to a file when file_test provides headers.');

  // Test that the file transferred correctly.
  $this->assertEqual($contents, $this->content, 'Contents of the file are correct.');

  // Deny access to all downloads via a -1 header.
  file_test_set_return('download', -1);
  $this->backdropHead($url);
  $this->assertResponse(403, 'Correctly denied access to a file when file_test sets the header to -1.');

  // Try non-existent file.
  $url = file_create_url('private://' . $this->randomName());
  $this->backdropHead($url);
  $this->assertResponse(404, 'Correctly returned 404 response for a non-existent file.');
}