You are here

function FileDirectoryTest::testFileCheckDirectory in SimpleTest 7

Test the file_directory_path() function.

File

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

Class

FileDirectoryTest
Directory related tests.

Code

function testFileCheckDirectory() {

  // A directory to operate on.
  $directory = file_directory_path() . '/' . $this
    ->randomName() . '/' . $this
    ->randomName();
  $this
    ->assertFalse(is_dir($directory), t('Directory does not exist prior to testing.'));

  // Non-existent directory.
  $this
    ->assertFalse(file_prepare_directory($directory, 0), t('Error reported for non-existing directory.'), 'File');

  // Make a directory.
  $this
    ->assertTrue(file_prepare_directory($directory, FILE_CREATE_DIRECTORY), t('No error reported when creating a new directory.'), 'File');

  // Make sure directory actually exists.
  $this
    ->assertTrue(is_dir($directory), t('Directory actually exists.'), 'File');

  // Make directory read only.
  @chmod($directory, 0444);
  $this
    ->assertFalse(file_prepare_directory($directory, 0), t('Error reported for a non-writeable directory.'), 'File');

  // Test directory permission modification.
  $this
    ->assertTrue(file_prepare_directory($directory, FILE_MODIFY_PERMISSIONS), t('No error reported when making directory writeable.'), 'File');

  // Test directory permission modification actually set correct permissions.
  $this
    ->assertDirectoryPermissions($directory, variable_get('file_chmod_directory', 0775));

  // Remove .htaccess file to then test that it gets re-created.
  $directory = file_directory_path();
  @unlink($directory . '/.htaccess');
  $this
    ->assertFalse(is_file($directory . '/.htaccess'), t('Successfully removed the .htaccess file in the files directory.'), 'File');
  file_ensure_htaccess();
  $this
    ->assertTrue(is_file($directory . '/.htaccess'), t('Successfully re-created the .htaccess file in the files directory.'), 'File');

  // Verify contents of .htaccess file.
  $file = file_get_contents(file_directory_path() . '/.htaccess');
  $this
    ->assertEqual($file, "SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006\nOptions None\nOptions +FollowSymLinks", t('The .htaccess file contains the proper content.'), 'File');
}