]> source.dussan.org Git - nextcloud-server.git/commitdiff
add unit test
authorRobin Appelman <icewind@owncloud.com>
Mon, 22 Jun 2015 12:41:08 +0000 (14:41 +0200)
committerMorris Jobke <hey@morrisjobke.de>
Thu, 2 Jul 2015 11:03:03 +0000 (13:03 +0200)
lib/private/files/config/mountprovidercollection.php
tests/lib/files/utils/scanner.php

index a14a6ef796f1aa312ddb1f52a563d280f7729cdb..7db0aff44e7c0cfcbdfb8a8b059c2a52d08e51b0 100644 (file)
@@ -57,8 +57,11 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
         */
        public function getMountsForUser(IUser $user) {
                $loader = $this->loader;
-               return array_reduce($this->providers, function ($mounts, IMountProvider $provider) use ($user, $loader) {
-                       return array_merge($mounts, $provider->getMountsForUser($user, $loader));
+               $mounts = array_map(function (IMountProvider $provider) use ($user, $loader) {
+                       return $provider->getMountsForUser($user, $loader);
+               }, $this->providers);
+               return array_reduce($mounts, function ($mounts, $providerMounts) {
+                       return array_merge($mounts, $providerMounts);
                }, array());
        }
 
index dfc683c1bcfc84b960389125794bdc1492fd3950..ca64b1db72e0bf4894a259fb90a5575a21d4da8c 100644 (file)
@@ -11,6 +11,8 @@ namespace Test\Files\Utils;
 use OC\Files\Filesystem;
 use OC\Files\Mount\MountPoint;
 use OC\Files\Storage\Temporary;
+use OCP\Files\Storage\IStorageFactory;
+use OCP\IUser;
 
 class TestScanner extends \OC\Files\Utils\Scanner {
        /**
@@ -39,14 +41,22 @@ class TestScanner extends \OC\Files\Utils\Scanner {
 }
 
 class Scanner extends \Test\TestCase {
+       /**
+        * @var \OC_User_Dummy
+        */
+       private $userBackend;
+
        protected function setUp() {
                parent::setUp();
 
+               $this->userBackend = new \OC_User_Dummy();
+               \OC::$server->getUserManager()->registerBackend($this->userBackend);
                $this->loginAsUser();
        }
 
        protected function tearDown() {
                $this->logout();
+               \OC::$server->getUserManager()->removeBackend($this->userBackend);
                parent::tearDown();
        }
 
@@ -94,6 +104,39 @@ class Scanner extends \Test\TestCase {
                $this->assertEquals($old, $new);
        }
 
+       public function testScanSubMount() {
+               $uid = $this->getUniqueID();
+               $this->userBackend->createUser($uid, 'test');
+
+               $mountProvider = $this->getMock('\OCP\Files\Config\IMountProvider');
+
+               $storage = new Temporary(array());
+               $mount = new MountPoint($storage, '/' . $uid . '/files/foo');
+
+               $mountProvider->expects($this->any())
+                       ->method('getMountsForUser')
+                       ->will($this->returnCallback(function (IUser $user, IStorageFactory $storageFactory) use ($mount, $uid) {
+                               if ($user->getUID() === $uid) {
+                                       return [$mount];
+                               } else {
+                                       return [];
+                               }
+                       }));
+
+               \OC::$server->getMountProviderCollection()->registerProvider($mountProvider);
+               $cache = $storage->getCache();
+
+               $storage->mkdir('folder');
+               $storage->file_put_contents('foo.txt', 'qwerty');
+               $storage->file_put_contents('folder/bar.txt', 'qwerty');
+
+               $scanner = new \OC\Files\Utils\Scanner($uid, \OC::$server->getDatabaseConnection());
+
+               $this->assertFalse($cache->inCache('folder/bar.txt'));
+               $scanner->scan('/' . $uid . '/files/foo');
+               $this->assertTrue($cache->inCache('folder/bar.txt'));
+       }
+
        public function testChangePropagator() {
                /**
                 * @var \OC\Files\Cache\ChangePropagator $propagator