OCS Share API link shares now always have an url
To make sure clients have the correct and latest link add an url field to all OCS Share API return statements on public link shares. * Added unit tests
This commit is contained in:
parent
b82d902e18
commit
41a8f45b93
2 changed files with 55 additions and 0 deletions
|
@ -70,6 +70,10 @@ class Local {
|
|||
}
|
||||
$share['icon'] = substr(\OC_Helper::mimetypeIcon($share['mimetype']), 0, -3) . 'svg';
|
||||
}
|
||||
|
||||
if (!is_null($share['token'])) {
|
||||
$share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
|
||||
}
|
||||
}
|
||||
return new \OC_OCS_Result($shares);
|
||||
}
|
||||
|
@ -142,6 +146,12 @@ class Local {
|
|||
if ($shares === null || empty($shares)) {
|
||||
return new \OC_OCS_Result(null, 404, 'share doesn\'t exist');
|
||||
} else {
|
||||
foreach ($shares as &$share) {
|
||||
if (!is_null($share['token'])) {
|
||||
$share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
|
||||
}
|
||||
}
|
||||
|
||||
return new \OC_OCS_Result($shares);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -307,6 +307,51 @@ class Test_Files_Sharing_Api extends TestCase {
|
|||
\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
|
||||
}
|
||||
|
||||
/**
|
||||
* @medium
|
||||
* @depends testCreateShare
|
||||
*/
|
||||
function testPublicLinkUrl() {
|
||||
// simulate a post request
|
||||
$_POST['path'] = $this->folder;
|
||||
$_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
|
||||
|
||||
$result = \OCA\Files_Sharing\API\Local::createShare([]);
|
||||
$this->assertTrue($result->succeeded());
|
||||
$data = $result->getData();
|
||||
|
||||
// check if we have a token
|
||||
$this->assertTrue(is_string($data['token']));
|
||||
$id = $data['id'];
|
||||
|
||||
// check for correct link
|
||||
$url = \OC::$server->getURLGenerator()->getAbsoluteURL('/index.php/s/' . $data['token']);
|
||||
$this->assertEquals($url, $data['url']);
|
||||
|
||||
// check for link in getall shares
|
||||
$result = \OCA\Files_Sharing\API\Local::getAllShares([]);
|
||||
$this->assertTrue($result->succeeded());
|
||||
$data = $result->getData();
|
||||
$this->assertEquals($url, current($data)['url']);
|
||||
|
||||
// check for path
|
||||
$_GET['path'] = $this->folder;
|
||||
$result = \OCA\Files_Sharing\API\Local::getAllShares([]);
|
||||
$this->assertTrue($result->succeeded());
|
||||
$data = $result->getData();
|
||||
$this->assertEquals($url, current($data)['url']);
|
||||
|
||||
// check in share id
|
||||
$result = \OCA\Files_Sharing\API\Local::getShare(['id' => $id]);
|
||||
$this->assertTrue($result->succeeded());
|
||||
$data = $result->getData();
|
||||
$this->assertEquals($url, current($data)['url']);
|
||||
|
||||
//Clean up share
|
||||
$fileinfo = $this->view->getFileInfo($this->folder);
|
||||
\OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @medium
|
||||
* @depends testCreateShare
|
||||
|
|
Loading…
Reference in a new issue