diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-01-20 13:09:39 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-01-22 10:12:47 +0100 |
commit | 9f137ac25991da89425f6140dc5e078bd0f7d21d (patch) | |
tree | 386c439286ed0a6b78b8e53e58e1a57f52b710e0 /tests/lib/share | |
parent | 4894a2c458f49b2c6b49b18cc0055ae087bff1b2 (diff) | |
download | nextcloud-server-9f137ac25991da89425f6140dc5e078bd0f7d21d.tar.gz nextcloud-server-9f137ac25991da89425f6140dc5e078bd0f7d21d.zip |
Fix reshare permission change to not impair other deletion code
A recent change that prevents reshare permission changes to delete group
share children had the side-effect of also preventing group share
children deletion when it needed to be done.
This fix adds an extra flag to isolate the "reshare permission change"
deletion case and keep the other ones as they were before, not only to
fix the regression but also fix other potential regressions in code that
uses this method.
Also updated the comment because now Helper::delete() is no longer
limited to reshares but also applies to group share children.
Diffstat (limited to 'tests/lib/share')
-rw-r--r-- | tests/lib/share/share.php | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php index b1261b0afbd..4b42036fc22 100644 --- a/tests/lib/share/share.php +++ b/tests/lib/share/share.php @@ -44,11 +44,13 @@ class Test_Share extends \Test\TestCase { $this->user2 = $this->getUniqueID('user2_'); $this->user3 = $this->getUniqueID('user3_'); $this->user4 = $this->getUniqueID('user4_'); + $this->user5 = $this->getUniqueID('user5_'); $this->groupAndUser = $this->getUniqueID('groupAndUser_'); OC_User::createUser($this->user1, 'pass'); OC_User::createUser($this->user2, 'pass'); OC_User::createUser($this->user3, 'pass'); OC_User::createUser($this->user4, 'pass'); + OC_User::createUser($this->user5, 'pass'); OC_User::createUser($this->groupAndUser, 'pass'); OC_User::setUserId($this->user1); OC_Group::clearBackends(); @@ -610,6 +612,51 @@ class Test_Share extends \Test\TestCase { $this->assertEquals(array(), OCP\Share::getItemsShared('test')); } + /** + * Test that unsharing from group will also delete all + * child entries + */ + public function testShareWithGroupThenUnshare() { + OC_User::setUserId($this->user5); + OCP\Share::shareItem( + 'test', + 'test.txt', + OCP\Share::SHARE_TYPE_GROUP, + $this->group1, + \OCP\Constants::PERMISSION_ALL + ); + + $targetUsers = array($this->user1, $this->user2, $this->user3); + + foreach($targetUsers as $targetUser) { + OC_User::setUserId($targetUser); + $items = OCP\Share::getItemsSharedWithUser( + 'test', + $targetUser, + Test_Share_Backend::FORMAT_TARGET + ); + $this->assertEquals(1, count($items)); + } + + OC_User::setUserId($this->user5); + OCP\Share::unshare( + 'test', + 'test.txt', + OCP\Share::SHARE_TYPE_GROUP, + $this->group1 + ); + + // verify that all were deleted + foreach($targetUsers as $targetUser) { + OC_User::setUserId($targetUser); + $items = OCP\Share::getItemsSharedWithUser( + 'test', + $targetUser, + Test_Share_Backend::FORMAT_TARGET + ); + $this->assertEquals(0, count($items)); + } + } public function testShareWithGroupAndUserBothHaveTheSameId() { |