|
8 | 8 |
|
9 | 9 | namespace Test; |
10 | 10 |
|
| 11 | +use OCP\Constants; |
| 12 | +use OCP\Files\Folder; |
| 13 | +use OCP\Files\IRootFolder; |
11 | 14 | use OCP\IConfig; |
12 | 15 | use OCP\Server; |
| 16 | +use OCP\Share\IManager; |
| 17 | +use OCP\Share\IShare; |
| 18 | +use Test\Traits\UserTrait; |
13 | 19 |
|
14 | 20 | /** |
15 | 21 | * Tests for TestCase::overwriteSystemConfig(). System config is persisted to |
16 | 22 | * config.php, so a value leaked by a test outlives the run and the next one. |
17 | 23 | */ |
18 | 24 | #[\PHPUnit\Framework\Attributes\Group('DB')] |
19 | 25 | class TestCaseTest extends TestCase { |
| 26 | + use UserTrait; |
| 27 | + |
20 | 28 | private const KEY = 'testcase_overwrite_system_config'; |
21 | 29 |
|
22 | 30 | private IConfig $config; |
@@ -88,4 +96,30 @@ public function testRestoreReturnsAPreviousFalseValue(): void { |
88 | 96 |
|
89 | 97 | $this->assertFalse($this->config->getSystemValue(self::KEY, 'fallback')); |
90 | 98 | } |
| 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 | + } |
91 | 125 | } |
0 commit comments