function FileStorageReadOnlyTest::testReadOnly

Same name in other branches
  1. 8.9.x core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php \Drupal\Tests\Component\PhpStorage\FileStorageReadOnlyTest::testReadOnly()
  2. 10 core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php \Drupal\Tests\Component\PhpStorage\FileStorageReadOnlyTest::testReadOnly()
  3. 11.x core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php \Drupal\Tests\Component\PhpStorage\FileStorageReadOnlyTest::testReadOnly()

Tests writing with one class and reading with another.

File

core/tests/Drupal/Tests/Component/PhpStorage/FileStorageReadOnlyTest.php, line 51

Class

FileStorageReadOnlyTest
@coversDefaultClass \Drupal\Component\PhpStorage\FileReadOnlyStorage

Namespace

Drupal\Tests\Component\PhpStorage

Code

public function testReadOnly() {
    // Random generator.
    $random = new Random();
    $php = new FileStorage($this->standardSettings);
    $name = $random->name(8, TRUE) . '/' . $random->name(8, TRUE) . '.php';
    // Find a global that doesn't exist.
    do {
        $random = 'test' . mt_rand(10000, 100000);
    } while (isset($GLOBALS[$random]));
    // Write out a PHP file and ensure it's successfully loaded.
    $code = "<?php\n\$GLOBALS['{$random}'] = TRUE;";
    $success = $php->save($name, $code);
    $this->assertTrue($success);
    $php_read = new FileReadOnlyStorage($this->readonlyStorage);
    $php_read->load($name);
    $this->assertTrue($GLOBALS[$random]);
    // If the file was successfully loaded, it must also exist, but ensure the
    // exists() method returns that correctly.
    $this->assertTrue($php_read->exists($name));
    // Saving and deleting should always fail.
    $this->assertFalse($php_read->save($name, $code));
    $this->assertFalse($php_read->delete($name));
    unset($GLOBALS[$random]);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.