diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-09-17 16:01:11 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2015-10-01 08:27:12 +0200 |
commit | 6e104bc933036b77b2967334a99922eb26c40dbc (patch) | |
tree | cd4d0447836a92f94ae147d32068f0f28491759b /tests | |
parent | 50874de1cae27907ec17f481dd5e1117cc3bdc78 (diff) | |
download | nextcloud-server-6e104bc933036b77b2967334a99922eb26c40dbc.tar.gz nextcloud-server-6e104bc933036b77b2967334a99922eb26c40dbc.zip |
Repair step to remove bogus expiration dates from non-link shares
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/repair/repairinvalidshares.php | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/tests/lib/repair/repairinvalidshares.php b/tests/lib/repair/repairinvalidshares.php new file mode 100644 index 00000000000..f5b522f6b4f --- /dev/null +++ b/tests/lib/repair/repairinvalidshares.php @@ -0,0 +1,111 @@ +<?php +/** + * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +namespace Test\Repair; + +/** + * Tests for repairing invalid shares + * + * @see \OC\Repair\RepairInvalidShares + */ +class RepairInvalidShares extends \Test\TestCase { + + /** @var \OC\RepairStep */ + private $repair; + + /** @var \OCP\IDBConnection */ + private $connection; + + protected function setUp() { + parent::setUp(); + + $config = $this->getMockBuilder('OCP\IConfig') + ->disableOriginalConstructor() + ->getMock(); + $config->expects($this->any()) + ->method('getSystemValue') + ->with('version') + ->will($this->returnValue('8.0.0.0')); + + $this->connection = \OC::$server->getDatabaseConnection(); + + $this->repair = new \OC\Repair\RepairInvalidShares($config, $this->connection); + } + + protected function tearDown() { + $qb = $this->connection->getQueryBuilder(); + $qb->delete('share')->execute(); + + parent::tearDown(); + } + + /** + * Test remove expiration date for non-link shares + */ + public function testRemoveExpirationDateForNonLinkShares() { + // user share with bogus expiration date + $qb = $this->connection->getQueryBuilder(); + $qb->insert('share') + ->values([ + 'share_type' => $qb->expr()->literal(\OC\Share\Constants::SHARE_TYPE_USER), + 'share_with' => $qb->expr()->literal('recipientuser1'), + 'uid_owner' => $qb->expr()->literal('user1'), + 'item_type' => $qb->expr()->literal('folder'), + 'item_source' => $qb->expr()->literal(123), + 'item_target' => $qb->expr()->literal('/123'), + 'file_source' => $qb->expr()->literal(123), + 'file_target' => $qb->expr()->literal('/test'), + 'permissions' => $qb->expr()->literal(1), + 'stime' => $qb->expr()->literal(time()), + 'expiration' => $qb->expr()->literal('2015-09-25 00:00:00') + ]) + ->execute(); + + // select because lastInsertId does not work with OCI + $results = $this->connection->getQueryBuilder() + ->select('id') + ->from('share') + ->execute() + ->fetchAll(); + $bogusShareId = $results[0]['id']; + + // link share with expiration date + $qb = $this->connection->getQueryBuilder(); + $qb->insert('share') + ->values([ + 'share_type' => $qb->expr()->literal(\OC\Share\Constants::SHARE_TYPE_LINK), + 'uid_owner' => $qb->expr()->literal('user1'), + 'item_type' => $qb->expr()->literal('folder'), + 'item_source' => $qb->expr()->literal(123), + 'item_target' => $qb->expr()->literal('/123'), + 'file_source' => $qb->expr()->literal(123), + 'file_target' => $qb->expr()->literal('/test'), + 'permissions' => $qb->expr()->literal(1), + 'stime' => $qb->expr()->literal(time()), + 'expiration' => $qb->expr()->literal('2015-09-25 00:00:00'), + 'token' => $qb->expr()->literal('abcdefg') + ])->execute(); + + $this->repair->run(); + + $results = $this->connection->getQueryBuilder() + ->select('*') + ->from('share') + ->orderBy('share_type', 'ASC') + ->execute() + ->fetchAll(); + + $this->assertCount(2, $results); + + $userShare = $results[0]; + $linkShare = $results[1]; + $this->assertEquals($bogusShareId, $userShare['id'], 'sanity check'); + $this->assertNull($userShare['expiration'], 'bogus expiration date was removed'); + $this->assertNotNull($linkShare['expiration'], 'valid link share expiration date still there'); + } +} + |