fix path in sharing results if it is a file in the Shared folder
This commit is contained in:
parent
9b4af31bac
commit
e3f676e009
|
@ -33,13 +33,16 @@ class Test_Files_Sharing_Api extends Test_Files_Sharing_Base {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
$this->folder = '/folder_share_api_test';
|
$this->folder = '/folder_share_api_test';
|
||||||
|
$this->subfolder = '/subfolder_share_api_test';
|
||||||
|
|
||||||
$this->filename = 'share-api-test.txt';
|
$this->filename = 'share-api-test.txt';
|
||||||
|
|
||||||
// save file with content
|
// save file with content
|
||||||
$this->view->file_put_contents($this->filename, $this->data);
|
$this->view->file_put_contents($this->filename, $this->data);
|
||||||
$this->view->mkdir($this->folder);
|
$this->view->mkdir($this->folder);
|
||||||
|
$this->view->mkdir($this->folder . '/' . $this->subfolder);
|
||||||
$this->view->file_put_contents($this->folder.'/'.$this->filename, $this->data);
|
$this->view->file_put_contents($this->folder.'/'.$this->filename, $this->data);
|
||||||
|
$this->view->file_put_contents($this->folder.'/' . $this->subfolder . '/' .$this->filename, $this->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
function tearDown() {
|
function tearDown() {
|
||||||
|
@ -286,6 +289,71 @@ class Test_Files_Sharing_Api extends Test_Files_Sharing_Base {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief share a folder, than reshare a file within the shared folder and check if we construct the correct path
|
||||||
|
* @medium
|
||||||
|
*/
|
||||||
|
function testGetShareFromFolderReshares() {
|
||||||
|
|
||||||
|
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||||
|
|
||||||
|
$fileInfo1 = $this->view->getFileInfo($this->folder);
|
||||||
|
$fileInfo2 = $this->view->getFileInfo($this->folder.'/'.$this->filename);
|
||||||
|
$fileInfo3 = $this->view->getFileInfo($this->folder.'/' . $this->subfolder . '/' .$this->filename);
|
||||||
|
|
||||||
|
// share root folder to user2
|
||||||
|
$result = \OCP\Share::shareItem('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
|
||||||
|
\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31);
|
||||||
|
|
||||||
|
// share was successful?
|
||||||
|
$this->assertTrue($result);
|
||||||
|
|
||||||
|
// login as user2
|
||||||
|
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||||
|
|
||||||
|
// share file in root folder
|
||||||
|
$result = \OCP\Share::shareItem('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
|
||||||
|
// share was successful?
|
||||||
|
$this->assertTrue(is_string($result));
|
||||||
|
|
||||||
|
// share file in subfolder
|
||||||
|
$result = \OCP\Share::shareItem('file', $fileInfo3['fileid'], \OCP\Share::SHARE_TYPE_LINK, null, 1);
|
||||||
|
// share was successful?
|
||||||
|
$this->assertTrue(is_string($result));
|
||||||
|
|
||||||
|
$testValues=array(
|
||||||
|
array('query' => 'Shared/' . $this->folder,
|
||||||
|
'expectedResult' => '/Shared' . $this->folder . '/' . $this->filename),
|
||||||
|
array('query' => 'Shared/' . $this->folder . $this->subfolder,
|
||||||
|
'expectedResult' => '/Shared' . $this->folder . $this->subfolder . '/' . $this->filename),
|
||||||
|
);
|
||||||
|
foreach ($testValues as $value) {
|
||||||
|
|
||||||
|
$_GET['path'] = $value['query'];
|
||||||
|
$_GET['subfiles'] = 'true';
|
||||||
|
|
||||||
|
$result = Share\Api::getAllShares(array());
|
||||||
|
|
||||||
|
$this->assertTrue($result->succeeded());
|
||||||
|
|
||||||
|
// test should return one share within $this->folder
|
||||||
|
$data = $result->getData();
|
||||||
|
|
||||||
|
$this->assertEquals($value['expectedResult'], $data[0]['path']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// cleanup
|
||||||
|
|
||||||
|
\OCP\Share::unshare('file', $fileInfo2['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
|
||||||
|
\OCP\Share::unshare('file', $fileInfo3['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
|
||||||
|
|
||||||
|
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||||
|
|
||||||
|
\OCP\Share::unshare('folder', $fileInfo1['fileid'], \OCP\Share::SHARE_TYPE_USER,
|
||||||
|
\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @medium
|
* @medium
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -43,6 +43,7 @@ abstract class Test_Files_Sharing_Base extends \PHPUnit_Framework_TestCase {
|
||||||
*/
|
*/
|
||||||
public $view;
|
public $view;
|
||||||
public $folder;
|
public $folder;
|
||||||
|
public $subfolder;
|
||||||
|
|
||||||
public static function setUpBeforeClass() {
|
public static function setUpBeforeClass() {
|
||||||
// reset backend
|
// reset backend
|
||||||
|
|
|
@ -1250,7 +1250,21 @@ class Share {
|
||||||
// Remove root from file source paths if retrieving own shared items
|
// Remove root from file source paths if retrieving own shared items
|
||||||
if (isset($uidOwner) && isset($row['path'])) {
|
if (isset($uidOwner) && isset($row['path'])) {
|
||||||
if (isset($row['parent'])) {
|
if (isset($row['parent'])) {
|
||||||
$row['path'] = '/Shared/'.basename($row['path']);
|
$query = \OC_DB::prepare('SELECT `file_target` FROM `*PREFIX*share` WHERE `id` = ?');
|
||||||
|
$parentResult = $query->execute(array($row['parent']));
|
||||||
|
if (\OC_DB::isError($result)) {
|
||||||
|
\OC_Log::write('OCP\Share', 'Can\'t select parent: ' .
|
||||||
|
\OC_DB::getErrorMessage($result) . ', select=' . $select . ' where=' . $where,
|
||||||
|
\OC_Log::ERROR);
|
||||||
|
} else {
|
||||||
|
$parentRow = $parentResult->fetchRow();
|
||||||
|
$splitPath = explode('/', $row['path']);
|
||||||
|
$tmpPath = '/Shared' . $parentRow['file_target'];
|
||||||
|
foreach (array_slice($splitPath, 2) as $pathPart) {
|
||||||
|
$tmpPath = $tmpPath . '/' . $pathPart;
|
||||||
|
}
|
||||||
|
$row['path'] = $tmpPath;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!isset($mounts[$row['storage']])) {
|
if (!isset($mounts[$row['storage']])) {
|
||||||
$mountPoints = \OC\Files\Filesystem::getMountByNumericId($row['storage']);
|
$mountPoints = \OC\Files\Filesystem::getMountByNumericId($row['storage']);
|
||||||
|
|
Loading…
Reference in New Issue