config = $this->createMock(IConfig::class); $this->user = $this->createMock(IUser::class); $this->storageFactory = new StorageFactory(); stream_wrapper_register('cachemountprovidertest', CacheMountProviderTestStream::class); } protected function tearDown(): void { stream_wrapper_unregister('cachemountprovidertest'); } public function testGetMountsForUser(): void { $provider = new CacheMountProvider($this->config); $this->assertCount(0, $provider->getMountsForUser($this->user, $this->storageFactory)); } public function testGetMountsForUserCacheDir(): void { $this->config->expects($this->exactly(1)) ->method('getSystemValueString') ->willReturnMap([ ['cache_path', '', 'cachemountprovidertest:////cache_path'], ]); $this->user->method('getUID') ->willReturn('bob'); $provider = new CacheMountProvider($this->config); $mounts = $provider->getMountsForUser($this->user, $this->storageFactory); $this->assertCount(2, $mounts); $this->assertEquals(1, CacheMountProviderTestStream::$statCounter); $this->assertEquals(2, CacheMountProviderTestStream::$mkdirCounter); $cacheMountProvider = $mounts[0]; $this->assertEquals('/bob/cache/', $cacheMountProvider->getMountPoint()); $cacheStorage = $cacheMountProvider->getStorage(); $this->assertEquals('local::cachemountprovidertest://cache_path/bob/', $cacheStorage->getId()); $uploadsMountProvider = $mounts[1]; $this->assertEquals('/bob/uploads/', $uploadsMountProvider->getMountPoint()); $uploadsStorage = $uploadsMountProvider->getStorage(); $this->assertEquals('local::cachemountprovidertest://cache_path/bob/uploads/', $uploadsStorage->getId()); $cacheStorage->mkdir('foobar'); $this->assertEquals(3, CacheMountProviderTestStream::$mkdirCounter); $uploadsStorage->mkdir('foobar'); $this->assertEquals(4, CacheMountProviderTestStream::$mkdirCounter); } }