*/
class Test_OC_Files_App_Rename extends \PHPUnit_Framework_TestCase {
+ private static $user;
function setUp() {
// mock OC_L10n
+ if (!self::$user) {
+ self::$user = uniqid();
+ }
+ \OC_User::createUser(self::$user, 'password');
+ \OC_User::setUserId(self::$user);
+
+ \OC\Files\Filesystem::init(self::$user, '/' . self::$user . '/files');
+
$l10nMock = $this->getMock('\OC_L10N', array('t'), array(), '', false);
$l10nMock->expects($this->any())
->method('t')
$this->files = new \OCA\Files\App($viewMock, $l10nMock);
}
+ function tearDown() {
+ $result = \OC_User::deleteUser(self::$user);
+ $this->assertTrue($result);
+ \OC\Files\Filesystem::tearDown();
+ }
+
/**
* @brief test rename of file/folder named "Shared"
*/
//if we aren't logged in, there is no use to set up the filesystem
if( $user != "" ) {
- $quota = self::getUserQuota($user);
- if ($quota !== \OC\Files\SPACE_UNLIMITED) {
- \OC\Files\Filesystem::addStorageWrapper(function($mountPoint, $storage) use ($quota, $user) {
- if ($mountPoint === '/' . $user . '/'){
- return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota));
- } else {
- return $storage;
+ \OC\Files\Filesystem::addStorageWrapper(function($mountPoint, $storage){
+ // set up quota for home storages, even for other users
+ // which can happen when using sharing
+
+ if (strlen($mountPoint) > 1) {
+ // the user name will be extracted from the mountpoint
+ // with the format '/username/' (no suffix)
+ $user = null;
+ // find second separator
+ $nextSepPos = strpos($mountPoint, '/', 1);
+ // next separator is the last one, format matches
+ if ($nextSepPos === strlen($mountPoint) - 1) {
+ $user = substr($mountPoint, 1, $nextSepPos - 1);
}
- });
- }
+ if ($user) {
+ $quota = OC_Util::getUserQuota($user);
+ if ($quota !== \OC\Files\SPACE_UNLIMITED) {
+ return new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => $quota));
+ }
+ }
+ }
+
+ return $storage;
+ });
+
$userDir = '/'.$user.'/files';
$userRoot = OC_User::getHome($user);
$userDirectory = $userRoot . '/files';
$this->assertStringStartsWith('oc', OC_Util::getInstanceId());
}
+ /**
+ * Tests that the home storage is not wrapped when no quota exists.
+ */
+ function testHomeStorageWrapperWithoutQuota() {
+ $user1 = uniqid();
+ \OC_User::createUser($user1, 'test');
+ OC_Preferences::setValue($user1, 'files', 'quota', 'none');
+ \OC_User::setUserId($user1);
+
+ \OC_Util::setupFS($user1);
+
+ $userMount = \OC\Files\Filesystem::getMountManager()->find('/' . $user1 . '/');
+ $this->assertNotNull($userMount);
+ $this->assertNotInstanceOf('\OC\Files\Storage\Wrapper\Quota', $userMount->getStorage());
+
+ // clean up
+ \OC_User::setUserId('');
+ \OC_User::deleteUser($user1);
+ OC_Preferences::deleteUser($user1);
+ \OC_Util::tearDownFS();
+ }
+
+ /**
+ * Tests that the home storage is not wrapped when no quota exists.
+ */
+ function testHomeStorageWrapperWithQuota() {
+ $user1 = uniqid();
+ \OC_User::createUser($user1, 'test');
+ OC_Preferences::setValue($user1, 'files', 'quota', '1024');
+ \OC_User::setUserId($user1);
+
+ \OC_Util::setupFS($user1);
+
+ $userMount = \OC\Files\Filesystem::getMountManager()->find('/' . $user1 . '/');
+ $this->assertNotNull($userMount);
+ $this->assertInstanceOf('\OC\Files\Storage\Wrapper\Quota', $userMount->getStorage());
+
+ // ensure that root wasn't wrapped
+ $rootMount = \OC\Files\Filesystem::getMountManager()->find('/');
+ $this->assertNotNull($rootMount);
+ $this->assertNotInstanceOf('\OC\Files\Storage\Wrapper\Quota', $rootMount->getStorage());
+
+ // clean up
+ \OC_User::setUserId('');
+ \OC_User::deleteUser($user1);
+ OC_Preferences::deleteUser($user1);
+ \OC_Util::tearDownFS();
+ }
+
/**
* @dataProvider baseNameProvider
*/