Skip to content

Commit c6aeaca

Browse files
authored
Merge pull request #66502 from nextcloud/fix/test-case-mount-provider-collection-reset
test: Reset the correct mount provider collection instance and add back the files_sharing mount provider
2 parents 9fd1e5f + 14ae8f4 commit c6aeaca

3 files changed

Lines changed: 38 additions & 1 deletion

File tree

‎lib/private/Server.php‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,8 @@ public function runInitialRegistrations(): void {
686686
return $manager;
687687
});
688688

689+
$this->registerAlias(MountProviderCollection::class, IMountProviderCollection::class);
690+
689691
$this->registerService(IBus::class, static function (ContainerInterface $c): IBus {
690692
$busClass = $c->get(IConfig::class)->getSystemValueString('commandbus');
691693
if ($busClass) {

‎tests/lib/TestCase.php‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use OC\Installer;
2727
use OC\Updater;
2828
use OC\User\Session;
29+
use OCA\Files_Sharing\MountProvider;
2930
use OCP\Command\IBus;
3031
use OCP\DB\QueryBuilder\IQueryBuilder;
3132
use OCP\Files\IRootFolder;
@@ -507,13 +508,13 @@ public static function tearDownAfterClass(): void {
507508
$setupManager = Server::get(SetupManager::class);
508509
$setupManager->tearDown();
509510

510-
/** @var MountProviderCollection $mountProviderCollection */
511511
$mountProviderCollection = Server::get(MountProviderCollection::class);
512512
$mountProviderCollection->clearProviders();
513513

514514
/** @var IConfig $config */
515515
$config = Server::get(IConfig::class);
516516
$mountProviderCollection->registerProvider(new CacheMountProvider($config));
517+
$mountProviderCollection->registerProvider(Server::get(MountProvider::class));
517518
$mountProviderCollection->registerHomeProvider(new LocalHomeMountProvider());
518519
$objectStoreConfig = Server::get(PrimaryObjectStoreConfig::class);
519520
$mountProviderCollection->registerRootProvider(new RootMountProvider($objectStoreConfig, $config));

‎tests/lib/TestCaseTest.php‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,23 @@
88

99
namespace Test;
1010

11+
use OCP\Constants;
12+
use OCP\Files\Folder;
13+
use OCP\Files\IRootFolder;
1114
use OCP\IConfig;
1215
use OCP\Server;
16+
use OCP\Share\IManager;
17+
use OCP\Share\IShare;
18+
use Test\Traits\UserTrait;
1319

1420
/**
1521
* Tests for TestCase::overwriteSystemConfig(). System config is persisted to
1622
* config.php, so a value leaked by a test outlives the run and the next one.
1723
*/
1824
#[\PHPUnit\Framework\Attributes\Group('DB')]
1925
class TestCaseTest extends TestCase {
26+
use UserTrait;
27+
2028
private const KEY = 'testcase_overwrite_system_config';
2129

2230
private IConfig $config;
@@ -88,4 +96,30 @@ public function testRestoreReturnsAPreviousFalseValue(): void {
8896

8997
$this->assertFalse($this->config->getSystemValue(self::KEY, 'fallback'));
9098
}
99+
100+
// This test cannot fail if this suite is run standalone.
101+
// It will only fail if the mount provider collection wasn't correctly reset after a different test suite was executed before this one.
102+
public function testMountProviderCollectionReset(): void {
103+
$owner = $this->createUser('owner', 'password');
104+
$receiver = $this->createUser('receiver', 'password');
105+
106+
$ownerUserFolder = Server::get(IRootFolder::class)->getUserFolder($owner->getUID());
107+
$ownerNode = $ownerUserFolder->newFolder('foo');
108+
$this->assertInstanceOf(Folder::class, $ownerNode);
109+
110+
$manager = Server::get(IManager::class);
111+
$manager->createShare(
112+
$manager->newShare()
113+
->setShareType(IShare::TYPE_USER)
114+
->setShareOwner($owner->getUID())
115+
->setSharedBy($owner->getUID())
116+
->setSharedWith($receiver->getUID())
117+
->setNode($ownerNode)
118+
->setPermissions(Constants::PERMISSION_ALL)
119+
);
120+
121+
$receiverUserFolder = Server::get(IRootFolder::class)->getUserFolder($receiver->getUID());
122+
$receiverNode = $receiverUserFolder->get($ownerNode->getName());
123+
$this->assertInstanceOf(Folder::class, $receiverNode);
124+
}
91125
}

0 commit comments

Comments
 (0)