diff options
author | Bjoern Schiessle <schiessle@owncloud.com> | 2015-01-12 17:04:19 +0100 |
---|---|---|
committer | Bjoern Schiessle <schiessle@owncloud.com> | 2015-01-13 17:24:00 +0100 |
commit | d50e70ba3a2277becfb9293d0b45e044b6385174 (patch) | |
tree | 6da59be29f87240bb6c974a81de7379f539b5b6c /apps | |
parent | 331d73c3a37e74f1e322b9bfb239940275422a65 (diff) | |
download | nextcloud-server-d50e70ba3a2277becfb9293d0b45e044b6385174.tar.gz nextcloud-server-d50e70ba3a2277becfb9293d0b45e044b6385174.zip |
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
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/appinfo/update.php | 12 | ||||
-rw-r--r-- | apps/files_sharing/appinfo/version | 2 | ||||
-rw-r--r-- | apps/files_sharing/lib/migration.php | 42 | ||||
-rw-r--r-- | apps/files_sharing/tests/migrationtest.php | 76 |
4 files changed, 131 insertions, 1 deletions
diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php new file mode 100644 index 00000000000..1e910eb6ac1 --- /dev/null +++ b/apps/files_sharing/appinfo/update.php @@ -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(); +} + diff --git a/apps/files_sharing/appinfo/version b/apps/files_sharing/appinfo/version index 7d8568351b4..a918a2aa18d 100644 --- a/apps/files_sharing/appinfo/version +++ b/apps/files_sharing/appinfo/version @@ -1 +1 @@ -0.5.4 +0.6.0 diff --git a/apps/files_sharing/lib/migration.php b/apps/files_sharing/lib/migration.php new file mode 100644 index 00000000000..1a3bfecffb0 --- /dev/null +++ b/apps/files_sharing/lib/migration.php @@ -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(); + } + + +} diff --git a/apps/files_sharing/tests/migrationtest.php b/apps/files_sharing/tests/migrationtest.php new file mode 100644 index 00000000000..1f29d9bed04 --- /dev/null +++ b/apps/files_sharing/tests/migrationtest.php @@ -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(); + } + +} |