summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/tests
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2014-08-01 16:24:19 +0200
committerBjoern Schiessle <schiessle@owncloud.com>2014-09-22 17:54:47 +0200
commit9105e17307b3e6a80ac32f2b06df12df82ccedd9 (patch)
treeec17d847151d378e85456206bec42b8cdf014e7b /apps/files_sharing/tests
parent89c3b650e6c47899ceea105713b389fe8af78bfa (diff)
downloadnextcloud-server-9105e17307b3e6a80ac32f2b06df12df82ccedd9.tar.gz
nextcloud-server-9105e17307b3e6a80ac32f2b06df12df82ccedd9.zip
unit tests for grouping of shares pointing to the same source
Diffstat (limited to 'apps/files_sharing/tests')
-rw-r--r--apps/files_sharing/tests/base.php9
-rw-r--r--apps/files_sharing/tests/share.php100
2 files changed, 74 insertions, 35 deletions
diff --git a/apps/files_sharing/tests/base.php b/apps/files_sharing/tests/base.php
index 34ec4a36ede..60159d84e7e 100644
--- a/apps/files_sharing/tests/base.php
+++ b/apps/files_sharing/tests/base.php
@@ -35,6 +35,8 @@ abstract class Test_Files_Sharing_Base extends \PHPUnit_Framework_TestCase {
const TEST_FILES_SHARING_API_USER2 = "test-share-user2";
const TEST_FILES_SHARING_API_USER3 = "test-share-user3";
+ const TEST_FILES_SHARING_API_GROUP1 = "test-share-group1";
+
public $stateFilesEncryption;
public $filename;
public $data;
@@ -60,6 +62,10 @@ abstract class Test_Files_Sharing_Base extends \PHPUnit_Framework_TestCase {
self::loginHelper(self::TEST_FILES_SHARING_API_USER2, true);
self::loginHelper(self::TEST_FILES_SHARING_API_USER3, true);
+ // create group
+ \OC_Group::createGroup(self::TEST_FILES_SHARING_API_GROUP1);
+ \OC_Group::addToGroup(self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_GROUP1);
+
}
function setUp() {
@@ -94,6 +100,9 @@ abstract class Test_Files_Sharing_Base extends \PHPUnit_Framework_TestCase {
\OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER1);
\OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER2);
\OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER3);
+
+ // delete group
+ \OC_Group::deleteGroup(self::TEST_FILES_SHARING_API_GROUP1);
}
/**
diff --git a/apps/files_sharing/tests/share.php b/apps/files_sharing/tests/share.php
index 31246c5df44..c780a9e816a 100644
--- a/apps/files_sharing/tests/share.php
+++ b/apps/files_sharing/tests/share.php
@@ -57,6 +57,10 @@ class Test_Files_Sharing extends Test_Files_Sharing_Base {
self::$tempStorage = null;
+ // clear database table
+ $query = \OCP\DB::prepare('DELETE FROM `*PREFIX*share`');
+ $query->execute();
+
parent::tearDown();
}
@@ -70,8 +74,6 @@ class Test_Files_Sharing extends Test_Files_Sharing_Base {
$pathinfo = pathinfo($this->filename);
- $duplicate = '/' . $pathinfo['filename'] . ' (2).' . $pathinfo['extension'];
-
$result = \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
\Test_Files_Sharing::TEST_FILES_SHARING_API_USER2, 31);
@@ -84,46 +86,85 @@ class Test_Files_Sharing extends Test_Files_Sharing_Base {
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
$this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
- $this->assertTrue(\OC\Files\Filesystem::file_exists($duplicate));
self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
$this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
- $this->assertFalse(\OC\Files\Filesystem::file_exists($duplicate));
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
\OC\Files\Filesystem::unlink($this->filename);
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
+ // both group share and user share should be gone
$this->assertFalse(\OC\Files\Filesystem::file_exists($this->filename));
- $this->assertTrue(\OC\Files\Filesystem::file_exists($duplicate));
// for user3 nothing should change
self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
$this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
- $this->assertFalse(\OC\Files\Filesystem::file_exists($duplicate));
+ }
+
+ /**
+ * if a file was shared as group share and as individual share they should be grouped
+ */
+ function testGroupingOfShares() {
+
+ $fileinfo = $this->view->getFileInfo($this->filename);
+
+ $result = \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP,
+ \Test_Files_Sharing::TEST_FILES_SHARING_API_GROUP1, \OCP\PERMISSION_READ);
+
+ $this->assertTrue($result);
+
+ $result = \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
+ \Test_Files_Sharing::TEST_FILES_SHARING_API_USER2, \OCP\PERMISSION_UPDATE);
+
+ $this->assertTrue($result);
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
- \OC\Files\Filesystem::unlink($duplicate);
- self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
- $this->assertFalse(\OC\Files\Filesystem::file_exists($this->filename));
- $this->assertFalse(\OC\Files\Filesystem::file_exists($duplicate));
- // for user3 nothing should change
- self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
- $this->assertTrue(\OC\Files\Filesystem::file_exists($this->filename));
- $this->assertFalse(\OC\Files\Filesystem::file_exists($duplicate));
+ $result = \OCP\Share::getItemSharedWith('file', null);
+
+ $this->assertTrue(is_array($result));
+
+ // test should return exactly one shares created from testCreateShare()
+ $this->assertSame(1, count($result));
+
+ $share = reset($result);
+ $this->assertSame(\OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE, $share['permissions']);
+
+ \OC\Files\Filesystem::rename($this->filename, $this->filename . '-renamed');
+
+ $result = \OCP\Share::getItemSharedWith('file', null);
+
+ $this->assertTrue(is_array($result));
+
+ // test should return exactly one shares created from testCreateShare()
+ $this->assertSame(1, count($result));
+
+ $share = reset($result);
+ $this->assertSame(\OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE, $share['permissions']);
+ $this->assertSame($this->filename . '-renamed', $share['file_target']);
- //cleanup
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
- \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP,
- 'testGroup');
- \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- self::TEST_FILES_SHARING_API_USER2);
- \OC_Group::removeFromGroup(self::TEST_FILES_SHARING_API_USER2, 'testGroup');
- \OC_Group::removeFromGroup(self::TEST_FILES_SHARING_API_USER2, 'testGroup');
- \OC_Group::deleteGroup('testGroup');
+ // unshare user share
+ $result = \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
+ \Test_Files_Sharing::TEST_FILES_SHARING_API_USER2);
+ $this->assertTrue($result);
- }
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
+
+ $result = \OCP\Share::getItemSharedWith('file', null);
+
+ $this->assertTrue(is_array($result));
+
+ // test should return the remaining group share
+ $this->assertSame(1, count($result));
+
+ $share = reset($result);
+ // only the group share permissions should be available now
+ $this->assertSame(\OCP\PERMISSION_READ, $share['permissions']);
+ $this->assertSame($this->filename . '-renamed', $share['file_target']);
+
+ }
function testShareWithDifferentShareFolder() {
@@ -146,12 +187,6 @@ class Test_Files_Sharing extends Test_Files_Sharing_Base {
$this->assertTrue(\OC\Files\Filesystem::file_exists('/Shared/subfolder/' . $this->folder));
//cleanup
- self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
- \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- self::TEST_FILES_SHARING_API_USER2);
- \OCP\Share::unshare('folder', $folderinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- self::TEST_FILES_SHARING_API_USER2);
-
\OCP\Config::deleteSystemValue('share_folder');
}
@@ -173,18 +208,14 @@ class Test_Files_Sharing extends Test_Files_Sharing_Base {
$this->assertTrue(is_array($result));
// test should return exactly one shares created from testCreateShare()
- $this->assertTrue(count($result) === 1);
+ $this->assertSame(1, count($result), 'more then one share found');
$share = reset($result);
$this->assertSame($expectedPermissions, $share['permissions']);
-
- \OCP\Share::unshare('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
- \Test_Files_Sharing::TEST_FILES_SHARING_API_USER2);
}
function DataProviderTestFileSharePermissions() {
$permission1 = \OCP\PERMISSION_ALL;
- $permission2 = \OCP\PERMISSION_DELETE;
$permission3 = \OCP\PERMISSION_READ;
$permission4 = \OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE;
$permission5 = \OCP\PERMISSION_READ | \OCP\PERMISSION_DELETE;
@@ -192,7 +223,6 @@ class Test_Files_Sharing extends Test_Files_Sharing_Base {
return array(
array($permission1, \OCP\PERMISSION_ALL & ~\OCP\PERMISSION_DELETE),
- array($permission2, 0),
array($permission3, $permission3),
array($permission4, $permission4),
array($permission5, $permission3),