From 2ee8f5c37445f1fdce4d0a4dc9a49491dc82e633 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sat, 23 May 2026 19:34:39 +0200 Subject: [PATCH] test: improve setup in share propagation tests Signed-off-by: Robin Appelman --- .../tests/EtagPropagationTest.php | 43 +++++++------------ .../tests/GroupEtagPropagationTest.php | 38 +++++++--------- .../tests/PropagationTestCase.php | 15 +++++-- 3 files changed, 43 insertions(+), 53 deletions(-) diff --git a/apps/files_sharing/tests/EtagPropagationTest.php b/apps/files_sharing/tests/EtagPropagationTest.php index 8c977cfe9db..551e744f749 100644 --- a/apps/files_sharing/tests/EtagPropagationTest.php +++ b/apps/files_sharing/tests/EtagPropagationTest.php @@ -32,16 +32,15 @@ class EtagPropagationTest extends PropagationTestCase { * "user4" puts the received "inside" folder into "sub1/sub2/inside" (this is to check if it propagates across multiple subfolders) */ protected function setUpShares() { - $this->fileIds[self::TEST_FILES_SHARING_API_USER1] = []; - $this->fileIds[self::TEST_FILES_SHARING_API_USER2] = []; - $this->fileIds[self::TEST_FILES_SHARING_API_USER3] = []; - $this->fileIds[self::TEST_FILES_SHARING_API_USER4] = []; + $this->fileInfos[self::TEST_FILES_SHARING_API_USER1] = []; + $this->fileInfos[self::TEST_FILES_SHARING_API_USER2] = []; + $this->fileInfos[self::TEST_FILES_SHARING_API_USER3] = []; + $this->fileInfos[self::TEST_FILES_SHARING_API_USER4] = []; $rootFolder = Server::get(IRootFolder::class); $shareManager = Server::get(\OCP\Share\IManager::class); $this->rootView = new View(''); - $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1); $view1 = new View('/' . self::TEST_FILES_SHARING_API_USER1 . '/files'); $view1->mkdir('/sub1/sub2/folder/inside'); $view1->mkdir('/directReshare'); @@ -99,9 +98,9 @@ class EtagPropagationTest extends PropagationTestCase { $share = $shareManager->createShare($share); $this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER2); - $this->fileIds[self::TEST_FILES_SHARING_API_USER1][''] = $view1->getFileInfo('')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER1]['sub1'] = $view1->getFileInfo('sub1')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER1]['sub1/sub2'] = $view1->getFileInfo('sub1/sub2')->getId(); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER1][''] = $view1->getFileInfo(''); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER1]['sub1'] = $view1->getFileInfo('sub1'); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER1]['sub1/sub2'] = $view1->getFileInfo('sub1/sub2'); /* * User 2 @@ -110,7 +109,6 @@ class EtagPropagationTest extends PropagationTestCase { $view2 = new View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files'); $view2->mkdir('/sub1/sub2'); $view2->rename('/folder', '/sub1/sub2/folder'); - $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2); $insideInfo = $view2->getFileInfo('/sub1/sub2/folder/inside'); $this->assertInstanceOf('\OC\Files\FileInfo', $insideInfo); @@ -140,9 +138,9 @@ class EtagPropagationTest extends PropagationTestCase { $share = $shareManager->createShare($share); $this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER4); - $this->fileIds[self::TEST_FILES_SHARING_API_USER2][''] = $view2->getFileInfo('')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER2]['sub1'] = $view2->getFileInfo('sub1')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER2]['sub1/sub2'] = $view2->getFileInfo('sub1/sub2')->getId(); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER2][''] = $view2->getFileInfo(''); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER2]['sub1'] = $view2->getFileInfo('sub1'); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER2]['sub1/sub2'] = $view2->getFileInfo('sub1/sub2'); /* * User 3 @@ -151,9 +149,9 @@ class EtagPropagationTest extends PropagationTestCase { $view3 = new View('/' . self::TEST_FILES_SHARING_API_USER3 . '/files'); $view3->mkdir('/sub1/sub2'); $view3->rename('/folder', '/sub1/sub2/folder'); - $this->fileIds[self::TEST_FILES_SHARING_API_USER3][''] = $view3->getFileInfo('')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER3]['sub1'] = $view3->getFileInfo('sub1')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER3]['sub1/sub2'] = $view3->getFileInfo('sub1/sub2')->getId(); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER3][''] = $view3->getFileInfo(''); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER3]['sub1'] = $view3->getFileInfo('sub1'); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER3]['sub1/sub2'] = $view3->getFileInfo('sub1/sub2'); /* * User 4 @@ -162,18 +160,9 @@ class EtagPropagationTest extends PropagationTestCase { $view4 = new View('/' . self::TEST_FILES_SHARING_API_USER4 . '/files'); $view4->mkdir('/sub1/sub2'); $view4->rename('/inside', '/sub1/sub2/inside'); - $this->fileIds[self::TEST_FILES_SHARING_API_USER4][''] = $view4->getFileInfo('')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER4]['sub1'] = $view4->getFileInfo('sub1')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER4]['sub1/sub2'] = $view4->getFileInfo('sub1/sub2')->getId(); - - foreach ($this->fileIds as $user => $ids) { - $this->loginAsUser($user); - foreach ($ids as $id) { - $path = $this->rootView->getPath($id); - $ls = $this->rootView->getDirectoryContent($path); - $this->fileEtags[$id] = $this->rootView->getFileInfo($path)->getEtag(); - } - } + $this->fileInfos[self::TEST_FILES_SHARING_API_USER4][''] = $view4->getFileInfo(''); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER4]['sub1'] = $view4->getFileInfo('sub1'); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER4]['sub1/sub2'] = $view4->getFileInfo('sub1/sub2'); } public function testOwnerWritesToShare(): void { diff --git a/apps/files_sharing/tests/GroupEtagPropagationTest.php b/apps/files_sharing/tests/GroupEtagPropagationTest.php index 47357f20626..6dc3b8b35c0 100644 --- a/apps/files_sharing/tests/GroupEtagPropagationTest.php +++ b/apps/files_sharing/tests/GroupEtagPropagationTest.php @@ -25,10 +25,10 @@ class GroupEtagPropagationTest extends PropagationTestCase { * "user4" (in group 3) */ protected function setUpShares() { - $this->fileIds[self::TEST_FILES_SHARING_API_USER1] = []; - $this->fileIds[self::TEST_FILES_SHARING_API_USER2] = []; - $this->fileIds[self::TEST_FILES_SHARING_API_USER3] = []; - $this->fileIds[self::TEST_FILES_SHARING_API_USER4] = []; + $this->fileInfos[self::TEST_FILES_SHARING_API_USER1] = []; + $this->fileInfos[self::TEST_FILES_SHARING_API_USER2] = []; + $this->fileInfos[self::TEST_FILES_SHARING_API_USER3] = []; + $this->fileInfos[self::TEST_FILES_SHARING_API_USER4] = []; $this->rootView = new View(''); $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1); @@ -43,9 +43,9 @@ class GroupEtagPropagationTest extends PropagationTestCase { Constants::PERMISSION_ALL ); $this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER2); - $this->fileIds[self::TEST_FILES_SHARING_API_USER1][''] = $view1->getFileInfo('')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER1]['test'] = $view1->getFileInfo('test')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER1]['test/sub'] = $view1->getFileInfo('test/sub')->getId(); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER1][''] = $view1->getFileInfo(''); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER1]['test'] = $view1->getFileInfo('test'); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER1]['test/sub'] = $view1->getFileInfo('test/sub'); $this->loginAsUser(self::TEST_FILES_SHARING_API_USER2); $view2 = new View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files'); @@ -67,28 +67,20 @@ class GroupEtagPropagationTest extends PropagationTestCase { ); $this->shareManager->acceptShare($share, self::TEST_FILES_SHARING_API_USER4); - $this->fileIds[self::TEST_FILES_SHARING_API_USER2][''] = $view2->getFileInfo('')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER2]['test'] = $view2->getFileInfo('test')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER2]['test/sub'] = $view2->getFileInfo('test/sub')->getId(); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER2][''] = $view2->getFileInfo(''); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER2]['test'] = $view2->getFileInfo('test'); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER2]['test/sub'] = $view2->getFileInfo('test/sub'); $this->loginAsUser(self::TEST_FILES_SHARING_API_USER3); $view3 = new View('/' . self::TEST_FILES_SHARING_API_USER3 . '/files'); - $this->fileIds[self::TEST_FILES_SHARING_API_USER3][''] = $view3->getFileInfo('')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER3]['test'] = $view3->getFileInfo('test')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER3]['test/sub'] = $view3->getFileInfo('test/sub')->getId(); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER3][''] = $view3->getFileInfo(''); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER3]['test'] = $view3->getFileInfo('test'); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER3]['test/sub'] = $view3->getFileInfo('test/sub'); $this->loginAsUser(self::TEST_FILES_SHARING_API_USER4); $view4 = new View('/' . self::TEST_FILES_SHARING_API_USER4 . '/files'); - $this->fileIds[self::TEST_FILES_SHARING_API_USER4][''] = $view4->getFileInfo('')->getId(); - $this->fileIds[self::TEST_FILES_SHARING_API_USER4]['sub'] = $view4->getFileInfo('sub')->getId(); - - foreach ($this->fileIds as $user => $ids) { - $this->loginAsUser($user); - foreach ($ids as $id) { - $path = $this->rootView->getPath($id); - $this->fileEtags[$id] = $this->rootView->getFileInfo($path)->getEtag(); - } - } + $this->fileInfos[self::TEST_FILES_SHARING_API_USER4][''] = $view4->getFileInfo(''); + $this->fileInfos[self::TEST_FILES_SHARING_API_USER4]['sub'] = $view4->getFileInfo('sub'); } public function testGroupReShareRecipientWrites(): void { diff --git a/apps/files_sharing/tests/PropagationTestCase.php b/apps/files_sharing/tests/PropagationTestCase.php index a3f71646008..fed90fbfcae 100644 --- a/apps/files_sharing/tests/PropagationTestCase.php +++ b/apps/files_sharing/tests/PropagationTestCase.php @@ -10,6 +10,7 @@ namespace OCA\Files_Sharing\Tests; use OC\Files\View; use OCA\Files_Sharing\Helper; +use OCP\Files\FileInfo; use OCP\IUserSession; use OCP\Server; @@ -18,7 +19,8 @@ abstract class PropagationTestCase extends TestCase { * @var View */ protected $rootView; - protected $fileIds = []; // [$user=>[$path=>$id]] + /** @var array */ + protected array $fileInfos = []; // [$user=>[$path=>$info]] protected $fileEtags = []; // [$id=>$etag] public static function setUpBeforeClass(): void { @@ -29,6 +31,13 @@ abstract class PropagationTestCase extends TestCase { protected function setUp(): void { parent::setUp(); $this->setUpShares(); + + foreach ($this->fileInfos as $infos) { + /** @var FileInfo $info */ + foreach ($infos as $info) { + $this->fileEtags[$info->getId()] = $info->getEtag(); + } + } } protected function tearDown(): void { @@ -49,7 +58,7 @@ abstract class PropagationTestCase extends TestCase { $oldUser = Server::get(IUserSession::class)->getUser(); foreach ($users as $user) { $this->loginAsUser($user); - $id = $this->fileIds[$user][$subPath]; + $id = $this->fileInfos[$user][$subPath]->getId(); $path = $this->rootView->getPath($id); $etag = $this->rootView->getFileInfo($path)->getEtag(); $this->assertNotEquals($this->fileEtags[$id], $etag, 'Failed asserting that the etag for "' . $subPath . '" of user ' . $user . ' has changed'); @@ -66,7 +75,7 @@ abstract class PropagationTestCase extends TestCase { $oldUser = Server::get(IUserSession::class)->getUser(); foreach ($users as $user) { $this->loginAsUser($user); - $id = $this->fileIds[$user][$subPath]; + $id = $this->fileInfos[$user][$subPath]->getId(); $path = $this->rootView->getPath($id); $etag = $this->rootView->getFileInfo($path)->getEtag(); $this->assertEquals($this->fileEtags[$id], $etag, 'Failed asserting that the etag for "' . $subPath . '" of user ' . $user . ' has not changed');