diff options
author | Bjoern Schiessle <schiessle@owncloud.com> | 2015-07-03 17:04:05 +0200 |
---|---|---|
committer | Bjoern Schiessle <schiessle@owncloud.com> | 2015-07-06 17:24:05 +0200 |
commit | 058d910f5e85ca71d20272d8ca89dc3caf64cef2 (patch) | |
tree | f241a67a937e7868525cb9f1babda359510bb639 /tests | |
parent | 763b601e4aa109bcade4af687c4c6a9b8e66b5df (diff) | |
download | nextcloud-server-058d910f5e85ca71d20272d8ca89dc3caf64cef2.tar.gz nextcloud-server-058d910f5e85ca71d20272d8ca89dc3caf64cef2.zip |
intproduce pre_addToGroup hook. we need to calculate the possible unique
targets before the user was added to the group otherwise we will always detect
a name collision
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/share/hooktests.php | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/lib/share/hooktests.php b/tests/lib/share/hooktests.php new file mode 100644 index 00000000000..f980baf3574 --- /dev/null +++ b/tests/lib/share/hooktests.php @@ -0,0 +1,108 @@ +<?php +/** + * @author Björn Schießle <schiessle@owncloud.com> + * + * @copyright Copyright (c) 2015, 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 <http://www.gnu.org/licenses/> + * + */ + + +namespace OC\Tests\Share; + + +use Test\TestCase; + +class HookTests extends TestCase { + + protected function setUp() { + parent::setUp(); + } + + protected function tearDown() { + $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `item_type` = ?'); + $query->execute(array('test')); + + parent::tearDown(); + } + + public function testPostAddToGroup() { + + /** @var \OC\DB\Connection $connection */ + $connection = \OC::$server->getDatabaseConnection(); + $query = $connection->createQueryBuilder(); + $expr = $query->expr(); + + // add some dummy values to the private $updateTargets variable + $this->invokePrivate( + new \OC\Share\Hooks(), + 'updateTargets', + [ + [ + 'group1' => + [ + [ + '`item_type`' => $expr->literal('test'), + '`item_source`' => $expr->literal('42'), + '`item_target`' => $expr->literal('42'), + '`file_target`' => $expr->literal('test'), + '`share_type`' => $expr->literal('2'), + '`share_with`' => $expr->literal('group1'), + '`uid_owner`' => $expr->literal('owner'), + '`permissions`' => $expr->literal('0'), + '`stime`' => $expr->literal('676584'), + '`file_source`' => $expr->literal('42'), + ], + [ + '`item_type`' => $expr->literal('test'), + '`item_source`' => $expr->literal('42'), + '`item_target`' => $expr->literal('42 (2)'), + '`share_type`' => $expr->literal('2'), + '`share_with`' => $expr->literal('group1'), + '`uid_owner`' => $expr->literal('owner'), + '`permissions`' => $expr->literal('0'), + '`stime`' => $expr->literal('676584'), + ] + ], + 'group2' => + [ + [ + '`item_type`' => $expr->literal('test'), + '`item_source`' => $expr->literal('42'), + '`item_target`' => $expr->literal('42'), + '`share_type`' => $expr->literal('2'), + '`share_with`' => $expr->literal('group2'), + '`uid_owner`' => $expr->literal('owner'), + '`permissions`' => $expr->literal('0'), + '`stime`' => $expr->literal('676584'), + ] + ] + ] + ] + ); + + // add unique targets for group1 to database + \OC\Share\Hooks::post_addToGroup(['gid' => 'group1']); + + + $query->select('`share_with`')->from('`*PREFIX*share`'); + $result = $query->execute()->fetchAll(); + $this->assertSame(2, count($result)); + foreach ($result as $r) { + $this->assertSame('group1', $r['share_with']); + } + } + +} |