Merge pull request #40495 from nextcloud/fix/master-name-in-share-cache

pull/41046/head
Julius Härtl 2023-10-23 19:29:17 +07:00 committed by GitHub
commit f88c34b604
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 0 deletions

@ -162,6 +162,10 @@ class Cache extends CacheJail {
} else {
$entry['permissions'] = $this->storage->getPermissions($entry['path']);
}
if ($this->share->getNodeId() === $entry['fileid']) {
$entry['name'] = basename($this->share->getTarget());
}
} catch (StorageNotAvailableException $e) {
// thrown by FailedStorage e.g. when the sharer does not exist anymore
// (IDE may say the exception is never thrown false negative)

@ -88,6 +88,7 @@ class CacheTest extends TestCase {
$this->view->file_put_contents('container/shareddir/subdir/another.txt', $textData);
$this->view->file_put_contents('container/shareddir/subdir/another too.txt', $textData);
$this->view->file_put_contents('container/shareddir/subdir/not a text file.xml', '<xml></xml>');
$this->view->file_put_contents('simplefile.txt', $textData);
[$this->ownerStorage,] = $this->view->resolvePath('');
$this->ownerCache = $this->ownerStorage->getCache();
@ -302,6 +303,42 @@ class CacheTest extends TestCase {
);
}
/**
* This covers a bug where the share owners name was propagated
* to the recipient in the recent files API response where the
* share recipient has a different target set
*
* https://github.com/nextcloud/server/issues/39879
*/
public function testShareRenameOriginalFileInRecentResults() {
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
$rootFolder = \OC::$server->getUserFolder(self::TEST_FILES_SHARING_API_USER1);
$node = $rootFolder->get('simplefile.txt');
$share = $this->shareManager->newShare();
$share->setNode($node)
->setShareType(IShare::TYPE_USER)
->setSharedWith(self::TEST_FILES_SHARING_API_USER3)
->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
->setPermissions(\OCP\Constants::PERMISSION_READ);
$share = $this->shareManager->createShare($share);
$share->setStatus(IShare::STATUS_ACCEPTED);
$this->shareManager->updateShare($share);
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
$node->move(self::TEST_FILES_SHARING_API_USER1 . '/files/simplefile2.txt');
self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
$rootFolder = \OC::$server->getUserFolder(self::TEST_FILES_SHARING_API_USER3);
$recents = $rootFolder->getRecent(10);
self::assertEquals([
'welcome.txt',
'simplefile.txt'
], array_map(function($node) {
return $node->getFileInfo()['name'];
}, $recents));
}
public function testGetFolderContentsWhenSubSubdirShared() {
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);