FileStorageTest.php in Drupal 10
File
core/tests/Drupal/Tests/Component/PhpStorage/FileStorageTest.php
View source
<?php
namespace Drupal\Tests\Component\PhpStorage;
use Drupal\Component\PhpStorage\FileStorage;
use Drupal\Component\Utility\Random;
use Drupal\Tests\Traits\PhpUnitWarnings;
use org\bovigo\vfs\vfsStreamDirectory;
class FileStorageTest extends PhpStorageTestBase {
use PhpUnitWarnings;
protected $standardSettings;
protected function setUp() : void {
parent::setUp();
$this->standardSettings = [
'directory' => $this->directory,
'bin' => 'test',
];
}
public function testCRUD() {
$php = new FileStorage($this->standardSettings);
$this
->assertCRUD($php);
}
public function testWriteable() {
$php = new FileStorage($this->standardSettings);
$this
->assertTrue($php
->writeable());
}
public function testDeleteAll() {
$random_generator = new Random();
$php = new FileStorage($this->standardSettings);
$name = $random_generator
->name(8, TRUE) . '/' . $random_generator
->name(8, TRUE) . '.php';
do {
$random = mt_rand(10000, 100000);
} while (isset($GLOBALS[$random]));
$code = "<?php\n\$GLOBALS[{$random}] = TRUE;";
$this
->assertTrue($php
->save($name, $code), 'Saved php file');
$php
->load($name);
$this
->assertTrue($GLOBALS[$random], 'File saved correctly with correct value');
$this
->assertDirectoryExists($this->directory . '/test');
$this
->assertTrue($php
->deleteAll(), 'Delete all reported success');
$this
->assertFalse($php
->load($name));
$this
->assertDirectoryDoesNotExist($this->directory . '/test');
$this
->assertTrue($php
->deleteAll(), 'Delete all succeeds with nothing to delete');
unset($GLOBALS[$random]);
}
public function testCreateDirectoryFailWarning() {
$directory = new vfsStreamDirectory('permissionDenied', 0200);
$storage = new FileStorage([
'directory' => $directory
->url(),
'bin' => 'test',
]);
$code = "<?php\n echo 'here';";
$this
->expectWarning();
$this
->expectWarningMessage('mkdir(): Permission Denied');
$storage
->save('subdirectory/foo.php', $code);
}
}