server/tests/lib/files/mount/mountpoint.php
Vincent Petry 6d8985b671 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())
2015-01-27 17:40:08 +01:00

69 lines
1.8 KiB
PHP

<?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);
}
}