summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-01-27 16:55:59 +0100
committerVincent Petry <pvince81@owncloud.com>2015-01-27 17:40:08 +0100
commit6d8985b67109b2b5d9dc64a4fcd5ed6d748bb338 (patch)
treee6da08fc0f11775b989dfa72b9dd5ee3db62c382 /tests
parent3478634df1ce2b7717bfe211425f59c4107688f8 (diff)
downloadnextcloud-server-6d8985b67109b2b5d9dc64a4fcd5ed6d748bb338.tar.gz
nextcloud-server-6d8985b67109b2b5d9dc64a4fcd5ed6d748bb338.zip
Prevent wrapping null storage
Can happen when trying to instantiate external storages that have incomplete config, where the constructor throws an exception (the exception is caught in createStorage())
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/files/mount/mountpoint.php69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/lib/files/mount/mountpoint.php b/tests/lib/files/mount/mountpoint.php
new file mode 100644
index 00000000000..5a9c6de3e0a
--- /dev/null
+++ b/tests/lib/files/mount/mountpoint.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Copyright (c) 2015 Vincent Petry <pvince81@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;
+
+class MountPoint extends \Test\TestCase {
+
+ public function testGetStorage() {
+ $storage = $this->getMock('\OCP\Files\Storage');
+ $storage->expects($this->once())
+ ->method('getId')
+ ->will($this->returnValue(123));
+
+ $loader = $this->getMock('\OCP\Files\Storage\IStorageFactory');
+ $loader->expects($this->once())
+ ->method('getInstance')
+ ->will($this->returnValue($storage));
+
+ $mountPoint = new \OC\Files\Mount\MountPoint(
+ // just use this because a real class is needed
+ '\Test\Files\Mount\MountPoint',
+ '/mountpoint',
+ null,
+ $loader
+ );
+
+ $this->assertEquals($storage, $mountPoint->getStorage());
+ $this->assertEquals(123, $mountPoint->getStorageId());
+ }
+
+ public function testInvalidStorage() {
+ $loader = $this->getMock('\OCP\Files\Storage\IStorageFactory');
+ $loader->expects($this->once())
+ ->method('getInstance')
+ ->will($this->throwException(new \Exception('Test storage init exception')));
+
+ $called = false;
+ $wrapper = function($mountPoint, $storage) use ($called) {
+ $called = true;
+ };
+
+ $mountPoint = new \OC\Files\Mount\MountPoint(
+ // just use this because a real class is needed
+ '\Test\Files\Mount\MountPoint',
+ '/mountpoint',
+ null,
+ $loader
+ );
+
+ $this->assertNull($mountPoint->getStorage());
+ // call it again to make sure the init code only ran once
+ $this->assertNull($mountPoint->getStorage());
+
+ $this->assertNull($mountPoint->getStorageId());
+
+ // wrapping doesn't fail
+ $mountPoint->wrapStorage($wrapper);
+
+ $this->assertNull($mountPoint->getStorage());
+
+ // storage wrapper never called
+ $this->assertFalse($called);
+ }
+}