You are here

public function FileSaveHtaccessLoggingTest::testHtaccessSave in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/system/tests/src/Functional/File/FileSaveHtaccessLoggingTest.php \Drupal\Tests\system\Functional\File\FileSaveHtaccessLoggingTest::testHtaccessSave()
  2. 9 core/modules/system/tests/src/Functional/File/FileSaveHtaccessLoggingTest.php \Drupal\Tests\system\Functional\File\FileSaveHtaccessLoggingTest::testHtaccessSave()

Tests file_save_htaccess().

File

core/modules/system/tests/src/Functional/File/FileSaveHtaccessLoggingTest.php, line 25

Class

FileSaveHtaccessLoggingTest
Tests the log message added by file_save_htaccess().

Namespace

Drupal\Tests\system\Functional\File

Code

public function testHtaccessSave() {

  // Prepare test directories.
  $private = $this->publicFilesDirectory . '/test/private';

  // Verify that file_save_htaccess() returns FALSE if .htaccess cannot be
  // written and writes a correctly formatted message to the error log. Set
  // $private to TRUE so all possible .htaccess lines are written.

  /** @var \Drupal\Core\File\HtaccessWriterInterface $htaccess */
  $htaccess = \Drupal::service('file.htaccess_writer');
  $this
    ->assertFalse($htaccess
    ->write($private, TRUE));
  $this
    ->drupalLogin($this->rootUser);
  $this
    ->drupalGet('admin/reports/dblog');
  $this
    ->clickLink("Security warning: Couldn't write .htaccess file. Please…");
  $lines = FileSecurity::htaccessLines(TRUE);
  foreach (array_filter(explode("\n", $lines)) as $line) {
    $this
      ->assertSession()
      ->assertEscaped($line);
  }
}