mirror of
https://github.com/nextcloud/server.git
synced 2026-02-24 02:11:51 -05:00
test files external amazon s3 storage id migration
This commit is contained in:
parent
69a3d8eb1a
commit
fe9e6be35c
1 changed files with 117 additions and 0 deletions
117
apps/files_external/tests/amazons3migration.php
Normal file
117
apps/files_external/tests/amazons3migration.php
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @author Jörn Friedrich Dreyer
|
||||
* @copyright 2012 Jörn Friedrich Dreyer jfd@owncloud.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
namespace Test\Files\Storage;
|
||||
|
||||
class AmazonS3Migration extends \PHPUnit_Framework_TestCase {
|
||||
|
||||
/**
|
||||
* @var \OC\Files\Storage\Storage instance
|
||||
*/
|
||||
protected $instance;
|
||||
|
||||
public function setUp () {
|
||||
$uuid = uniqid();
|
||||
|
||||
$this->params['key'] = 'key'.$uuid;
|
||||
$this->params['secret'] = 'secret'.$uuid;
|
||||
$this->params['bucket'] = 'bucket'.$uuid;
|
||||
|
||||
$this->oldId = 'amazon::' . $this->params['key'] . md5($this->params['secret']);
|
||||
$this->newId = 'amazon::' . $this->params['bucket'];
|
||||
}
|
||||
|
||||
public function tearDown () {
|
||||
$this->deleteStorage($this->oldId);
|
||||
$this->deleteStorage($this->newId);
|
||||
}
|
||||
|
||||
public function testUpdateLegacyOnlyId () {
|
||||
// add storage ids
|
||||
$oldCache = new \OC\Files\Cache\Cache($this->oldId);
|
||||
|
||||
// add file to old cache
|
||||
$fileId = $oldCache->put('/', array('size' => 0, 'mtime' => time(), 'mimetype' => 'httpd/directory'));
|
||||
|
||||
try {
|
||||
$this->instance = new \OC\Files\Storage\AmazonS3($this->params);
|
||||
} catch (\Exception $e) {
|
||||
//ignore
|
||||
}
|
||||
$storages = $this->getStorages();
|
||||
|
||||
$this->assertTrue(isset($storages[$this->newId]));
|
||||
$this->assertFalse(isset($storages[$this->oldId]));
|
||||
$this->assertSame((int)$oldCache->getNumericStorageId(), (int)$storages[$this->newId]);
|
||||
|
||||
list($storageId, $path) = \OC\Files\Cache\Cache::getById($fileId);
|
||||
|
||||
$this->assertSame($this->newId, $storageId);
|
||||
$this->assertSame('/', $path);
|
||||
}
|
||||
|
||||
public function testUpdateLegacyAndNewId () {
|
||||
// add storage ids
|
||||
|
||||
$oldCache = new \OC\Files\Cache\Cache($this->oldId);
|
||||
new \OC\Files\Cache\Cache($this->newId);
|
||||
|
||||
// add file to old cache
|
||||
$fileId = $oldCache->put('/', array('size' => 0, 'mtime' => time(), 'mimetype' => 'httpd/directory'));
|
||||
|
||||
try {
|
||||
$this->instance = new \OC\Files\Storage\AmazonS3($this->params);
|
||||
} catch (\Exception $e) {
|
||||
//ignore
|
||||
}
|
||||
$storages = $this->getStorages();
|
||||
|
||||
$this->assertTrue(isset($storages[$this->newId]));
|
||||
$this->assertFalse(isset($storages[$this->oldId]));
|
||||
|
||||
$this->assertNull(\OC\Files\Cache\Cache::getById($fileId), 'old filecache has not been cleared');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $storages
|
||||
* @return array
|
||||
*/
|
||||
public function getStorages() {
|
||||
$storages = array();
|
||||
$stmt = \OC::$server->getDatabaseConnection()->prepare(
|
||||
'SELECT `numeric_id`, `id` FROM `*PREFIX*storages` WHERE `id` IN (?, ?)'
|
||||
);
|
||||
$stmt->execute(array($this->oldId, $this->newId));
|
||||
while ($row = $stmt->fetch()) {
|
||||
$storages[$row['id']] = $row['numeric_id'];
|
||||
}
|
||||
return $storages;
|
||||
}
|
||||
|
||||
public function deleteStorage($id) {
|
||||
$stmt = \OC::$server->getDatabaseConnection()->prepare(
|
||||
'DELETE FROM `*PREFIX*storages` WHERE `id` = ?'
|
||||
);
|
||||
$stmt->execute(array($id));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue