blob: fbc4e1d09eeec9bed25943666dea425e1cb4c8ae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
<?php
/**
* SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace Test\Files\Storage\Wrapper;
class JailTest extends \Test\Files\Storage\Storage {
/**
* @var \OC\Files\Storage\Temporary
*/
private $sourceStorage;
protected function setUp(): void {
parent::setUp();
$this->sourceStorage = new \OC\Files\Storage\Temporary([]);
$this->sourceStorage->mkdir('foo');
$this->instance = new \OC\Files\Storage\Wrapper\Jail([
'storage' => $this->sourceStorage,
'root' => 'foo'
]);
}
protected function tearDown(): void {
// test that nothing outside our jail is touched
$contents = [];
$dh = $this->sourceStorage->opendir('');
while (($file = readdir($dh)) !== false) {
if (!\OC\Files\Filesystem::isIgnoredDir($file)) {
$contents[] = $file;
}
}
$this->assertEquals(['foo'], $contents);
$this->sourceStorage->cleanUp();
parent::tearDown();
}
public function testMkDirRooted(): void {
$this->instance->mkdir('bar');
$this->assertTrue($this->sourceStorage->is_dir('foo/bar'));
}
public function testFilePutContentsRooted(): void {
$this->instance->file_put_contents('bar', 'asd');
$this->assertEquals('asd', $this->sourceStorage->file_get_contents('foo/bar'));
}
}
|