]> source.dussan.org Git - nextcloud-server.git/commitdiff
Further seperation of mount management logic
authorRobin Appelman <icewind@owncloud.com>
Thu, 25 Apr 2013 22:01:36 +0000 (00:01 +0200)
committerRobin Appelman <icewind@owncloud.com>
Thu, 25 Apr 2013 22:01:36 +0000 (00:01 +0200)
12 files changed:
apps/files_sharing/lib/cache.php
apps/files_sharing/lib/sharedstorage.php
lib/files/filesystem.php
lib/files/mount.php [deleted file]
lib/files/mount/manager.php [new file with mode: 0644]
lib/files/mount/mount.php [new file with mode: 0644]
lib/files/view.php
lib/public/share.php
lib/util.php
tests/lib/files/mount.php [deleted file]
tests/lib/files/mount/manager.php [new file with mode: 0644]
tests/lib/streamwrappers.php

index 9fccd0b46f32481684e993d66b081cd4580b5cf0..733b7838760934c31177f99ea512e969dc761cfb 100644 (file)
@@ -44,7 +44,7 @@ class Shared_Cache extends Cache {
                $source = \OC_Share_Backend_File::getSource($target);
                if (isset($source['path']) && isset($source['fileOwner'])) {
                        \OC\Files\Filesystem::initMountPoints($source['fileOwner']);
-                       $mount = \OC\Files\Mount::findByNumericId($source['storage']);
+                       $mount = \OC\Files\Filesystem::getMountByNumericId($source['storage']);
                        if ($mount) {
                                $fullPath = $mount->getMountPoint().$source['path'];
                                list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($fullPath);
index ffd4e5ced22bdd1264b2898b6b62bbe646f4be07..2facad0f7e2fe6c34e1a04e4b1a6eb0ea646861e 100644 (file)
@@ -71,7 +71,7 @@ class Shared extends \OC\Files\Storage\Common {
                if ($source) {
                        if (!isset($source['fullPath'])) {
                                \OC\Files\Filesystem::initMountPoints($source['fileOwner']);
-                               $mount = \OC\Files\Mount::findByNumericId($source['storage']);
+                               $mount = \OC\Files\Filesystem::getMountByNumericId($source['storage']);
                                if ($mount) {
                                        $this->files[$target]['fullPath'] = $mount->getMountPoint().$source['path'];
                                } else {
index 09732e67ac618d2e2c1dd11bee8e47f2814b9ccf..ad21a98fabcf46dbaf89a7ae8785b2086daf5117 100644 (file)
@@ -34,6 +34,11 @@ const FREE_SPACE_UNKNOWN = -2;
 const FREE_SPACE_UNLIMITED = -3;
 
 class Filesystem {
+       /**
+        * @var Mount\Manager $mounts
+        */
+       private static $mounts;
+
        public static $loaded = false;
        /**
         * @var \OC\Files\View $defaultInstance
@@ -147,7 +152,7 @@ class Filesystem {
         * @return string
         */
        static public function getMountPoint($path) {
-               $mount = Mount::find($path);
+               $mount = self::$mounts->find($path);
                if ($mount) {
                        return $mount->getMountPoint();
                } else {
@@ -163,7 +168,7 @@ class Filesystem {
         */
        static public function getMountPoints($path) {
                $result = array();
-               $mounts = Mount::findIn($path);
+               $mounts = self::$mounts->findIn($path);
                foreach ($mounts as $mount) {
                        $result[] = $mount->getMountPoint();
                }
@@ -177,10 +182,26 @@ class Filesystem {
         * @return \OC\Files\Storage\Storage
         */
        public static function getStorage($mountPoint) {
-               $mount = Mount::find($mountPoint);
+               $mount = self::$mounts->find($mountPoint);
                return $mount->getStorage();
        }
 
+       /**
+        * @param $id
+        * @return Mount\Mount[]
+        */
+       public static function getMountByStorageId($id) {
+               return self::$mounts->findByStorageId($id);
+       }
+
+       /**
+        * @param $id
+        * @return Mount\Mount[]
+        */
+       public static function getMountByNumericId($id) {
+               return self::$mounts->findByStorageId($id);
+       }
+
        /**
         * resolve a path to a storage and internal path
         *
@@ -188,7 +209,7 @@ class Filesystem {
         * @return array consisting of the storage and the internal path
         */
        static public function resolvePath($path) {
-               $mount = Mount::find($path);
+               $mount = self::$mounts->find($path);
                if ($mount) {
                        return array($mount->getStorage(), $mount->getInternalPath($path));
                } else {
@@ -201,6 +222,7 @@ class Filesystem {
                        return false;
                }
                self::$defaultInstance = new View($root);
+               self::$mounts = new Mount\Manager();
 
                //load custom mount config
                self::initMountPoints($user);
@@ -210,6 +232,10 @@ class Filesystem {
                return true;
        }
 
+       static public function initMounts(){
+               self::$mounts = new Mount\Manager();
+       }
+
        /**
         * Initialize system and personal mount points for a user
         *
@@ -328,7 +354,7 @@ class Filesystem {
         * clear all mounts and storage backends
         */
        public static function clearMounts() {
-               Mount::clear();
+               self::$mounts->clear();
        }
 
        /**
@@ -339,7 +365,8 @@ class Filesystem {
         * @param string $mountpoint
         */
        static public function mount($class, $arguments, $mountpoint) {
-               new Mount($class, $mountpoint, $arguments);
+               $mount = new Mount\Mount($class, $mountpoint, $arguments);
+               self::$mounts->addMount($mount);
        }
 
        /**
diff --git a/lib/files/mount.php b/lib/files/mount.php
deleted file mode 100644 (file)
index 0030d0e..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-namespace OC\Files;
-
-class Mount {
-       /**
-        * @var Mount[]
-        */
-       static private $mounts = array();
-
-       /**
-        * @var \OC\Files\Storage\Storage $storage
-        */
-       private $storage = null;
-       private $class;
-       private $storageId;
-       private $arguments = array();
-       private $mountPoint;
-
-       /**
-        * @param string|\OC\Files\Storage\Storage $storage
-        * @param string $mountpoint
-        * @param array $arguments (optional)
-        */
-       public function __construct($storage, $mountpoint, $arguments = null) {
-               if (is_null($arguments)) {
-                       $arguments = array();
-               }
-
-               $mountpoint = self::formatPath($mountpoint);
-               if ($storage instanceof \OC\Files\Storage\Storage) {
-                       $this->class = get_class($storage);
-                       $this->storage = $storage;
-               } else {
-                       // Update old classes to new namespace
-                       if (strpos($storage, 'OC_Filestorage_') !== false) {
-                               $storage = '\OC\Files\Storage\\' . substr($storage, 15);
-                       }
-                       $this->class = $storage;
-                       $this->arguments = $arguments;
-               }
-               $this->mountPoint = $mountpoint;
-
-               self::$mounts[$this->mountPoint] = $this;
-       }
-
-       /**
-        * @return string
-        */
-       public function getMountPoint() {
-               return $this->mountPoint;
-       }
-
-       /**
-        * @return \OC\Files\Storage\Storage
-        */
-       private function createStorage() {
-               if (class_exists($this->class)) {
-                       try {
-                               return new $this->class($this->arguments);
-                       } catch (\Exception $exception) {
-                               \OC_Log::write('core', $exception->getMessage(), \OC_Log::ERROR);
-                               return null;
-                       }
-               } else {
-                       \OC_Log::write('core', 'storage backend ' . $this->class . ' not found', \OC_Log::ERROR);
-                       return null;
-               }
-       }
-
-       /**
-        * @return \OC\Files\Storage\Storage
-        */
-       public function getStorage() {
-               if (is_null($this->storage)) {
-                       $this->storage = $this->createStorage();
-               }
-               return $this->storage;
-       }
-
-       /**
-        * @return string
-        */
-       public function getStorageId() {
-               if (!$this->storageId) {
-                       if (is_null($this->storage)) {
-                               $storage = $this->createStorage(); //FIXME: start using exceptions
-                               if (is_null($storage)) {
-                                       return null;
-                               }
-                               $this->storage = $storage;
-                       }
-                       $this->storageId = $this->storage->getId();
-                       if (strlen($this->storageId) > 64) {
-                               $this->storageId = md5($this->storageId);
-                       }
-               }
-               return $this->storageId;
-       }
-
-       /**
-        * @param string $path
-        * @return string
-        */
-       public function getInternalPath($path) {
-               if ($this->mountPoint === $path or $this->mountPoint . '/' === $path) {
-                       $internalPath = '';
-               } else {
-                       $internalPath = substr($path, strlen($this->mountPoint));
-               }
-               return $internalPath;
-       }
-
-       /**
-        * @param string $path
-        * @return string
-        */
-       private static function formatPath($path) {
-               $path = Filesystem::normalizePath($path);
-               if (strlen($path) > 1) {
-                       $path .= '/';
-               }
-               return $path;
-       }
-
-       /**
-        * Find the mount for $path
-        *
-        * @param $path
-        * @return Mount
-        */
-       public static function find($path) {
-               \OC_Util::setupFS();
-               $path = self::formatPath($path);
-               if (isset(self::$mounts[$path])) {
-                       return self::$mounts[$path];
-               }
-
-               \OC_Hook::emit('OC_Filesystem', 'get_mountpoint', array('path' => $path));
-               $foundMountPoint = '';
-               $mountPoints = array_keys(self::$mounts);
-               foreach ($mountPoints as $mountpoint) {
-                       if (strpos($path, $mountpoint) === 0 and strlen($mountpoint) > strlen($foundMountPoint)) {
-                               $foundMountPoint = $mountpoint;
-                       }
-               }
-               if (isset(self::$mounts[$foundMountPoint])) {
-                       return self::$mounts[$foundMountPoint];
-               } else {
-                       return null;
-               }
-       }
-
-       /**
-        * Find all mounts in $path
-        *
-        * @param $path
-        * @return Mount[]
-        */
-       public static function findIn($path) {
-               \OC_Util::setupFS();
-               $path = self::formatPath($path);
-               $result = array();
-               $pathLength = strlen($path);
-               $mountPoints = array_keys(self::$mounts);
-               foreach ($mountPoints as $mountPoint) {
-                       if (substr($mountPoint, 0, $pathLength) === $path and strlen($mountPoint) > $pathLength) {
-                               $result[] = self::$mounts[$mountPoint];
-                       }
-               }
-               return $result;
-       }
-
-       public static function clear() {
-               self::$mounts = array();
-       }
-
-       /**
-        * Find mounts by storage id
-        *
-        * @param string $id
-        * @return Mount[]
-        */
-       public static function findByStorageId($id) {
-               \OC_Util::setupFS();
-               if (strlen($id) > 64) {
-                       $id = md5($id);
-               }
-               $result = array();
-               foreach (self::$mounts as $mount) {
-                       if ($mount->getStorageId() === $id) {
-                               $result[] = $mount;
-                       }
-               }
-               return $result;
-       }
-
-       /**
-        * Find mounts by numeric storage id
-        *
-        * @param string $id
-        * @return Mount
-        */
-       public static function findByNumericId($id) {
-               $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*storages` WHERE `numeric_id` = ?');
-               $result = $query->execute(array($id))->fetchOne();
-               if ($result) {
-                       $id = $result;
-                       foreach (self::$mounts as $mount) {
-                               if ($mount->getStorageId() === $id) {
-                                       return $mount;
-                               }
-                       }
-               }
-               return false;
-       }
-}
diff --git a/lib/files/mount/manager.php b/lib/files/mount/manager.php
new file mode 100644 (file)
index 0000000..25a5fe2
--- /dev/null
@@ -0,0 +1,120 @@
+<?php
+/**
+ * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Files\Mount;
+
+use \OC\Files\Filesystem;
+
+class Manager {
+       /**
+        * @var Mount[]
+        */
+       private $mounts = array();
+
+       /**
+        * @param Mount $mount
+        */
+       public function addMount($mount) {
+               $this->mounts[$mount->getMountPoint()] = $mount;
+       }
+
+       /**
+        * Find the mount for $path
+        *
+        * @param $path
+        * @return Mount
+        */
+       public function find($path) {
+               \OC_Util::setupFS();
+               $path = $this->formatPath($path);
+               if (isset($this->mounts[$path])) {
+                       return $this->mounts[$path];
+               }
+
+               \OC_Hook::emit('OC_Filesystem', 'get_mountpoint', array('path' => $path));
+               $foundMountPoint = '';
+               $mountPoints = array_keys($this->mounts);
+               foreach ($mountPoints as $mountpoint) {
+                       if (strpos($path, $mountpoint) === 0 and strlen($mountpoint) > strlen($foundMountPoint)) {
+                               $foundMountPoint = $mountpoint;
+                       }
+               }
+               if (isset($this->mounts[$foundMountPoint])) {
+                       return $this->mounts[$foundMountPoint];
+               } else {
+                       return null;
+               }
+       }
+
+       /**
+        * Find all mounts in $path
+        *
+        * @param $path
+        * @return Mount[]
+        */
+       public function findIn($path) {
+               \OC_Util::setupFS();
+               $path = $this->formatPath($path);
+               $result = array();
+               $pathLength = strlen($path);
+               $mountPoints = array_keys($this->mounts);
+               foreach ($mountPoints as $mountPoint) {
+                       if (substr($mountPoint, 0, $pathLength) === $path and strlen($mountPoint) > $pathLength) {
+                               $result[] = $this->mounts[$mountPoint];
+                       }
+               }
+               return $result;
+       }
+
+       public function clear() {
+               $this->mounts = array();
+       }
+
+       /**
+        * Find mounts by storage id
+        *
+        * @param string $id
+        * @return Mount[]
+        */
+       public function findByStorageId($id) {
+               \OC_Util::setupFS();
+               if (strlen($id) > 64) {
+                       $id = md5($id);
+               }
+               $result = array();
+               foreach ($this->mounts as $mount) {
+                       if ($mount->getStorageId() === $id) {
+                               $result[] = $mount;
+                       }
+               }
+               return $result;
+       }
+
+       /**
+        * Find mounts by numeric storage id
+        *
+        * @param string $id
+        * @return Mount
+        */
+       public function findByNumericId($id) {
+               $storageId = \OC\Files\Cache\Storage::getStorageId($id);
+               return $this->findByStorageId($storageId);
+       }
+
+       /**
+        * @param string $path
+        * @return string
+        */
+       private function formatPath($path) {
+               $path = Filesystem::normalizePath($path);
+               if (strlen($path) > 1) {
+                       $path .= '/';
+               }
+               return $path;
+       }
+}
diff --git a/lib/files/mount/mount.php b/lib/files/mount/mount.php
new file mode 100644 (file)
index 0000000..69b8285
--- /dev/null
@@ -0,0 +1,130 @@
+<?php
+/**
+ * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Files\Mount;
+
+use \OC\Files\Filesystem;
+
+class Mount {
+
+
+       /**
+        * @var \OC\Files\Storage\Storage $storage
+        */
+       private $storage = null;
+       private $class;
+       private $storageId;
+       private $arguments = array();
+       private $mountPoint;
+
+       /**
+        * @param string|\OC\Files\Storage\Storage $storage
+        * @param string $mountpoint
+        * @param array $arguments (optional)
+        */
+       public function __construct($storage, $mountpoint, $arguments = null) {
+               if (is_null($arguments)) {
+                       $arguments = array();
+               }
+
+               $mountpoint = $this->formatPath($mountpoint);
+               if ($storage instanceof \OC\Files\Storage\Storage) {
+                       $this->class = get_class($storage);
+                       $this->storage = $storage;
+               } else {
+                       // Update old classes to new namespace
+                       if (strpos($storage, 'OC_Filestorage_') !== false) {
+                               $storage = '\OC\Files\Storage\\' . substr($storage, 15);
+                       }
+                       $this->class = $storage;
+                       $this->arguments = $arguments;
+               }
+               $this->mountPoint = $mountpoint;
+       }
+
+       /**
+        * @return string
+        */
+       public function getMountPoint() {
+               return $this->mountPoint;
+       }
+
+       /**
+        * create the storage that is mounted
+        *
+        * @return \OC\Files\Storage\Storage
+        */
+       private function createStorage() {
+               if (class_exists($this->class)) {
+                       try {
+                               return new $this->class($this->arguments);
+                       } catch (\Exception $exception) {
+                               \OC_Log::write('core', $exception->getMessage(), \OC_Log::ERROR);
+                               return null;
+                       }
+               } else {
+                       \OC_Log::write('core', 'storage backend ' . $this->class . ' not found', \OC_Log::ERROR);
+                       return null;
+               }
+       }
+
+       /**
+        * @return \OC\Files\Storage\Storage
+        */
+       public function getStorage() {
+               if (is_null($this->storage)) {
+                       $this->storage = $this->createStorage();
+               }
+               return $this->storage;
+       }
+
+       /**
+        * @return string
+        */
+       public function getStorageId() {
+               if (!$this->storageId) {
+                       if (is_null($this->storage)) {
+                               $storage = $this->createStorage(); //FIXME: start using exceptions
+                               if (is_null($storage)) {
+                                       return null;
+                               }
+                               $this->storage = $storage;
+                       }
+                       $this->storageId = $this->storage->getId();
+                       if (strlen($this->storageId) > 64) {
+                               $this->storageId = md5($this->storageId);
+                       }
+               }
+               return $this->storageId;
+       }
+
+       /**
+        * @param string $path
+        * @return string
+        */
+       public function getInternalPath($path) {
+               if ($this->mountPoint === $path or $this->mountPoint . '/' === $path) {
+                       $internalPath = '';
+               } else {
+                       $internalPath = substr($path, strlen($this->mountPoint));
+               }
+               return $internalPath;
+       }
+
+       /**
+        * @param string $path
+        * @return string
+        */
+       private function formatPath($path) {
+               $path = Filesystem::normalizePath($path);
+               if (strlen($path) > 1) {
+                       $path .= '/';
+               }
+               return $path;
+       }
+}
index 0da104c107e1329add61725dcb34a247581d7ac1..f89b7f66ffdf95fceaa23131554b23dc37322dc4 100644 (file)
@@ -977,7 +977,7 @@ class View {
         */
        public function getPath($id) {
                list($storage, $internalPath) = Cache\Cache::getById($id);
-               $mounts = Mount::findByStorageId($storage);
+               $mounts = Filesystem::getMountByStorageId($storage);
                foreach ($mounts as $mount) {
                        /**
                         * @var \OC\Files\Mount $mount
index 4b337530be8200ecc2d941d19096728998174a0b..525fe7e853310e18dfa7f53a793597f04b9222fb 100644 (file)
@@ -875,7 +875,7 @@ class Share {
                                        $row['path'] = '/Shared/'.basename($row['path']);
                                } else {
                                        if (!isset($mounts[$row['storage']])) {
-                                               $mounts[$row['storage']] = \OC\Files\Mount::findByNumericId($row['storage']);
+                                               $mounts[$row['storage']] = \OC\Files\Filesystem::getMountByNumericId($row['storage']);
                                        }
                                        if ($mounts[$row['storage']]) {
                                                $path = $mounts[$row['storage']]->getMountPoint().$row['path'];
index 810593358a5e2d352eedae0ef2c119913955d162..f62c2a42d7300975fbb011f3fc47e0ec646046c4 100755 (executable)
@@ -38,6 +38,7 @@ class OC_Util {
 
                $CONFIG_DATADIRECTORY = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" );
                //first set up the local "root" storage
+               \OC\Files\Filesystem::initMounts();
                if(!self::$rootMounted) {
                        \OC\Files\Filesystem::mount('\OC\Files\Storage\Local', array('datadir'=>$CONFIG_DATADIRECTORY), '/');
                        self::$rootMounted=true;
diff --git a/tests/lib/files/mount.php b/tests/lib/files/mount.php
deleted file mode 100644 (file)
index a3dc06c..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
-
-namespace Test\Files;
-
-use \OC\Files\Storage\Temporary;
-
-class LongId extends Temporary {
-       public function getId() {
-               return 'long:' . str_repeat('foo', 50) . parent::getId();
-       }
-}
-
-class Mount extends \PHPUnit_Framework_TestCase {
-       public function setup() {
-               \OC_Util::setupFS();
-               \OC\Files\Mount::clear();
-       }
-
-       public function testFind() {
-               $this->assertNull(\OC\Files\Mount::find('/'));
-
-               $rootMount = new \OC\Files\Mount(new Temporary(array()), '/');
-               $this->assertEquals($rootMount, \OC\Files\Mount::find('/'));
-               $this->assertEquals($rootMount, \OC\Files\Mount::find('/foo/bar'));
-
-               $storage = new Temporary(array());
-               $mount = new \OC\Files\Mount($storage, '/foo');
-               $this->assertEquals($rootMount, \OC\Files\Mount::find('/'));
-               $this->assertEquals($mount, \OC\Files\Mount::find('/foo/bar'));
-
-               $this->assertEquals(1, count(\OC\Files\Mount::findIn('/')));
-               new \OC\Files\Mount(new Temporary(array()), '/bar');
-               $this->assertEquals(2, count(\OC\Files\Mount::findIn('/')));
-
-               $id = $mount->getStorageId();
-               $this->assertEquals(array($mount), \OC\Files\Mount::findByStorageId($id));
-
-               $mount2 = new \OC\Files\Mount($storage, '/foo/bar');
-               $this->assertEquals(array($mount, $mount2), \OC\Files\Mount::findByStorageId($id));
-       }
-
-       public function testLong() {
-               $storage = new LongId(array());
-               $mount = new \OC\Files\Mount($storage, '/foo');
-
-               $id = $mount->getStorageId();
-               $storageId = $storage->getId();
-               $this->assertEquals(array($mount), \OC\Files\Mount::findByStorageId($id));
-               $this->assertEquals(array($mount), \OC\Files\Mount::findByStorageId($storageId));
-               $this->assertEquals(array($mount), \OC\Files\Mount::findByStorageId(md5($storageId)));
-       }
-}
diff --git a/tests/lib/files/mount/manager.php b/tests/lib/files/mount/manager.php
new file mode 100644 (file)
index 0000000..154c35c
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace Test\Files\Mount;
+
+use \OC\Files\Storage\Temporary;
+
+class LongId extends Temporary {
+       public function getId() {
+               return 'long:' . str_repeat('foo', 50) . parent::getId();
+       }
+}
+
+class Manager extends \PHPUnit_Framework_TestCase {
+       /**
+        * @var \OC\Files\Mount\Manager
+        */
+       private $manager;
+
+       public function setup() {
+               $this->manager = new \OC\Files\Mount\Manager();
+       }
+
+       public function testFind() {
+               $this->assertNull($this->manager->find('/'));
+
+               $rootMount = new \OC\Files\Mount\Mount(new Temporary(array()), '/');
+               $this->manager->addMount($rootMount);
+               $this->assertEquals($rootMount, $this->manager->find('/'));
+               $this->assertEquals($rootMount, $this->manager->find('/foo/bar'));
+
+               $storage = new Temporary(array());
+               $mount1 = new \OC\Files\Mount\Mount($storage, '/foo');
+               $this->manager->addMount($mount1);
+               $this->assertEquals($rootMount, $this->manager->find('/'));
+               $this->assertEquals($mount1, $this->manager->find('/foo/bar'));
+
+               $this->assertEquals(1, count($this->manager->findIn('/')));
+               $mount2 = new \OC\Files\Mount\Mount(new Temporary(array()), '/bar');
+               $this->manager->addMount($mount2);
+               $this->assertEquals(2, count($this->manager->findIn('/')));
+
+               $id = $mount1->getStorageId();
+               $this->assertEquals(array($mount1), $this->manager->findByStorageId($id));
+
+               $mount3 = new \OC\Files\Mount\Mount($storage, '/foo/bar');
+               $this->manager->addMount($mount3);
+               $this->assertEquals(array($mount1, $mount3), $this->manager->findByStorageId($id));
+       }
+
+       public function testLong() {
+               $storage = new LongId(array());
+               $mount = new \OC\Files\Mount\Mount($storage, '/foo');
+               $this->manager->addMount($mount);
+
+               $id = $mount->getStorageId();
+               $storageId = $storage->getId();
+               $this->assertEquals(array($mount), $this->manager->findByStorageId($id));
+               $this->assertEquals(array($mount), $this->manager->findByStorageId($storageId));
+               $this->assertEquals(array($mount), $this->manager->findByStorageId(md5($storageId)));
+       }
+}
index 2237ee7d3781c61e72e1875002144a3803962561..c7e51ccfa48560c0f682b5e34198c70170eed0c8 100644 (file)
@@ -77,10 +77,10 @@ class Test_StreamWrappers extends PHPUnit_Framework_TestCase {
        }
 
        public function testOC() {
-               \OC\Files\Mount::clear();
+               \OC\Files\Filesystem::clearMounts();
                $storage = new \OC\Files\Storage\Temporary(array());
                $storage->file_put_contents('foo.txt', 'asd');
-               new \OC\Files\Mount($storage, '/');
+               \OC\Files\Filesystem::mount($storage, array(), '/');
 
                $this->assertTrue(file_exists('oc:///foo.txt'));
                $this->assertEquals('asd', file_get_contents('oc:///foo.txt'));