commit
00944a376a
@ -0,0 +1,54 @@ |
|||||||
|
<?php |
||||||
|
/** |
||||||
|
* Copyright (c) 2013 Bjoern Schiessle <schiessle@owncloud.com> |
||||||
|
* This file is licensed under the Affero General Public License version 3 or |
||||||
|
* later. |
||||||
|
* See the COPYING-README file. |
||||||
|
*/ |
||||||
|
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../lib/helper.php'; |
||||||
|
|
||||||
|
use OCA\Encryption; |
||||||
|
|
||||||
|
/** |
||||||
|
* Class Test_Encryption_Helper |
||||||
|
*/ |
||||||
|
class Test_Encryption_Helper extends \PHPUnit_Framework_TestCase { |
||||||
|
|
||||||
|
/** |
||||||
|
* @medium |
||||||
|
*/ |
||||||
|
function testStripPartialFileExtension() { |
||||||
|
|
||||||
|
$partFilename = 'testfile.txt.part'; |
||||||
|
$filename = 'testfile.txt'; |
||||||
|
|
||||||
|
$this->assertTrue(Encryption\Helper::isPartialFilePath($partFilename)); |
||||||
|
|
||||||
|
$this->assertEquals('testfile.txt', Encryption\Helper::stripPartialFileExtension($partFilename)); |
||||||
|
|
||||||
|
$this->assertFalse(Encryption\Helper::isPartialFilePath($filename)); |
||||||
|
|
||||||
|
$this->assertEquals('testfile.txt', Encryption\Helper::stripPartialFileExtension($filename)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* @medium |
||||||
|
*/ |
||||||
|
function testStripPartialFileExtensionWithTransferIdPath() { |
||||||
|
|
||||||
|
$partFilename = 'testfile.txt.ocTransferId643653835.part'; |
||||||
|
$filename = 'testfile.txt'; |
||||||
|
|
||||||
|
$this->assertTrue(Encryption\Helper::isPartialFilePath($partFilename)); |
||||||
|
|
||||||
|
$this->assertEquals('testfile.txt', Encryption\Helper::stripPartialFileExtension($partFilename)); |
||||||
|
|
||||||
|
$this->assertFalse(Encryption\Helper::isPartialFilePath($filename)); |
||||||
|
|
||||||
|
$this->assertEquals('testfile.txt', Encryption\Helper::stripPartialFileExtension($filename)); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,40 @@ |
|||||||
|
<?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\Cache; |
||||||
|
|
||||||
|
class HomeCache extends Cache { |
||||||
|
/** |
||||||
|
* get the size of a folder and set it in the cache |
||||||
|
* |
||||||
|
* @param string $path |
||||||
|
* @return int |
||||||
|
*/ |
||||||
|
public function calculateFolderSize($path) { |
||||||
|
if ($path !== '/' and $path !== '') { |
||||||
|
return parent::calculateFolderSize($path); |
||||||
|
} |
||||||
|
|
||||||
|
$totalSize = 0; |
||||||
|
$entry = $this->get($path); |
||||||
|
if ($entry && $entry['mimetype'] === 'httpd/unix-directory') { |
||||||
|
$id = $entry['fileid']; |
||||||
|
$sql = 'SELECT SUM(`size`) FROM `*PREFIX*filecache` ' . |
||||||
|
'WHERE `parent` = ? AND `storage` = ? AND `size` >= 0'; |
||||||
|
$result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId())); |
||||||
|
if ($row = $result->fetchRow()) { |
||||||
|
list($sum) = array_values($row); |
||||||
|
$totalSize = (int)$sum; |
||||||
|
if ($entry['size'] !== $totalSize) { |
||||||
|
$this->update($id, array('size' => $totalSize)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return $totalSize; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,95 @@ |
|||||||
|
<?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 Test\Files\Cache; |
||||||
|
|
||||||
|
class DummyUser extends \OC\User\User { |
||||||
|
/** |
||||||
|
* @var string $home |
||||||
|
*/ |
||||||
|
private $home; |
||||||
|
|
||||||
|
/** |
||||||
|
* @var string $uid |
||||||
|
*/ |
||||||
|
private $uid; |
||||||
|
|
||||||
|
public function __construct($uid, $home) { |
||||||
|
$this->home = $home; |
||||||
|
$this->uid = $uid; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
public function getHome() { |
||||||
|
return $this->home; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string |
||||||
|
*/ |
||||||
|
public function getUID() { |
||||||
|
return $this->uid; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class HomeCache extends \PHPUnit_Framework_TestCase { |
||||||
|
/** |
||||||
|
* @var \OC\Files\Storage\Home $storage |
||||||
|
*/ |
||||||
|
private $storage; |
||||||
|
|
||||||
|
/** |
||||||
|
* @var \OC\Files\Cache\HomeCache $cache |
||||||
|
*/ |
||||||
|
private $cache; |
||||||
|
|
||||||
|
/** |
||||||
|
* @var \OC\User\User $user |
||||||
|
*/ |
||||||
|
private $user; |
||||||
|
|
||||||
|
public function setUp() { |
||||||
|
$this->user = new DummyUser('foo', \OC_Helper::tmpFolder()); |
||||||
|
$this->storage = new \OC\Files\Storage\Home(array('user' => $this->user)); |
||||||
|
$this->cache = $this->storage->getCache(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests that the root folder size calculation ignores the subdirs that have an unknown |
||||||
|
* size. This makes sure that quota calculation still works as it's based on the root |
||||||
|
* folder size. |
||||||
|
*/ |
||||||
|
public function testRootFolderSizeIgnoresUnknownUpdate() { |
||||||
|
$dir1 = 'knownsize'; |
||||||
|
$dir2 = 'unknownsize'; |
||||||
|
$fileData = array(); |
||||||
|
$fileData[''] = array('size' => -1, 'mtime' => 20, 'mimetype' => 'httpd/unix-directory'); |
||||||
|
$fileData[$dir1] = array('size' => 1000, 'mtime' => 20, 'mimetype' => 'httpd/unix-directory'); |
||||||
|
$fileData[$dir2] = array('size' => -1, 'mtime' => 25, 'mimetype' => 'httpd/unix-directory'); |
||||||
|
|
||||||
|
$this->cache->put('', $fileData['']); |
||||||
|
$this->cache->put($dir1, $fileData[$dir1]); |
||||||
|
$this->cache->put($dir2, $fileData[$dir2]); |
||||||
|
|
||||||
|
$this->assertTrue($this->cache->inCache($dir1)); |
||||||
|
$this->assertTrue($this->cache->inCache($dir2)); |
||||||
|
|
||||||
|
// check that root size ignored the unknown sizes |
||||||
|
$this->assertEquals(1000, $this->cache->calculateFolderSize('')); |
||||||
|
|
||||||
|
// clean up |
||||||
|
$this->cache->remove(''); |
||||||
|
$this->cache->remove($dir1); |
||||||
|
$this->cache->remove($dir2); |
||||||
|
|
||||||
|
$this->assertFalse($this->cache->inCache($dir1)); |
||||||
|
$this->assertFalse($this->cache->inCache($dir2)); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue