set accept to 1 (=true) for all server-to-server shares on update, at this point in time all shares are created by the first version of server-to-server sharing and are accepted if they were added to the table

This commit is contained in:
Bjoern Schiessle 2015-01-12 17:04:19 +01:00
parent 331d73c3a3
commit d50e70ba3a
4 changed files with 131 additions and 1 deletions

View File

@ -0,0 +1,12 @@
<?php
use OCA\Files_Sharing\Migration;
$installedVersion = \OC::$server->getConfig()->getAppValue('files_sharing', 'installed_version');
// Migration OC7 -> OC8
if (version_compare($installedVersion, '0.6.0', '<')) {
$m = new Migration();
$m->addAcceptRow();
}

View File

@ -1 +1 @@
0.5.4
0.6.0

View File

@ -0,0 +1,42 @@
<?php
/**
* ownCloud - migration to new version of the files sharing app
*
* @copyright (C) 2014 ownCloud, Inc.
*
* @author Bjoern Schiessle <schiessle@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 OCA\Files_Sharing;
class Migration {
/**
* set accepted to 1 for all external shares. At this point in time we only
* have shares from the first version of server-to-server sharing so all should
* be accepted
*/
public function addAcceptRow() {
$statement = 'UPDATE `*PREFIX*share_external` SET `accepted` = 1';
$connection = \OC::$server->getDatabaseConnection();
$query = $connection->prepare($statement);
$query->execute();
}
}

View File

@ -0,0 +1,76 @@
<?php
/**
* ownCloud
*
* @author Bjoern Schiessle
* @copyright 2014 Bjoern Schiessle <schiessle@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/>.
*
*/
use OCA\Files_Sharing\Tests\TestCase;
use OCA\Files_Sharing\Migration;
class MigrationTest extends TestCase {
/**
* @var \OCP\IDBConnection
*/
private $connection;
function __construct() {
parent::__construct();
$this->connection = \OC::$server->getDatabaseConnection();
}
function testAddAccept() {
$query = $this->connection->prepare('
INSERT INTO `*PREFIX*share_external`
(`remote`, `share_token`, `password`, `name`, `owner`, `user`, `mountpoint`, `mountpoint_hash`, `remote_id`, `accepted`)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
');
for ($i = 0; $i < 10; $i++) {
$query->execute(array('remote', 'token', 'password', 'name', 'owner', 'user', 'mount point', $i, $i, 0));
}
$query = $this->connection->prepare('SELECT `id` FROM `*PREFIX*share_external`');
$query->execute();
$dummyEntries = $query->fetchAll();
$this->assertSame(10, count($dummyEntries));
$m = new Migration();
$m->addAcceptRow();
// verify result
$query = $this->connection->prepare('SELECT `accepted` FROM `*PREFIX*share_external`');
$query->execute();
$results = $query->fetchAll();
$this->assertSame(10, count($results));
foreach ($results as $r) {
$this->assertSame(1, (int) $r['accepted']);
}
// cleanup
$cleanup = $this->connection->prepare('DELETE FROM `*PREFIX*share_external`');
$cleanup->execute();
}
}