diff --git a/apps/dav/appinfo/application.php b/apps/dav/appinfo/application.php index 593cd770be..c3811a4084 100644 --- a/apps/dav/appinfo/application.php +++ b/apps/dav/appinfo/application.php @@ -30,10 +30,6 @@ use OCA\DAV\CardDAV\SyncService; use OCA\DAV\Connector\Sabre\Principal; use OCA\DAV\DAV\GroupPrincipalBackend; use OCA\DAV\HookManager; -use OCA\Dav\Migration\AddressBookAdapter; -use OCA\Dav\Migration\CalendarAdapter; -use OCA\Dav\Migration\MigrateAddressbooks; -use OCA\Dav\Migration\MigrateCalendars; use \OCP\AppFramework\App; use OCP\AppFramework\IAppContainer; use OCP\Contacts\IManager; @@ -98,30 +94,6 @@ class Application extends App { return new CalDavBackend($db, $principal); }); - $container->registerService('MigrateAddressbooks', function($c) { - /** @var IAppContainer $c */ - $db = $c->getServer()->getDatabaseConnection(); - $logger = $c->getServer()->getLogger(); - return new MigrateAddressbooks( - new AddressBookAdapter($db), - $c->query('CardDavBackend'), - $logger, - null - ); - }); - - $container->registerService('MigrateCalendars', function($c) { - /** @var IAppContainer $c */ - $db = $c->getServer()->getDatabaseConnection(); - $logger = $c->getServer()->getLogger(); - return new MigrateCalendars( - new CalendarAdapter($db), - $c->query('CalDavBackend'), - $logger, - null - ); - }); - $container->registerService('BirthdayService', function($c) { /** @var IAppContainer $c */ $g = new GroupPrincipalBackend( @@ -186,38 +158,6 @@ class Application extends App { $jl->add(new SyncJob()); } - public function migrateAddressbooks() { - try { - /** @var MigrateAddressbooks $migration */ - $migration = $this->getContainer()->query('MigrateAddressbooks'); - $migration->setup(); - $userManager = $this->getContainer()->getServer()->getUserManager(); - - $userManager->callForAllUsers(function($user) use($migration) { - /** @var IUser $user */ - $migration->migrateForUser($user->getUID()); - }); - } catch (\Exception $ex) { - $this->getContainer()->getServer()->getLogger()->logException($ex); - } - } - - public function migrateCalendars() { - try { - /** @var MigrateCalendars $migration */ - $migration = $this->getContainer()->query('MigrateCalendars'); - $migration->setup(); - $userManager = $this->getContainer()->getServer()->getUserManager(); - - $userManager->callForAllUsers(function($user) use($migration) { - /** @var IUser $user */ - $migration->migrateForUser($user->getUID()); - }); - } catch (\Exception $ex) { - $this->getContainer()->getServer()->getLogger()->logException($ex); - } - } - public function generateBirthdays() { try { /** @var BirthdayService $migration */ diff --git a/apps/dav/appinfo/install.php b/apps/dav/appinfo/install.php index dc5ae39226..fbd41d25f4 100644 --- a/apps/dav/appinfo/install.php +++ b/apps/dav/appinfo/install.php @@ -23,6 +23,4 @@ use OCA\Dav\AppInfo\Application; $app = new Application(); $app->setupCron(); -$app->migrateAddressbooks(); -$app->migrateCalendars(); $app->generateBirthdays(); diff --git a/apps/dav/appinfo/register_command.php b/apps/dav/appinfo/register_command.php index 570848f0b2..b3ab25a99e 100644 --- a/apps/dav/appinfo/register_command.php +++ b/apps/dav/appinfo/register_command.php @@ -21,8 +21,6 @@ use OCA\Dav\AppInfo\Application; use OCA\DAV\Command\CreateAddressBook; use OCA\DAV\Command\CreateCalendar; -use OCA\Dav\Command\MigrateAddressbooks; -use OCA\Dav\Command\MigrateCalendars; use OCA\DAV\Command\SyncBirthdayCalendar; use OCA\DAV\Command\SyncSystemAddressBook; @@ -37,5 +35,3 @@ $application->add(new CreateCalendar($userManager, $groupManager, $dbConnection) $application->add(new CreateAddressBook($userManager, $app->getContainer()->query('CardDavBackend'))); $application->add(new SyncSystemAddressBook($app->getSyncService())); $application->add(new SyncBirthdayCalendar($userManager, $app->getContainer()->query('BirthdayService'))); -$application->add(new MigrateAddressbooks($userManager, $app->getContainer()->query('MigrateAddressbooks'))); -$application->add(new MigrateCalendars($userManager, $app->getContainer()->query('MigrateCalendars'))); diff --git a/apps/dav/command/migrateaddressbooks.php b/apps/dav/command/migrateaddressbooks.php deleted file mode 100644 index 562f19a230..0000000000 --- a/apps/dav/command/migrateaddressbooks.php +++ /dev/null @@ -1,86 +0,0 @@ - - * @author Thomas Müller - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ - -namespace OCA\Dav\Command; - -use OCP\IUser; -use OCP\IUserManager; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Helper\ProgressBar; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class MigrateAddressbooks extends Command { - - /** @var IUserManager */ - protected $userManager; - - /** @var \OCA\Dav\Migration\MigrateAddressbooks */ - private $service; - - /** - * @param IUserManager $userManager - * @param \OCA\Dav\Migration\MigrateAddressbooks $service - */ - function __construct(IUserManager $userManager, - \OCA\Dav\Migration\MigrateAddressbooks $service - ) { - parent::__construct(); - $this->userManager = $userManager; - $this->service = $service; - } - - protected function configure() { - $this - ->setName('dav:migrate-addressbooks') - ->setDescription('Migrate addressbooks from the contacts app to core') - ->addArgument('user', - InputArgument::OPTIONAL, - 'User for whom all addressbooks will be migrated'); - } - - protected function execute(InputInterface $input, OutputInterface $output) { - $this->service->setup(); - - $user = $input->getArgument('user'); - if (!is_null($user)) { - if (!$this->userManager->userExists($user)) { - throw new \InvalidArgumentException("User <$user> in unknown."); - } - $output->writeln("Start migration for $user"); - $this->service->migrateForUser($user); - return; - } - $output->writeln("Start migration of all known users ..."); - $p = new ProgressBar($output); - $p->start(); - $this->userManager->callForAllUsers(function($user) use ($p) { - $p->advance(); - /** @var IUser $user */ - $this->service->migrateForUser($user->getUID()); - }); - - $p->finish(); - $output->writeln(''); - } -} diff --git a/apps/dav/command/migratecalendars.php b/apps/dav/command/migratecalendars.php deleted file mode 100644 index d887309ac3..0000000000 --- a/apps/dav/command/migratecalendars.php +++ /dev/null @@ -1,85 +0,0 @@ - - * @author Thomas Müller - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\Dav\Command; - -use OCP\IUser; -use OCP\IUserManager; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Helper\ProgressBar; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class MigrateCalendars extends Command { - - /** @var IUserManager */ - protected $userManager; - - /** @var \OCA\Dav\Migration\MigrateCalendars */ - private $service; - - /** - * @param IUserManager $userManager - * @param \OCA\Dav\Migration\MigrateCalendars $service - */ - function __construct(IUserManager $userManager, - \OCA\Dav\Migration\MigrateCalendars $service - ) { - parent::__construct(); - $this->userManager = $userManager; - $this->service = $service; - } - - protected function configure() { - $this - ->setName('dav:migrate-calendars') - ->setDescription('Migrate calendars from the calendar app to core') - ->addArgument('user', - InputArgument::OPTIONAL, - 'User for whom all calendars will be migrated'); - } - - protected function execute(InputInterface $input, OutputInterface $output) { - $this->service->setup(); - - $user = $input->getArgument('user'); - if (!is_null($user)) { - if (!$this->userManager->userExists($user)) { - throw new \InvalidArgumentException("User <$user> in unknown."); - } - $output->writeln("Start migration for $user"); - $this->service->migrateForUser($user); - return; - } - $output->writeln("Start migration of all known users ..."); - $p = new ProgressBar($output); - $p->start(); - $this->userManager->callForAllUsers(function($user) use ($p) { - $p->advance(); - /** @var IUser $user */ - $this->service->migrateForUser($user->getUID()); - }); - - $p->finish(); - $output->writeln(''); - } -} diff --git a/apps/dav/lib/migration/addressbookadapter.php b/apps/dav/lib/migration/addressbookadapter.php deleted file mode 100644 index 5264747a00..0000000000 --- a/apps/dav/lib/migration/addressbookadapter.php +++ /dev/null @@ -1,106 +0,0 @@ - - * @author Thomas Müller - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\Dav\Migration; - -use OCP\IDBConnection; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class AddressBookAdapter { - - /** @var \OCP\IDBConnection */ - protected $dbConnection; - - /** @var string */ - private $sourceBookTable; - - /** @var string */ - private $sourceCardsTable; - - /** - * @param IDBConnection $dbConnection - * @param string $sourceBookTable - * @param string $sourceCardsTable - */ - function __construct(IDBConnection $dbConnection, - $sourceBookTable = 'contacts_addressbooks', - $sourceCardsTable = 'contacts_cards') { - $this->dbConnection = $dbConnection; - $this->sourceBookTable = $sourceBookTable; - $this->sourceCardsTable = $sourceCardsTable; - } - - /** - * @param string $user - * @param \Closure $callBack - */ - public function foreachBook($user, \Closure $callBack) { - // get all addressbooks of that user - $query = $this->dbConnection->getQueryBuilder(); - $stmt = $query->select('*')->from($this->sourceBookTable) - ->where($query->expr()->eq('userid', $query->createNamedParameter($user))) - ->execute(); - - while($row = $stmt->fetch()) { - $callBack($row); - } - } - - public function setup() { - if (!$this->dbConnection->tableExists($this->sourceBookTable)) { - throw new \DomainException('Contacts tables are missing. Nothing to do.'); - } - } - - /** - * @param int $addressBookId - * @param \Closure $callBack - */ - public function foreachCard($addressBookId, \Closure $callBack) { - $query = $this->dbConnection->getQueryBuilder(); - $stmt = $query->select('*')->from($this->sourceCardsTable) - ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))) - ->execute(); - - while($row = $stmt->fetch()) { - $callBack($row); - } - } - - /** - * @param int $addressBookId - * @return array - */ - public function getShares($addressBookId) { - $query = $this->dbConnection->getQueryBuilder(); - $shares = $query->select('*')->from('share') - ->where($query->expr()->eq('item_source', $query->createNamedParameter($addressBookId))) - ->andWhere($query->expr()->eq('item_type', $query->expr()->literal('addressbook'))) - ->andWhere($query->expr()->in('share_type', [ $query->expr()->literal(0), $query->expr()->literal(1)])) - ->execute() - ->fetchAll(); - - return $shares; - } -} diff --git a/apps/dav/lib/migration/calendaradapter.php b/apps/dav/lib/migration/calendaradapter.php deleted file mode 100644 index d02f2256c3..0000000000 --- a/apps/dav/lib/migration/calendaradapter.php +++ /dev/null @@ -1,102 +0,0 @@ - - * @author Thomas Müller - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\Dav\Migration; - -use OCP\IDBConnection; - -class CalendarAdapter { - - /** @var \OCP\IDBConnection */ - protected $dbConnection; - - /** @var string */ - private $sourceCalendarTable; - - /** @var string */ - private $sourceCalObjTable; - - /** - * @param IDBConnection $dbConnection - * @param string $sourceCalendarTable - * @param string $sourceCalObjTable - */ - function __construct(IDBConnection $dbConnection, - $sourceCalendarTable = 'clndr_calendars', - $sourceCalObjTable = 'clndr_objects') { - $this->dbConnection = $dbConnection; - $this->sourceCalendarTable = $sourceCalendarTable; - $this->sourceCalObjTable = $sourceCalObjTable; - } - - /** - * @param string $user - * @param \Closure $callBack - */ - public function foreachCalendar($user, \Closure $callBack) { - // get all calendars of that user - $query = $this->dbConnection->getQueryBuilder(); - $stmt = $query->select('*')->from($this->sourceCalendarTable) - ->where($query->expr()->eq('userid', $query->createNamedParameter($user))) - ->execute(); - - while($row = $stmt->fetch()) { - $callBack($row); - } - } - - public function setup() { - if (!$this->dbConnection->tableExists($this->sourceCalendarTable)) { - throw new \DomainException('Calendar tables are missing. Nothing to do.'); - } - } - - /** - * @param int $calendarId - * @param \Closure $callBack - */ - public function foreachCalendarObject($calendarId, \Closure $callBack) { - $query = $this->dbConnection->getQueryBuilder(); - $stmt = $query->select('*')->from($this->sourceCalObjTable) - ->where($query->expr()->eq('calendarid', $query->createNamedParameter($calendarId))) - ->execute(); - - while($row = $stmt->fetch()) { - $callBack($row); - } - } - - /** - * @param int $addressBookId - * @return array - */ - public function getShares($addressBookId) { - $query = $this->dbConnection->getQueryBuilder(); - $shares = $query->select('*')->from('share') - ->where($query->expr()->eq('item_source', $query->createNamedParameter($addressBookId))) - ->andWhere($query->expr()->eq('item_type', $query->expr()->literal('calendar'))) - ->andWhere($query->expr()->in('share_type', [ $query->expr()->literal(0), $query->expr()->literal(1)])) - ->execute() - ->fetchAll(); - - return $shares; - } -} diff --git a/apps/dav/lib/migration/migrateaddressbooks.php b/apps/dav/lib/migration/migrateaddressbooks.php deleted file mode 100644 index 7e1f47ea75..0000000000 --- a/apps/dav/lib/migration/migrateaddressbooks.php +++ /dev/null @@ -1,131 +0,0 @@ - - * @author Thomas Müller - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\Dav\Migration; - -use OCA\DAV\CardDAV\AddressBook; -use OCA\DAV\CardDAV\CardDavBackend; -use OCP\ILogger; -use Sabre\CardDAV\Plugin; -use Symfony\Component\Console\Output\OutputInterface; - -class MigrateAddressbooks { - - /** @var AddressBookAdapter */ - protected $adapter; - - /** @var CardDavBackend */ - private $backend; - - /** @var ILogger */ - private $logger; - - /** @var OutputInterface */ - private $consoleOutput; - - - /** - * @param AddressBookAdapter $adapter - * @param CardDavBackend $backend - */ - function __construct(AddressBookAdapter $adapter, - CardDavBackend $backend, - ILogger $logger, - OutputInterface $consoleOutput = null - ) { - $this->adapter = $adapter; - $this->backend = $backend; - $this->logger = $logger; - $this->consoleOutput = $consoleOutput; - } - - /** - * @param string $user - */ - public function migrateForUser($user) { - - $this->adapter->foreachBook($user, function($book) use ($user) { - $principal = "principals/users/$user"; - $knownBooks = $this->backend->getAddressBooksByUri($principal, $book['uri']); - if (!is_null($knownBooks)) { - return; - } - - $newId = $this->backend->createAddressBook($principal, $book['uri'], [ - '{DAV:}displayname' => $book['displayname'], - '{' . Plugin::NS_CARDDAV . '}addressbook-description' => $book['description'] - ]); - - $this->migrateBook($book['id'], $newId); - $this->migrateShares($book['id'], $newId); - }); - } - - public function setup() { - $this->adapter->setup(); - } - - /** - * @param int $addressBookId - * @param int $newAddressBookId - */ - private function migrateBook($addressBookId, $newAddressBookId) { - $this->adapter->foreachCard($addressBookId, function($card) use ($newAddressBookId) { - try { - $this->backend->createCard($newAddressBookId, $card['uri'], $card['carddata']); - } catch (\Exception $ex) { - $eventId = $card['id']; - $addressBookId = $card['addressbookid']; - $msg = "One event could not be migrated. (id: $eventId, addressbookid: $addressBookId)"; - $this->logger->logException($ex, ['app' => 'dav', 'message' => $msg]); - if (!is_null($this->consoleOutput)) { - $this->consoleOutput->writeln($msg); - } - } - }); - } - - /** - * @param int $addressBookId - * @param int $newAddressBookId - */ - private function migrateShares($addressBookId, $newAddressBookId) { - $shares =$this->adapter->getShares($addressBookId); - if (empty($shares)) { - return; - } - - $add = array_map(function($s) { - $prefix = 'principal:principals/users/'; - if ((int)$s['share_type'] === 1) { - $prefix = 'principal:principals/groups/'; - } - return [ - 'href' => $prefix . $s['share_with'], - 'readOnly' => !((int)$s['permissions'] === 31) - ]; - }, $shares); - - $newAddressBook = $this->backend->getAddressBookById($newAddressBookId); - $book = new AddressBook($this->backend, $newAddressBook); - $this->backend->updateShares($book, $add, []); - } -} diff --git a/apps/dav/lib/migration/migratecalendars.php b/apps/dav/lib/migration/migratecalendars.php deleted file mode 100644 index 3c1487761c..0000000000 --- a/apps/dav/lib/migration/migratecalendars.php +++ /dev/null @@ -1,132 +0,0 @@ - - * @author Thomas Müller - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\Dav\Migration; - -use OCA\DAV\CalDAV\CalDavBackend; -use OCA\DAV\CalDAV\Calendar; -use OCP\ILogger; -use Symfony\Component\Console\Output\OutputInterface; - -class MigrateCalendars { - - /** @var CalendarAdapter */ - protected $adapter; - - /** @var CalDavBackend */ - private $backend; - - /** @var ILogger */ - private $logger; - - /** @var OutputInterface */ - private $consoleOutput; - - /** - * @param CalendarAdapter $adapter - * @param CalDavBackend $backend - */ - function __construct(CalendarAdapter $adapter, - CalDavBackend $backend, - ILogger $logger, - OutputInterface $consoleOutput = null - ) { - $this->adapter = $adapter; - $this->backend = $backend; - $this->logger = $logger; - $this->consoleOutput = $consoleOutput; - } - - /** - * @param string $user - */ - public function migrateForUser($user) { - - $this->adapter->foreachCalendar($user, function($calendar) use ($user) { - $principal = "principals/users/$user"; - $calendarByUri = $this->backend->getCalendarByUri($principal, $calendar['uri']); - if (!is_null($calendarByUri)) { - return; - } - - $newId = $this->backend->createCalendar($principal, $calendar['uri'], [ - '{DAV:}displayname' => $calendar['displayname'], - '{urn:ietf:params:xml:ns:caldav}calendar-description' => $calendar['displayname'], - '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => $calendar['timezone'], - '{http://apple.com/ns/ical/}calendar-order' => $calendar['calendarorder'], - '{http://apple.com/ns/ical/}calendar-color' => $calendar['calendarcolor'], - ]); - - $this->migrateCalendar($calendar['id'], $newId); - $this->migrateShares($calendar['id'], $newId); - }); - } - - public function setup() { - $this->adapter->setup(); - } - - /** - * @param int $calendarId - * @param int $newCalendarId - */ - private function migrateCalendar($calendarId, $newCalendarId) { - $this->adapter->foreachCalendarObject($calendarId, function($calObject) use ($newCalendarId) { - try { - $this->backend->createCalendarObject($newCalendarId, $calObject['uri'], $calObject['calendardata']); - } catch (\Exception $ex) { - $eventId = $calObject['id']; - $calendarId = $calObject['calendarId']; - $msg = "One event could not be migrated. (id: $eventId, calendarid: $calendarId)"; - $this->logger->logException($ex, ['app' => 'dav', 'message' => $msg]); - if (!is_null($this->consoleOutput)) { - $this->consoleOutput->writeln($msg); - } - } - }); - } - - /** - * @param int $calendarId - * @param int $newCalendarId - */ - private function migrateShares($calendarId, $newCalendarId) { - $shares =$this->adapter->getShares($calendarId); - if (empty($shares)) { - return; - } - - $add = array_map(function($s) { - $prefix = 'principal:principals/users/'; - if ((int)$s['share_type'] === 1) { - $prefix = 'principal:principals/groups/'; - } - return [ - 'href' => $prefix . $s['share_with'], - 'readOnly' => !((int)$s['permissions'] === 31) - ]; - }, $shares); - - $newCalendar = $this->backend->getCalendarById($newCalendarId); - $calendar = new Calendar($this->backend, $newCalendar); - $this->backend->updateShares($calendar, $add, []); - } -} diff --git a/apps/dav/tests/unit/migration/addressbookadaptertest.php b/apps/dav/tests/unit/migration/addressbookadaptertest.php deleted file mode 100644 index e6e57049a9..0000000000 --- a/apps/dav/tests/unit/migration/addressbookadaptertest.php +++ /dev/null @@ -1,129 +0,0 @@ - - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\DAV\Tests\Unit\Migration; - -use DomainException; -use OCA\Dav\Migration\AddressBookAdapter; -use OCP\IDBConnection; -use Test\TestCase; - -/** - * Class AddressbookAdapterTest - * - * @group DB - * - * @package OCA\DAV\Tests\Unit\Migration - */ -class AddressbookAdapterTest extends TestCase { - - /** @var IDBConnection */ - private $db; - /** @var AddressBookAdapter */ - private $adapter; - /** @var array */ - private $books = []; - /** @var array */ - private $cards = []; - - public function setUp() { - parent::setUp(); - $this->db = \OC::$server->getDatabaseConnection(); - - $manager = new \OC\DB\MDB2SchemaManager($this->db); - $manager->createDbFromStructure(__DIR__ . '/contacts_schema.xml'); - - $this->adapter = new AddressBookAdapter($this->db); - } - - public function tearDown() { - $this->db->dropTable('contacts_addressbooks'); - $this->db->dropTable('contacts_cards'); - parent::tearDown(); - } - - /** - * @expectedException DomainException - */ - public function testOldTablesDoNotExist() { - $adapter = new AddressBookAdapter(\OC::$server->getDatabaseConnection(), 'crazy_table_that_does_no_exist'); - $adapter->setup(); - } - - public function test() { - - // insert test data - $builder = $this->db->getQueryBuilder(); - $builder->insert('contacts_addressbooks') - ->values([ - 'userid' => $builder->createNamedParameter('test-user-666'), - 'displayname' => $builder->createNamedParameter('Display Name'), - 'uri' => $builder->createNamedParameter('contacts'), - 'description' => $builder->createNamedParameter('An address book for testing'), - 'ctag' => $builder->createNamedParameter('112233'), - 'active' => $builder->createNamedParameter('1') - ]) - ->execute(); - $builder = $this->db->getQueryBuilder(); - $builder->insert('contacts_cards') - ->values([ - 'addressbookid' => $builder->createNamedParameter(6666), - 'fullname' => $builder->createNamedParameter('Full Name'), - 'carddata' => $builder->createNamedParameter('datadatadata'), - 'uri' => $builder->createNamedParameter('some-card.vcf'), - 'lastmodified' => $builder->createNamedParameter('112233'), - ]) - ->execute(); - $builder = $this->db->getQueryBuilder(); - $builder->insert('share') - ->values([ - 'share_type' => $builder->createNamedParameter(1), - 'share_with' => $builder->createNamedParameter('user01'), - 'uid_owner' => $builder->createNamedParameter('user02'), - 'item_type' => $builder->createNamedParameter('addressbook'), - 'item_source' => $builder->createNamedParameter(6666), - 'item_target' => $builder->createNamedParameter('Contacts (user02)'), - ]) - ->execute(); - - // test the adapter - $this->adapter->foreachBook('test-user-666', function($row) { - $this->books[] = $row; - }); - $this->assertArrayHasKey('id', $this->books[0]); - $this->assertEquals('test-user-666', $this->books[0]['userid']); - $this->assertEquals('Display Name', $this->books[0]['displayname']); - $this->assertEquals('contacts', $this->books[0]['uri']); - $this->assertEquals('An address book for testing', $this->books[0]['description']); - $this->assertEquals('112233', $this->books[0]['ctag']); - - $this->adapter->foreachCard(6666, function($row) { - $this->cards[]= $row; - }); - $this->assertArrayHasKey('id', $this->cards[0]); - $this->assertEquals(6666, $this->cards[0]['addressbookid']); - - // test getShares - $shares = $this->adapter->getShares(6666); - $this->assertEquals(1, count($shares)); - - } - -} diff --git a/apps/dav/tests/unit/migration/calendar_schema.xml b/apps/dav/tests/unit/migration/calendar_schema.xml deleted file mode 100644 index 6c88b596a3..0000000000 --- a/apps/dav/tests/unit/migration/calendar_schema.xml +++ /dev/null @@ -1,191 +0,0 @@ - - - - *dbname* - true - false - - utf8 - - - - *dbprefix*clndr_objects - - - - - id - integer - 0 - true - 1 - true - 4 - - - - calendarid - integer - - true - true - 4 - - - - objecttype - text - - true - 40 - - - - startdate - timestamp - 1970-01-01 00:00:00 - false - - - - enddate - timestamp - 1970-01-01 00:00:00 - false - - - - repeating - integer - - false - 4 - - - - summary - text - - false - 255 - - - - calendardata - clob - false - - - - uri - text - - false - 255 - - - - lastmodified - integer - - false - 4 - - - - -
- - - - *dbprefix*clndr_calendars - - - - - id - integer - 0 - true - 1 - true - 4 - - - - userid - text - - false - 255 - - - - displayname - text - - false - 100 - - - - uri - text - - false - 255 - - - - active - integer - 1 - true - 4 - - - - ctag - integer - 0 - true - true - 4 - - - - calendarorder - integer - 0 - true - true - 4 - - - - calendarcolor - text - - false - 10 - - - - timezone - clob - false - - - - components - text - - false - 100 - - - - -
- -
diff --git a/apps/dav/tests/unit/migration/calendaradaptertest.php b/apps/dav/tests/unit/migration/calendaradaptertest.php deleted file mode 100644 index f92774ef6a..0000000000 --- a/apps/dav/tests/unit/migration/calendaradaptertest.php +++ /dev/null @@ -1,131 +0,0 @@ - - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\DAV\Tests\Unit\Migration; - -use DomainException; -use OCA\Dav\Migration\AddressBookAdapter; -use OCA\Dav\Migration\CalendarAdapter; -use OCP\IDBConnection; -use Test\TestCase; - -/** - * Class CalendarAdapterTest - * - * @group DB - * - * @package OCA\DAV\Tests\Unit\Migration - */ -class CalendarAdapterTest extends TestCase { - - /** @var IDBConnection */ - private $db; - /** @var CalendarAdapter */ - private $adapter; - /** @var array */ - private $cals = []; - /** @var array */ - private $calObjs = []; - - public function setUp() { - parent::setUp(); - $this->db = \OC::$server->getDatabaseConnection(); - - $manager = new \OC\DB\MDB2SchemaManager($this->db); - $manager->createDbFromStructure(__DIR__ . '/calendar_schema.xml'); - - $this->adapter = new CalendarAdapter($this->db); - } - - public function tearDown() { - $this->db->dropTable('clndr_calendars'); - $this->db->dropTable('clndr_objects'); - parent::tearDown(); - } - - /** - * @expectedException DomainException - */ - public function testOldTablesDoNotExist() { - $adapter = new AddressBookAdapter(\OC::$server->getDatabaseConnection(), 'crazy_table_that_does_no_exist'); - $adapter->setup(); - } - - public function test() { - - // insert test data - $builder = $this->db->getQueryBuilder(); - $builder->insert('clndr_calendars') - ->values([ - 'userid' => $builder->createNamedParameter('test-user-666'), - 'displayname' => $builder->createNamedParameter('Display Name'), - 'uri' => $builder->createNamedParameter('events'), - 'ctag' => $builder->createNamedParameter('112233'), - 'active' => $builder->createNamedParameter('1') - ]) - ->execute(); - $builder = $this->db->getQueryBuilder(); - $builder->insert('clndr_objects') - ->values([ - 'calendarid' => $builder->createNamedParameter(6666), - 'objecttype' => $builder->createNamedParameter('VEVENT'), - 'startdate' => $builder->createNamedParameter(new \DateTime(), 'datetime'), - 'enddate' => $builder->createNamedParameter(new \DateTime(), 'datetime'), - 'repeating' => $builder->createNamedParameter(0), - 'summary' => $builder->createNamedParameter('Something crazy will happen'), - 'uri' => $builder->createNamedParameter('event.ics'), - 'lastmodified' => $builder->createNamedParameter('112233'), - ]) - ->execute(); - $builder = $this->db->getQueryBuilder(); - $builder->insert('share') - ->values([ - 'share_type' => $builder->createNamedParameter(1), - 'share_with' => $builder->createNamedParameter('user01'), - 'uid_owner' => $builder->createNamedParameter('user02'), - 'item_type' => $builder->createNamedParameter('calendar'), - 'item_source' => $builder->createNamedParameter(6666), - 'item_target' => $builder->createNamedParameter('Contacts (user02)'), - ]) - ->execute(); - - // test the adapter - $this->adapter->foreachCalendar('test-user-666', function($row) { - $this->cals[] = $row; - }); - $this->assertArrayHasKey('id', $this->cals[0]); - $this->assertEquals('test-user-666', $this->cals[0]['userid']); - $this->assertEquals('Display Name', $this->cals[0]['displayname']); - $this->assertEquals('events', $this->cals[0]['uri']); - $this->assertEquals('112233', $this->cals[0]['ctag']); - - $this->adapter->foreachCalendarObject(6666, function($row) { - $this->calObjs[]= $row; - }); - $this->assertArrayHasKey('id', $this->calObjs[0]); - $this->assertEquals(6666, $this->calObjs[0]['calendarid']); - - // test getShares - $shares = $this->adapter->getShares(6666); - $this->assertEquals(1, count($shares)); - - } - -} diff --git a/apps/dav/tests/unit/migration/contacts_schema.xml b/apps/dav/tests/unit/migration/contacts_schema.xml deleted file mode 100644 index 51836a1e0c..0000000000 --- a/apps/dav/tests/unit/migration/contacts_schema.xml +++ /dev/null @@ -1,151 +0,0 @@ - - - - *dbname* - true - false - utf8 - - - *dbprefix*contacts_addressbooks - - - - - id - integer - 0 - true - 1 - true - 4 - - - - userid - text - - true - 255 - - - - displayname - text - - false - 255 - - - - uri - text - - false - 200 - - - - description - text - false - 255 - - - - ctag - integer - 1 - true - true - 4 - - - - active - integer - 1 - true - 4 - - - - c_addressbook_userid_index - - userid - ascending - - - - -
- - - - *dbprefix*contacts_cards - - - - - id - integer - 0 - true - 1 - true - 4 - - - - addressbookid - integer - - true - true - 4 - - - - fullname - text - - false - 255 - - - - carddata - clob - false - - - - uri - text - - false - 200 - - - - lastmodified - integer - - false - true - 4 - - - - - c_addressbookid_index - - addressbookid - ascending - - - - -
- -
diff --git a/apps/dav/tests/unit/migration/migrateaddressbooktest.php b/apps/dav/tests/unit/migration/migrateaddressbooktest.php deleted file mode 100644 index 31cb16265c..0000000000 --- a/apps/dav/tests/unit/migration/migrateaddressbooktest.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\DAV\Tests\Unit\Migration; - -use OCA\DAV\CardDAV\CardDavBackend; -use OCA\Dav\Migration\AddressBookAdapter; -use OCP\ILogger; -use Test\TestCase; - -class MigrateAddressbookTest extends TestCase { - - public function testMigration() { - /** @var AddressBookAdapter | \PHPUnit_Framework_MockObject_MockObject $adapter */ - $adapter = $this->mockAdapter([ - ['share_type' => '1', 'share_with' => 'users', 'permissions' => '31'], - ['share_type' => '2', 'share_with' => 'adam', 'permissions' => '1'], - ]); - - /** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $cardDav */ - $cardDav = $this->getMockBuilder('\OCA\Dav\CardDAV\CardDAVBackend')->disableOriginalConstructor()->getMock(); - $cardDav->expects($this->any())->method('createAddressBook')->willReturn(666); - $cardDav->expects($this->any())->method('getAddressBookById')->willReturn([]); - $cardDav->expects($this->once())->method('createAddressBook')->with('principals/users/test01', 'test_contacts'); - $cardDav->expects($this->once())->method('createCard')->with(666, '63f0dd6c-39d5-44be-9d34-34e7a7441fc2.vcf', 'BEGIN:VCARD'); - $cardDav->expects($this->once())->method('updateShares')->with($this->anything(), [ - ['href' => 'principal:principals/groups/users', 'readOnly' => false], - ['href' => 'principal:principals/users/adam', 'readOnly' => true] - ]); - /** @var ILogger $logger */ - $logger = $this->getMockBuilder('\OCP\ILogger')->disableOriginalConstructor()->getMock(); - - $m = new \OCA\Dav\Migration\MigrateAddressbooks($adapter, $cardDav, $logger, null); - $m->migrateForUser('test01'); - } - - /** - * @return \PHPUnit_Framework_MockObject_MockObject - */ - private function mockAdapter($shares = []) { - $adapter = $this->getMockBuilder('\OCA\Dav\Migration\AddressBookAdapter')->disableOriginalConstructor()->getMock(); - $adapter->expects($this->any())->method('foreachBook')->willReturnCallback(function ($user, \Closure $callBack) { - $callBack([ - 'id' => 0, - 'userid' => $user, - 'displayname' => 'Test Contacts', - 'uri' => 'test_contacts', - 'description' => 'Contacts to test with', - 'ctag' => 1234567890, - 'active' => 1 - ]); - }); - $adapter->expects($this->any())->method('foreachCard')->willReturnCallback(function ($addressBookId, \Closure $callBack) { - $callBack([ - 'userid' => $addressBookId, - 'uri' => '63f0dd6c-39d5-44be-9d34-34e7a7441fc2.vcf', - 'carddata' => 'BEGIN:VCARD' - ]); - }); - $adapter->expects($this->any())->method('getShares')->willReturn($shares); - return $adapter; - } - -} diff --git a/apps/dav/tests/unit/migration/migratecalendartest.php b/apps/dav/tests/unit/migration/migratecalendartest.php deleted file mode 100644 index e62970aef3..0000000000 --- a/apps/dav/tests/unit/migration/migratecalendartest.php +++ /dev/null @@ -1,85 +0,0 @@ - - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program 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, version 3, - * along with this program. If not, see - * - */ -namespace OCA\DAV\Tests\Unit\Migration; - -use OCA\DAV\CalDAV\CalDavBackend; -use OCA\Dav\Migration\CalendarAdapter; -use OCP\ILogger; -use Test\TestCase; - -class MigrateCalendarTest extends TestCase { - - public function testMigration() { - /** @var CalendarAdapter | \PHPUnit_Framework_MockObject_MockObject $adapter */ - $adapter = $this->mockAdapter([ - ['share_type' => '1', 'share_with' => 'users', 'permissions' => '31'], - ['share_type' => '2', 'share_with' => 'adam', 'permissions' => '1'], - ]); - - /** @var CalDavBackend | \PHPUnit_Framework_MockObject_MockObject $cardDav */ - $cardDav = $this->getMockBuilder('\OCA\Dav\CalDAV\CalDAVBackend')->disableOriginalConstructor()->getMock(); - $cardDav->expects($this->any())->method('createCalendar')->willReturn(666); - $cardDav->expects($this->once())->method('createCalendar')->with('principals/users/test01', 'test_contacts'); - $cardDav->expects($this->once())->method('createCalendarObject')->with(666, '63f0dd6c-39d5-44be-9d34-34e7a7441fc2.ics', 'BEGIN:VCARD'); - $cardDav->expects($this->once())->method('updateShares')->with($this->anything(), [ - ['href' => 'principal:principals/groups/users', 'readOnly' => false], - ['href' => 'principal:principals/users/adam', 'readOnly' => true] - ]); - /** @var ILogger $logger */ - $logger = $this->getMockBuilder('\OCP\ILogger')->disableOriginalConstructor()->getMock(); - - $m = new \OCA\Dav\Migration\MigrateCalendars($adapter, $cardDav, $logger, null); - $m->migrateForUser('test01'); - } - - /** - * @return \PHPUnit_Framework_MockObject_MockObject - */ - private function mockAdapter($shares = [], $calData = 'BEGIN:VCARD') { - $adapter = $this->getMockBuilder('\OCA\Dav\Migration\CalendarAdapter') - ->disableOriginalConstructor() - ->getMock(); - $adapter->expects($this->any())->method('foreachCalendar')->willReturnCallback(function ($user, \Closure $callBack) { - $callBack([ - // calendarorder | calendarcolor | timezone | components - 'id' => 0, - 'userid' => $user, - 'displayname' => 'Test Contacts', - 'uri' => 'test_contacts', - 'ctag' => 1234567890, - 'active' => 1, - 'calendarorder' => '0', - 'calendarcolor' => '#b3dc6c', - 'timezone' => null, - 'components' => 'VEVENT,VTODO,VJOURNAL' - ]); - }); - $adapter->expects($this->any())->method('foreachCalendarObject')->willReturnCallback(function ($addressBookId, \Closure $callBack) use ($calData) { - $callBack([ - 'userid' => $addressBookId, - 'uri' => '63f0dd6c-39d5-44be-9d34-34e7a7441fc2.ics', - 'calendardata' => $calData - ]); - }); - $adapter->expects($this->any())->method('getShares')->willReturn($shares); - return $adapter; - } -}