mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
fix(FileAccess#getByAncestorInStorage): Use a subquery to fix tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
This commit is contained in:
parent
d67c877ac5
commit
10cc43041b
2 changed files with 16 additions and 9 deletions
|
|
@ -135,8 +135,16 @@ class FileAccess implements IFileAccess {
|
|||
|
||||
if (!$endToEndEncrypted) {
|
||||
// End to end encrypted files are descendants of a folder with encrypted=1
|
||||
$qb->leftJoin('f', 'filecache', 'p', $qb->expr()->eq('f.parent', 'p.fileid'));
|
||||
$qb->andWhere($qb->expr()->eq('p.encrypted', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT)));
|
||||
// Use a subquery to check the `encrypted` status of the parent folder
|
||||
$subQuery = $this->getQuery()->select('p.encrypted')
|
||||
->from('filecache', 'p')
|
||||
->andWhere($qb->expr()->eq('p.fileid', 'f.parent'))
|
||||
->setMaxResults(1)
|
||||
->getSQL();
|
||||
|
||||
$qb->andWhere(
|
||||
$qb->expr()->eq($qb->createFunction(sprintf('(%s)', $subQuery)), $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))
|
||||
);
|
||||
}
|
||||
|
||||
if (!$serverSideEncrypted) {
|
||||
|
|
@ -151,8 +159,8 @@ class FileAccess implements IFileAccess {
|
|||
if ($maxResults !== 0) {
|
||||
$qb->setMaxResults($maxResults);
|
||||
}
|
||||
$files = $qb->orderBy('f.fileid', 'ASC')
|
||||
->executeQuery();
|
||||
$qb->orderBy('f.fileid', 'ASC');
|
||||
$files = $qb->executeQuery();
|
||||
|
||||
while (
|
||||
/** @var array */
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ class FileAccessTest extends TestCase {
|
|||
$queryBuilder->insert('filecache')
|
||||
->values([
|
||||
'fileid' => 5,
|
||||
'parent' => 0,
|
||||
'parent' => 1,
|
||||
'path' => $queryBuilder->createNamedParameter('files/serversideencrypted'),
|
||||
'path_hash' => $queryBuilder->createNamedParameter(md5('files/serversideencrypted')),
|
||||
'storage' => $queryBuilder->createNamedParameter(1),
|
||||
|
|
@ -350,10 +350,9 @@ class FileAccessTest extends TestCase {
|
|||
|
||||
$result = iterator_to_array($generator);
|
||||
|
||||
var_dump($result);
|
||||
|
||||
$this->assertCount(1, $result);
|
||||
$this->assertEquals('files/serversideencrypted', $result[0]->getPath());
|
||||
$this->assertCount(3, $result);
|
||||
$paths = array_map(fn(CacheEntry $entry) => $entry->getPath(), $result);
|
||||
$this->assertEquals(['files/documents', 'files/photos', 'files/serversideencrypted'], $paths);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue