summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2015-05-22 14:42:57 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2015-05-22 14:42:57 +0200
commit41a8f45b93a55fe3e72f0700c15ac04db498d839 (patch)
tree584797106a1721153fdb4083630219aa33fc7ece /apps/files_sharing
parentb82d902e184960877110bc45124ed2399f779cac (diff)
downloadnextcloud-server-41a8f45b93a55fe3e72f0700c15ac04db498d839.tar.gz
nextcloud-server-41a8f45b93a55fe3e72f0700c15ac04db498d839.zip
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
Diffstat (limited to 'apps/files_sharing')
-rw-r--r--apps/files_sharing/api/local.php10
-rw-r--r--apps/files_sharing/tests/api.php45
2 files changed, 55 insertions, 0 deletions
diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php
index 03812800c17..706cac24ff9 100644
--- a/apps/files_sharing/api/local.php
+++ b/apps/files_sharing/api/local.php
@@ -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);
}
}
diff --git a/apps/files_sharing/tests/api.php b/apps/files_sharing/tests/api.php
index 44c6b1dc4b9..f203a4e3f81 100644
--- a/apps/files_sharing/tests/api.php
+++ b/apps/files_sharing/tests/api.php
@@ -311,6 +311,51 @@ class Test_Files_Sharing_Api extends TestCase {
* @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
+ */
function testGetShareFromSource() {
$fileInfo = $this->view->getFileInfo($this->filename);