Merge pull request #20725 from nextcloud/getDirectoryContent-fix-jail

Fix getDirectoryContent implementation for Jail wrapper
This commit is contained in:
Roeland Jago Douma 2020-04-30 20:34:52 +02:00 committed by GitHub
commit 1a04033b19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 3 deletions

View File

@ -78,12 +78,12 @@ class SwiftFactory {
* @throws StorageAuthException
*/
public function getCachedTokenId() {
if ( !isset($this->params['cachedToken']) ) {
if (!isset($this->params['cachedToken'])) {
throw new StorageAuthException('Unauthenticated ObjectStore connection');
}
// Is it V2 token?
if ( isset($this->params['cachedToken']['token']) ) {
if (isset($this->params['cachedToken']['token'])) {
return $this->params['cachedToken']['token']['id'];
}

View File

@ -541,6 +541,6 @@ class Jail extends Wrapper {
}
public function getDirectoryContent($directory): \Traversable {
return $this->getWrapperStorage()->getDirectoryContent($this->getJailedPath($directory));
return $this->getWrapperStorage()->getDirectoryContent($this->getUnjailedPath($directory));
}
}

View File

@ -88,6 +88,21 @@ abstract class Storage extends \Test\TestCase {
}
$this->assertEquals([$directory], $content);
$content = iterator_to_array($this->instance->getDirectoryContent('/'));
$this->assertCount(1, $content);
$dirEntry = $content[0];
unset($dirEntry['scan_permissions']);
unset($dirEntry['etag']);
$this->assertEquals([
'name' => $directory,
'mimetype' => $this->instance->getMimeType($directory),
'mtime' => $this->instance->filemtime($directory),
'size' => -1,
'storage_mtime' => $this->instance->filemtime($directory),
'permissions' => $this->instance->getPermissions($directory),
], $dirEntry);
$this->assertFalse($this->instance->mkdir('/' . $directory)); //can't create existing folders
$this->assertTrue($this->instance->rmdir('/' . $directory));